AzureCLIを利用して仮想マシンを作成してみました。
仮想マシン一式を構築する機会が多いので簡単にAzureCLIのコマンドとしてまとめてみました。
今回のAzureCLIで作成可能な構成
今回のコマンドでは仮想マシン含む以下のリソースをAzureCLIで一括作成します。
- リソースグループ
- 仮想ネットワーク(サブネット含む)
- ネットワークセキュリティグループ(NSG)
- パブリックIP
- ネットワークインターフェース
- 仮想マシン
今回のAzureCLIコマンドで作成する構成としては以下の通りです。
AzureCLIコマンド(仮想マシン一式作成)
以下のコマンドで仮想マシン一式を作成可能です。
リソースグループやNSGなどのリソースもまとめて作成します。
今回は、OSとして [Ubuntu 18.04 LTS] を利用していますが、指定する値を変えればWindowsOSも利用可能です。
下部「[参考] AzureCLIでVMイメージ情報を取得」に記載するコマンドで利用可能なOSイメージも取得できます。
サイズについても下部「[参考] AzureCLIでVMサイズ情報を取得」にて記載していますので参考にしてください。
NSGで許可するIPと仮想マシンログイン時のユーザ名は任意の値に置き換えてください。
#任意のパラメータを定義
$rg_name = "RG-test-proxy"
$location = "japaneast"
$vnet_name = "Vnet-test-proxy"
$vnet_address = "10.8.0.0/24"
$subnet_name = "Subnet-test-proxy"
$subnet_address = "10.8.0.0/26"
$nsg_name = "NSG-test-proxy"
$nsgrule_name = "SSH"
$nsgrule_sourceip = "xxx.xxx.xxx.xxx/32"
$nsgrule_port = 22
$nsgrule_priority = 200
$pip_name = "PIP-VM-test-proxy"
$nic_name = "NIC-VM-test-proxy"
$vm_name = "VM-test-proxy"
$vm_image = "UbuntuLTS" #Windowsは「Win2022Datacenter」
$vm_size = "Standard_B2ms"
$vm_authtype = "password"
$vm_adminname = "xxxxxxx"
#リソースグループの作成
az group create `
-l $location `
-g $rg_name
#仮想ネットワークの作成
az network vnet create `
-n $vnet_name `
-g $rg_name `
-l $location `
--address-prefix $vnet_address `
--subnet-name $subnet_name `
--subnet-prefix $subnet_address
#NSGの作成
az network nsg create `
-n $nsg_name `
-g $rg_name
#NSGのルール追加
az network nsg rule create `
-g $rg_name `
--nsg-name $nsg_name `
-n $nsgrule_name `
--source-address-prefixes $nsgrule_sourceip `
--destination-port-range $nsgrule_port `
--priority $nsgrule_priority
#NSGをサブネットに適用
az network vnet subnet update `
-g $rg_name `
-n $subnet_name `
--vnet-name $vnet_name `
--network-security-group $nsg_name
#パブリックIPの作成
az network public-ip create `
-n $pip_name `
-g $rg_name
#ネットワークインターフェースの作成
az network nic create `
-n $nic_name `
-g $rg_name `
--vnet-name $vnet_name `
--subnet $subnet_name `
--public-ip-address $pip_name
#仮想マシンの作成
az vm create `
-n $vm_name `
-g $rg_name `
--image $vm_image `
--size $vm_size `
--nics $nic_name `
--authentication-type $vm_authtype `
--admin-username $vm_adminname
上記ではインターフェースとしてPowershellを利用しているので、改行する際には ` を利用していますが、コマンドプロンプトを利用する場合には、^ を利用する必要がありますのでその点は注意してください。
ログイン確認
今回作成した仮想マシンはUbuntuなので、以下のコマンドでssh接続可能かを試します。
#パブリックIPリソースからIP情報を取得
$pip = az network public-ip show `
-n $pip_name `
-g $rg_name `
| ConvertFrom-Json
#ssh接続
ssh $pip.ipAddress
・実行結果
PS C:\> ssh $pip.ipAddress
~~中略~~
xxxxxx@VM-test-proxy:~$
ssh接続可能であることが確認できます。
作成リソースの一括削除
以下のコマンドでリソースグループ自体を削除して、今回作成したリソース全てを一括削除することが可能です。
az group delete `
-g $rg_name
[参考] AzureCLIで仮想マシンイメージ情報を取得
仮想マシンのイメージ情報を取得するAzureCLIコマンドです。
[–all] オプションを利用すると使用可能なすべてのイメージを一覧表示することが可能です。
az vm image list --all
ただし、この [–all] オプションだけを利用すると膨大な量のイメージを出力しようとするため、結果が出力されるまでにかなり時間がかかります。
なので [–all] オプションだけの利用は推奨しません。
なので、[–offer] オプションでオファー名(OSの種類など)や、[-sku] オプションでイメージSKU名(windowsだと2012、ubuntuだと18.04など)を指定して表示させるのが良いかと思います。
また、[–all] を利用していない場合にはオフラインで持っているイメージ一覧が表示されます。
・オフラインでキャッシュされたwindows2012のイメージを表示
az vm image list --offer windows --sku 2012
・コマンド実行結果
PS C:\> az vm image list --offer windows --sku 2012
You are viewing an offline list of images, use --all to retrieve an up-to-date list
[
{
"architecture": "x64",
"offer": "WindowsServer",
"publisher": "MicrosoftWindowsServer",
"sku": "2012-R2-Datacenter",
"urn": "MicrosoftWindowsServer:WindowsServer:2012-R2-Datacenter:latest",
"urnAlias": "Win2012R2Datacenter",
"version": "latest"
},
{
"architecture": "x64",
"offer": "WindowsServer",
"publisher": "MicrosoftWindowsServer",
"sku": "2012-Datacenter",
"urn": "MicrosoftWindowsServer:WindowsServer:2012-Datacenter:latest",
"urnAlias": "Win2012Datacenter",
"version": "latest"
}
]
PS C:\>
仮想マシンの作成などでイメージを指定する場合には「urn」もしくは「urnAlias」の値を利用することが可能です。
また、オファー名と [–all] オプションの組み合わせも可能です。
ただこの場合も表示までに少し時間がかかります。
・centosの利用可能なイメージをすべて表示
az vm image list -f centos --all
[参考] AzureCLIで仮想マシンサイズ情報を取得
以下のコマンドで仮想マシンサイズ情報を取得可能です。
[-l] は場所の指定で、必須のパラメータになります。
・東日本リージョンで利用可能な仮想マシンサイズを取得
az vm list-sizes -l japaneast
・実行結果
S C:\> az vm list-sizes -l japaneast
[
{
"maxDataDiskCount": 24,
"memoryInMb": 57344,
"name": "Standard_NV6",
"numberOfCores": 6,
"osDiskSizeInMb": 1047552,
"resourceDiskSizeInMb": 389120
},
~~中略~~
{
"maxDataDiskCount": 32,
"memoryInMb": 458752,
"name": "Standard_NC24s_v3",
"numberOfCores": 24,
"osDiskSizeInMb": 1047552,
"resourceDiskSizeInMb": 1376256
}
]
PS C:\>
これだとディスクサイズなどの細かい情報まで取得されるので見づらいです。
なので以下のように加工すると利用可能なサイズ情報だけを確認しやすくなります。
※CLIとしてPowershellを利用している場合に限ります。
・加工したコマンド(サイズ情報のみ取得)
$result = az vm list-sizes -l japaneast | ConvertFrom-Json
$result.name
・実行結果(加工したコマンド)
PS C:\> $result = az vm list-sizes -l japaneast | ConvertFrom-Json
PS C:\> $result.name
Standard_NV6
Standard_NV12
Standard_NV24
Standard_NV6_Promo
Standard_NV12_Promo
Standard_NV24_Promo
Standard_D2a_v4
Standard_D4a_v4
Standard_D8a_v4
~~中略~~
Standard_NV36ads_A10_v5
Standard_NV72ads_A10_v5
Standard_NC24ads_A100_v4
Standard_NC48ads_A100_v4
Standard_NC96ads_A100_v4
Standard_NC6s_v3
Standard_NC12s_v3
Standard_NC24rs_v3
Standard_NC24s_v3
PS C:\>
コメント