Power Shellを利用してAzure VM(CentOS 7)を作成してみた

 

今回は、マイクロソフト様のサイトに”Power Shellを利用して完全なVirtual Machineを作成する”という記事があったので試してみました。

https://docs.microsoft.com/ja-jp/azure/virtual-machines/scripts/virtual-machines-linux-powershell-sample-create-vm

今回実施した作成手順は大きく分けるとこんな感じになりました。

    • Cent OSのイメージの検索(事前準備)
    • Subnet IDを調べる(事前準備)
    • Power Shellを利用してAzure VMの作成

今回はCentOS 7.5で作成しています。

1 .Azure VM作成時の前提条件

今回はサンプルという事で以下の通りとしてます。

    • リソースグループや仮想ネットワーク、Subnetは作成済みのものを指定します。
    • ログインはID、PWDで実施する。
    • Public IPは指定しない。ローカルIPアドレスは固定とします。
    • NSGは指定しない。(Subnet単位でNSGの設定を行っている為)
    • 可用性セットは作成済みであるものを利用します。

.Azure上のCent OS イメージを検索する。

Azure上で利用可能なCentOSのイメージを検索します。なおCent OSのパブリッシャー名は、”OpenLogic”になります。

#仮想マシンを作成するリージョン名
$locName=“japaneast”
$pubName=“OpenLogic”
$offerName=“CentOS”
#パブリッシャー名を検索する場合は下記を利用します。
#Get-AzVMImagePublisher -Location $locName
#offerName確認時は、以下のコマンドを実行します。
#Get-AzVMImageOffer -Location $locName -Publisher $pubName
Get-AzVMImageSku -Location $locName -Publisher $pubName -Offer $offerName
#2019年10月時点では以下の通りの値が得られます
Skus Offer PublisherName Location Id
—- —– ————- ——– —
6.10 CentOS OpenLogic japaneast /Subscriptions/(省略)/japaneast/Publishers/OpenLogic/ArtifactTypes/VMImage/Offers/CentOS/Skus/6.10

~(省略)~

7.5 CentOS OpenLogic japaneast /Subscriptions/(省略)/japaneast/Publishers/OpenLogic/ArtifactTypes/VMImage/Offers/CentOS/Skus/7.5

7.6 CentOS OpenLogic japaneast /Subscriptions/(省略)/japaneast/Publishers/OpenLogic/ArtifactTypes/VMImage/Offers/CentOS/Skus/7.6

7.7 CentOS OpenLogic japaneast /Subscriptions/(省略)/japaneast/Publishers/OpenLogic/ArtifactTypes/VMImage/Offers/CentOS/Skus/7.7

3 .利用するSubnetのIDを調べる

利用するSubnetのIDを検索します。Azure VMと同時に作成するネットワークインターフェースの設定に必要になります。

#仮想マシンを作成するリージョン名
$rgNameVnet =“仮想ネットワークがあるRG名”
$VnetName =“仮想ネットワーク名”
$vnet = Get-AzVirtualNetwork -ResourceGroupName $rgNameVnet -Name $VnetName
$subnet0 = $vnet.Subnets[0].Id
$subnet0
#以下のような値が得られます。0から数字を変えて、自分が利用するSubnet名が該当するのを検索します。
/subscriptions/XXX/resourceGroups/RG名/providers/Microsoft.Network/virtualNetworks/仮想ネットワーク名/subnets/Subnet名

 4.Power Shellを使ってAzure VMを新規作成する。

Power Shellを使ってAzure VMを作成してみます。Power Shell内の設定値は環境に合わせて修正して下さい。

#仮想マシンの変数情報
$rgName =“VMを構築するRG名”
$vmName =“構築するVM名”
$vmSize =“Standard_B1s” 
$location =“japaneast” 
$OSUser = “OSのユーザー名”
$OSPword = “OSのパスワード”

#NICの変数情報
$NicName =“ネットワークカード名”
$rgNameVnet =“仮想ネットワークがあるRG名”
$VnetName =“仮想ネットワーク名”
$PrivateIP = “仮想マシンに付与するローカルのIPアドレス”

#可用性セット名
$AvailabilitySetName =“可用性セット名”

#DISKの変数情報
#$DISKTypeは、利用するOSのディスクタイプを指定します。
$DISKName =“ディスク名”
$DISKType =“Standard_LRS”

#パスワードの作成
$Pword = ConvertTo-SecureString -String $OSPword -AsPlainText -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $OSUser, $Pword

#NICの作成を実施します。
#$vnet.Subnets[X]には、先ほど調べたSubnetIDを設定します。(0-9の半角数字)
$vnet = Get-AzVirtualNetwork -ResourceGroupName $rgNameVnet -Name $VnetName
$subnet = $vnet.Subnets[X].Id
$nic = New-AzNetworkInterface -Name $NicName -ResourceGroupName $rgName `
-Location $location -SubnetId $vnet.Subnets[X].Id `
-PrivateIpAddress $PrivateIP

#仮想マシンの作成のためのConfigを設定します。
#Set-AzVMOperatingSystem 行には、先ほど調べたOSのイメージの値を設定します。今回は7.5を指定しています。
$AvailabilitySet = Get-AzAvailabilitySet -ResourceGroupName $rgName -Name $AvailabilitySetName
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize $vmSize -AvailabilitySetID $AvailabilitySet[0].Id ` | `
Set-AzVMOperatingSystem -Linux -ComputerName $vmName -Credential $cred | `
Set-AzVMOSDisk -name $DISKName -StorageAccountType $DISKType -CreateOption FromImage| `
Set-AzVMSourceImage -PublisherName OpenLogic -Offer CentOS -Skus 7.5 -Version latest | `
Add-AzVMNetworkInterface -Id $nic.Id

#仮想マシンの作成を実行します。
New-AzVM -ResourceGroupName $rgName -Location $location -VM $vmConfig

5 .Power ShellでAzure VMを作る事の意外なメリット

Power Shellを使って作るという事で、GUIを利用せずに作成できるという事以外にも、ディスク名や、ネットワークインタフェース名を自分で命名する事ができる事が出来ました。Azure Portalを使った場合にはできない事が出来るのも1つのメリットなのかも知れないと思いました。