Azure PowerShellを使用した仮想マシンの作成方法

本記事では、Azure PowerShellを使用して、リソースグループ・仮想ネットワーク(以下Vnet)・仮想マシン(以下VM)を作成する手順をご紹介します。

Azure PowerShellとは

Azure PowerShellは、Azure上のリソースを操作するためのPowerShellモジュールです。

Azure PowerShellを利用することで、Azure Portalでの操作をスクリプト化し、リソースの自動作成や再利用を実現できます。

本記事の前提条件

  • Azure PowerShellのモジュールをインストール済み
  • 有効なサブスクリプションを持つAzureアカウントでログイン可能

リソースグループの作成方法

1.PowerShellを起動して、Azureへログインします。

Connect-AzAccount

2.リソースグループ名、地域を指定し、作成をします。
例として、今回はリソースグループ名「Test_group」、地域名を「Switzerland North」とします。

New-AzResourceGroup -Name "Test_group" -Location "Switzerland North"

3.以下のコマンドを実行して、リソースグループが作成できたことを確認します。

Get-AzResourceGroup

4.Azure Portal上の画面でも、作成したリソースグループが表示されることが確認できました。

仮想ネットワークの作成方法

Vnetの作成方法

1.Vnet名、リソースグループ名、地域、IPアドレスを指定して、Vnetを作成します。

今回は例として、Vnet名「vnet01」地域「switzerlandnorth」 IPアドレス「192.168.0.0/24」 として設定します。

$vnet = @{
   Name              = 'vnet01'
   ResourceGroupName = 'Test_group'
   Location          = 'switzerlandnorth'
   AddressPrefix     = '192.168.0.0/24'
}
$virtualNetwork = New-AzVirtualNetwork @vnet

2.Azure Portalの画面から、作成したVnetが表示されることが確認できます。

サブネットの作成方法

1.先ほど作成したVnetから、IPアドレスを指定してサブネットを作成します。

今回は例として、サブネット名を「Subnet01」として192.168.0.0/25を割り当てます。

$subnet = @{
Name  = 'Subnet01'    
VirtualNetwork = $virtualNetwork  
AddressPrefix  = '192.168.0.0/25'
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
$virtualNetwork | Set-AzVirtualNetwork

2.Azure Portalから サブネットが表示され、追加されていることが確認できます。

VMの作成方法

VMの作成を以下の手順で進めます。

  1. 資格情報の登録
  2. NICの作成
  3. VM作成のための構成設定
  4. VMの作成

資格情報の登録手順

1.VMにログインする際に必要となる、任意のユーザー名とパスワードの資格情報オブジェクトを作成します。

$cred = Get-Credential

2.資格情報のポップが表示されるので、任意のユーザー名とパスワードを登録します。

NICの作成方法

1.NICを作成するにあたり、Vnet、リソースグループ名、地域を変数に格納します。

$vnet = Get-AzVirtualNetwork -Name 'vnet01' -ResourceGroupName 'Test_group'
$rgName = "Test_group"
$location = "switzerlandnorth"

2.任意のNIC名を指定し、先ほど作成した変数を利用してNICを作成します。

今回は例としてNIC名を「nicVM」と指定します。

$nic = @{    
Name              = "nicVM"  
ResourceGroupName = $rgName   
Location          = $location   
Subnet            = $vnet.Subnets[0]
}
$nicVM = New-AzNetworkInterface @nic

VMの作成手順

1.前の手順で作成したNICを変数に格納をします。

$nicVM = New-AzNetworkInterface @nic
$nicName = "nicVM"
$nic = Get-AzNetworkInterface -Name $nicName -ResourceGroupName

2.作成するVMに対して希望の要件を指定します。今回は以下の要件でVMを作成します。

  • VMのサイズ:Standartd_B2s
  • OSの種類:Windows
  • イメージ:WindowsServer 2022 Datacenter
$rgName$vmName = "Websv"$vmConfig = New-AzVMConfig -VMName $vmName -VMSize "Standard_B2s" |   
Set-AzVMOperatingSystem -Windows -ComputerName $vmName -Credential $cred |
Set-AzVMSourceImage -PublisherName "MicrosoftWindowsServer" -Offer "WindowsServer" -Skus "2022-Datacenter" -Version "latest" |
Add-AzVMNetworkInterface -Id $nic.Id

3.以下のコマンドを実行して、VMの作成を行います。

New-AzVM -ResourceGroupName $rgName -Location $location -VM $vmConfig

4.実行すると警告が表示され、作成が開始されます。

5.VMの作成後、実行結果が表示され作成できたことが確認できました。

6.Azure Portalの画面にも作成したVMがリソースグループに表示されています。

7.作成したVMに接続すると、デスクトップ画面が表示されて接続できることが確認できました。

Azure PowerShellを使用したVMの作成方法は以上となります。

発生したエラーと対処方法

事象:VM作成時に資格情報が登録できない

VM作成時のGet-Credentialを実行した際に以下のエラーが発生する場合がありました。

最初に作成したVMでは実行できましたが、同じ仮想ネットワークに2台目のVMを追加で作成しようとするとこのようなエラーが発生しました。

$cred = Get-Credential 
コマンド パイプライン位置 1 のコマンドレット Get-Credential 次のパラメーターに値を指定してください: Credential Get-Credential : コマンドを処理できません。次の 1 つ以上の必須パラメーターが指定されていません: Credential。 発生場所 行:1 文字:10 + $cred = Get-Credential + ~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Get-Credential]、ParameterBindingException + FullyQualifiedErrorId : MissingMandatoryParameter,Microsoft.PowerShell.Commands.GetCredentialCommand

対処法: スクリプト内に直接ユーザー名とパスワードを指定

以下のように、ユーザー名とパスワードを直接指定する方法で、資格情報の登録を行いました。

Connect-AzAccount$cred = New-Object System.Management.Automation.PSCredential ("<ユーザー名>", (ConvertTo-SecureString "<パスワード>" -AsPlainText -Force))

資格情報を登録することができました。

今回は学習目的の検証であったため、例外的にコード内へパスワードを直接記載して回避してますが、通常の運用では推奨されません。

実際の運用では、資格情報の安全な管理方法をご利用いただくことをお勧めします。

終わりに

本記事では、Azure PowerShellを使用して、リソースグループ、Vnet、VMを作成していく手順をご紹介しました。

私自身、Azure PortalでのVM作成に慣れていたため、当初はPowerShellの操作やスクリプトの作成に慣れるのに時間がかかりましたが、実際に操作をしみるとAzure Portalでの作成よりも設定ミスが少なく、同様の構成でVMを作成する際に役に立つと実感しました。

今回ご紹介したスクリプトを応用すると、複数台のVMの作成やIISインストールなどの自動化にも発展させることができます。Azure PowerShellでVMを作成する際に参考になれば幸いです。

執筆担当者プロフィール
永井 美菜

永井 美菜(日本ビジネスシステムズ株式会社)

西日本事業本部所属 クラウドインテグレーション部に所属。 Microsoft 365 製品を中心に扱ってます。趣味は美味しい物を食べることです。好きな食べ物は砂肝です。

担当記事一覧