Azure PowerShellを利用して仮想マシン(CentOS 7)を作成してみた
Azure,PowerShell/Azure CLI,RockyLinux/CentOS,Virtual Machine
今回は、マイクロソフト様のサイトに”PowerShellを利用して完全なVirtual Machineを作成する”という記事があったので試してみました。
PowerShell を使用して、完全に構成された仮想マシンを作成する
今回実施した作成手順は大きく分けるとこんな感じになりました。
-
- Cent OSのイメージの検索(事前準備)
- Subnet IDを調べる(事前準備)
- PowerShellを利用してAzure VMの作成
今回はCentOS 7.5で作成しています。
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
|
利用する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名 |
PowerShellを使ってAzure VMを新規作成する。
PowerShellを使ってAzure VMを作成してみます。PowerShell内の設定値は環境に合わせて修正して下さい。
#仮想マシンの変数情報
$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
|
PowerShellでAzure VMを作る事の意外なメリット
PowerShellを使って作るという事で、GUIを利用せずに作成できるという事以外にも、ディスク名や、ネットワークインタフェース名を自分で命名する事ができる事が出来ました。Azure Portalを使った場合にはできない事が出来るのも1つのメリットなのかも知れないと思いました。