【PowerShell】New-AzureVMでAzure仮想マシンの作成サンプル

仮想マシンの作成には色々なパターンがあると思いますが、一つの例としてサンプルスクリプトを載せておきます。

サンプルで作る仮想マシン

今回作るマシンには以下のような設定を含んでいます。

  • PowerShellのリモート実行用のエンドポイントを解放
  • タイムゾーンは東京
  • VMエージェントをインストール
  • 空のデータファイルを複数アタッチ
  • 設定済みの仮想ネットワークを利用
  • マシンのサイズはA5インスタンス
  • 証明書交換ができてない状態でも実行できるようにAdd-AzureAccountコマンドを利用

 
 
  
 

スクリプト

スクリプトはこちらです。
 

#サブスクリプション
$subscription = "<サブスクリプション名>"

#VM設定
$ServiceName = "<クラウドサービス名>"
$VMName = "<仮想マシン名>" 
$ImageName = "<イメージ名>"
$InstanceSize = "A5"
$TimeZone = "Tokyo Standard Time" 

#VM設定(User) 
$AdminUser = "<管理者ユーザ>" 
$AdminPassword = "<管理者ユーザのパスワード>"

#VM設定(Network) 
$AzureVNSubnet = "<仮想ネットワークのサブネット名>"

#VM設定(OS Disk) 
$StorageAccountName = "<ストレージアカウント名>"
$OSDiskName = "{0}-OS" -F $VMName
$OSStoragePath = "http://{0}.blob.core.windows.net/vhds/{1}.VHD" -F $StorageAccountName , $OSDiskName
$OSDiskCache = "ReadWrite"

#VM設定(Data Disk) 
$DataDiskNum = 4
$DataDiskSizeGB = 500
$DataDiskCache = "None"


#モジュールインポート・サブスクリプション選択
Import-Module azure
Add-AzureAccount
Select-AzureSubscription $subscription


#VM設定オブジェクト生成
$VMConfig = New-AzureVMConfig -Name $VMName -InstanceSize $InstanceSize -ImageName $ImageName -MediaLocation $OSStoragePath -HostCaching $OSDiskCache |
            Set-AzureSubnet -SubnetNames $AzureVNSubnet |
            Set-AzureVMBGInfoExtension |
            Add-AzureProvisioningConfig -Windows -AdminUsername $AdminUser -Password $AdminPassword -TimeZone $TimeZone -EnableWinRMHttp

#設定した本数分の空のDATAディスクをアタッチ
for ($i = 1; $i -le $DataDiskNum; $i++)
{ 
     $DataDiskName = "{0}-DATA{1}" -F $VMName,$i
     $OSStoragePath = "http://{0}.blob.core.windows.net/vhds/{1}.VHD" -F $StorageAccountName , $DataDiskName
     $VMConfig = $VMConfig | Add-AzureDataDisk -CreateNew -MediaLocation $OSStoragePath -DiskSizeInGB $DataDiskSizeGB -DiskLabel $DATADiskName -LUN $i -HostCaching $DataDiskCache
}


#VM作成
New-AzureVM -ServiceName $ServiceName -VMs $VMConfig -Verbose -WaitForBoot

スクリプトさえできてしまえば、仮想マシンをコマンド一本で作成できてしまいます。
PowerShellのリモート実行やDSCを組み合わせれば、プロビジョニングがもっと簡単になります。

Azure上の仮想マシンにPowerShellでリモートコマンドを実行する - YOMON8.NET