PowerShellを使ったAzure VMの作成方法(Rocky Linux)

2019-10-19Azure,PowerShell/Azure CLI,RockyLinux/CentOS,Virtual Machine

Azure PowerShellを利用したLinux(Rocky Linux 9)の仮想マシン(Azure VM)作成手順です。
管理者アカウントの認証方式にはSSHキーを利用しています。

    • Rocky Linux 9のイメージ検索
    • SSHキーの生成
    • 使用したコマンドレット纏め
    • 仮想マシンを作成

※Rocky Linuxは9のイメージを利用しています。
※Azure Virtual Machines(Azure VM)を仮想マシンとして表記しています。
※リソースグループ、仮想ネットワーク、サブネットは作成済みのリソースを利用しています。

スポンサーリンク

Azure PowerShellで仮想マシンを作成

参考にした公式サイト

公式サイトを参考に進めます。

クイック スタート:Azure portal で Linux 仮想マシンを作成する
チュートリアル:Azure PowerShell を使用して Windows VM を作成および管理する
PowerShell を使用して、完全に構成された仮想マシンを作成する

仮想マシンの設定内容

作成した仮想マシンの設定値です。
リソースグループや仮想ネットワーク(サブネット)は作成済みのリソースを利用しています。

区分 項目 設定値
リソースグループ
(既存のリソースグループを利用)
リソースグループ名 test-rg
場所 東日本(japaneast)
仮想ネットワーク
(既存の仮想ネットワークを利用)
仮想ネットワーク名 test-vnet-01
リソースグループ名 test-rg-01
サブネット
(既存のサブネットを利用)
サブネット名 private-subnet-01
パブリックIP 無し
sshキー キー名 sshkey-vm-01
(“sshkey-" + $VmName)

仮想マシンの設定値です。

区分 項目 設定値
仮想マシン 仮想マシン名
test-vm-10
リソースグループ名 test-rg-01
場所 東日本(japaneast)
OS
Rocky Linux9
仮想マシンサイズ Standard_B2
管理者ユーザー名 任意
管理者鍵ファイル名 sshkey-vm-01
(“sshkey-" + $VmName)
ネットワーク ネットワークインターフェース名 vm-01-nic
($VmName + “-nic")
プライベートIP名 vm-01-ip
($VmName + “-ip")
プライベートIPアドレスの割り当て 動的
NIC ネットワーク セキュリティ グループ なし
VM が削除されたときに NIC を削除する 削除する
ディスク ディスク名 vm-01-osdisk
($VmName + “-osdisk")
OSディスクの種類 Standard SSD
VMと共に削除 削除する
監視 ブート診断 マネージドストレージ アカウントで有効にする

※今回はネットワークインターフェースやディスク名へランダム値を追加してません。適時追加して設定します。

仮想マシンのイメージを検索

仮想マシンのイメージを検索します。
イメージはSkus、Offer、PublisherNameの3つで指定します。

コマンドレット
Get-AzVMImagePublisher リージョンで使用可能な仮想マシンイメージのパブリッシャーを取得します。
パブリッシャーはイメージを提供している組織やサービス名に該当します。
Get-AzVMImageOffer

オファーはパブリッシャーが提供する特定の製品やサービスのカテゴリがオファーに該当します。
パブリッシャーが提供する仮想マシンイメージのオファーを取得します。

Get-AzVMImageSku

SKUはオファー内の特定のバージョンや構成に該当します。
オファーに属する仮想マシンイメージのSKUを取得します。

Rocky Linux 9のイメージを検索します。

仮想マシンのイメージを検索

#PublisherNameを確認します。(PublisherNameにrockyを含むものを検索)
PS C:\>
 
Get-AzVMImagePublisher -Location japaneast | where PublisherName -match “rocky" |fl PublisherName,Id,Location

PublisherName : erockyenterprisesoftwarefoundationinc1653071250513
Id : /Subscriptions/サブスクリプションID/Providers/Microsoft.Compute/Locations/
japaneast/Publishers/erockyenterprisesoftwarefoundationinc1653071250513

Location : japaneast

#Offerを確認します。(確認したPublisherNameを指定)
PS C:\>
 
Get-AzVMImageOffer -Location japaneast `
-PublisherName “erockyenterprisesoftwarefoundationinc1653071250513" `
|fl offer,PublisherName,Location,Id

Offer : rockylinux
PublisherName : erockyenterprisesoftwarefoundationinc1653071250513
Location : japaneast
Id : /Subscriptions/サブスクリプションID/Providers/Microsoft.Compute/Locations/japaneast/Publishers/
erockyenterprisesoftwarefoundationinc1653071250513/ArtifactTypes/VMImage/Offers/rockylinux

Offer : rockylinux-9
PublisherName : erockyenterprisesoftwarefoundationinc1653071250513
Location : japaneast
Id : /Subscriptions/サブスクリプションID/Providers/Microsoft.Compute/Locations/japaneast/Publishers/
erockyenterprisesoftwarefoundationinc1653071250513/ArtifactTypes/VMImage/Offers/rockylinux-9

#Skusを確認します。(rockylinux 9のOfferを指定)
PS C:\>
 Get-AzVMImageSku -Location japaneast `
-Publisher “erockyenterprisesoftwarefoundationinc1653071250513" -Offer rockylinux-9 `

|fl Skus,Offer,PublisherName,Location,Id

Skus : rockylinux-9
Offer : rockylinux-9
PublisherName : erockyenterprisesoftwarefoundationinc1653071250513
Location : japaneast
Id : /Subscriptions/サブスクリプションID/Providers/Microsoft.Compute/Locations/japaneast/Publishers/
erockyenterprisesoftwarefoundationinc1653071250513/ArtifactTypes/VMImage/Offers/rockylinux-9/Skus/rockylinux-9

SSHキーを作成

仮想マシンの管理者アカウントで使用するSSHキーを作成します。

ますNew-AzSshKey

※公開鍵、秘密鍵はC:\Users\ユーザー名\.ssh\配下(Windowsの場合)に生成されます。
※xxxxxxxxx(秘密鍵)、xxxxxxxxx.pub(公開鍵)の2つのファイルが生成されます。

SSHキー作成
#仮想マシンの設定値
$RgName ="test-rg-01″ #仮想マシン名
$VmName ="vm-01″ #仮想マシン名
 
#使用するSSHキー名を設定
$SshKeyName = “sshkey-" + $VmName

#SSH keyを生成します
New-AzSshKey -ResourceGroupName $RgName -Name $SshKeyName

Tera TermやPuTTYを利用した鍵ペアの生成方法についてはこちらで紹介しています。
パスフレーズ付きの鍵ペアを例に作成手順を紹介しています。

—広告—

使用したコマンドレット

仮想マシン作成時に利用したAzure PowerShellのコマンドレットです。
ネットワークインターフェースに関連したコマンドレットです。

コマンドレット
Get-AzVirtualNetwork 仮想ネットワーク の情報を取得します。
Get-AzVirtualNetworkSubnetConfig サブネット設定を取得します。
Get-AzVirtualNetworkで指定した仮想ネットワークからサブネットの情報を取得します。
New-AzNetworkInterfaceIpConfig ネットワークインターフェースのIP構成を作成します。
ネットワークインターフェースの作成時の設定として使用します。
New-AzNetworkInterface ネットワークインターフェースを作成します。
Add-AzVMNetworkInterface 仮想マシンにネットワークインターフェースを追加します。

仮想マシンに関連したコマンドレットです。

コマンドレット
New-AzVMConfig

仮想マシンの構成を作成します。
サイズ、ディスク、ネットワークインターフェースなどの仮想マシンのパラメータを指定します。

New-AzVM

仮想マシンを作成します。
New-AzVMConfigで作成した構成を元に仮想マシンを作成します。

Set-AzVMOSDisk

仮想マシンのオペレーティングシステム (OS) ディスクのプロパティを設定します。
New-AzVMConfigで定義した仮想マシン構成にOS ディスクの構成を追加します。

Set-AzVMSourceImage 仮想マシンで使用するソースのイメージを指定します。
今回は事前に確認したRocky Linux 9のイメージを指定しています。
Set-AzVMPlan

マーケットプレイスでのイメージ購入プランを設定します。
サードパーティ製のソフトウェアイメージを使用する際にライセンスプランを適用します。
今回は事前に確認したRocky Linux 9のイメージを指定しています。

Set-AzVmSecurityProfile 仮想マシンのセキュリティの種類を設定します。
記事作成時点ではRocky Linuxのイメージではトラステッド起動をサポートしていないためStandardを設定しています。
Set-AzVMBootDiagnostic 仮想マシンのブート診断を設定します。
Get-AzSshKey SSHキーの情報を取得します。
Set-AzVMOperatingSystem 仮想マシンのオペレーティングシステムの設定を定義します。
管理者ユーザーの認証にSSHキーを利用する場合はLinuxの定義が必要となります。
Add-AzVMSshPublicKey 仮想マシンのSSH公開鍵を追加するために使用します。
管理者ユーザーの認証に利用するユーザーの公開鍵を追加しています。

仮想マシンを作成

Azure PowerShellを利用して仮想マシンを作成します。
Rocky Linux 9のイメージを指定しています。

仮想マシンを作成
#仮想マシンの設定値
$RgName ="test-rg-01″ #リソースグループ名
$VmName ="vm-01″ #仮想マシン名
$VmSize ="Standard_B2s" #サイズ
$location ="japaneast" #地域

#使用するSSHキー名を設定
$SshKeyName = “sshkey-" + $VmName

#OSユーザー名とパスワードを設定
$OsUser = “OSユーザー名"
$OsPassword = “パスワード設定値(12桁以上)"

#セキュリティの種類の設定値
#RockyLinuxの場合トラステッド起動をサポートしていないのでStandardを設定
$SecurityType = “Standard"

#OSイメージの設定値(今回はRocky Linux 9を指定)
$Skus = “rockylinux-9"
$Offer ="rockylinux-9″
$PublisherName = “erockyenterprisesoftwarefoundationinc1653071250513"

#ネットワークインタフェース関連の設定値
$NicName = $VmName + “-nic" #ネットワークインタフェース名
$VnetRGName ="test-rg-01″ #仮想ネットワークのリソースグループ名
$VnetName ="test-vnet-01″ #仮想ネットワーク名
$SubnetName = “private-subnet-01" #サブネット名
$PrivateIpName = “ip-" + $VmName #IP名
$NicDeleteOption = “Delete" #VMと一緒に削除するかの設定

#ディスク関連の設定値
$DiskName = $VmName + “-osdisk" #ディスク名
$DiskType ="StandardSSD_LRS" #利用するディスクタイプ
$DiskDeleteOption = “Delete" #VMと一緒に削除するかの設定

#ネットワークインターフェースを作成
$Vnet = Get-AzVirtualNetwork -ResourceGroupName $VnetRGName -Name $VnetName
$Subnet = Get-AzVirtualNetworkSubnetConfig -Name $SubnetName -VirtualNetwork $Vnet

$IpConfig = New-AzNetworkInterfaceIpConfig -Name $PrivateIpName -Subnet $Subnet
$nic = New-AzNetworkInterface -Name $NicName -ResourceGroupName $RGName `
 -Location $location `
 -IpConfiguration $IPconfig

#SSH keyを生成(VMと一緒に生成する場合はコメントアウトを外して使用)
#New-AzSshKey -ResourceGroupName $RGName -Name $SshKeyName

#仮想マシンのコンフィグを設定
$VmConfig = New-AzVMConfig -VMName $VmName -VMSize $VmSize `
| Set-AzVMOSDisk -name $DiskName -StorageAccountType $DiskType -CreateOption FromImage -DeleteOption $DiskDeleteOption `
| Set-AzVMSourceImage -PublisherName $PublisherName -Offer $Offer -Skus $Skus -Version “latest" `
| Set-AzVMPlan -Publisher $PublisherName -Product $Offer -Name $Skus `
| Add-AzVMNetworkInterface -Id $nic.Id -DeleteOption $NicDeleteOption

#OSイメージのプランを設定
$VmConfig = Set-AzVMPlan -Vm $VmConfig -Publisher $PublisherName -Product $Offer -Name $Skus

#セキュリティの種類の設定(基本画面設定)
$VmConfig = Set-AzVmSecurityProfile -Vm $VmConfig -SecurityType $SecurityType

#ブート診断設定(マネージド ストレージ アカウントで有効にする)
$VmConfig = Set-AzVMBootDiagnostic -vm $VmConfig -Enable

#SSHキーから公開鍵情報を取得
$SshKey = Get-AzSshKey -ResourceGroupName $RGName -Name $SshKeyName
$SshPublicKey = $SshKey.publicKey

#OSアカウント情報を設定
$SecurePassword = ConvertTo-SecureString $OsPassword -AsPlainText -Force
$Credential = New-Object System.Management.Automation.PSCredential ($OsUser, $SecurePassword)
$VmConfig = Set-AzVMOperatingSystem -vm $VmConfig -Linux -ComputerName $vmName -Credential $Credential
$VmConfig = Add-AzVMSshPublicKey -VM $VmConfig -KeyData $SshPublicKey -Path “/home/${OsUser}/.ssh/authorized_keys"

#仮想マシンを作成
New-AzVM -ResourceGroupName $RGName -Location $location -VM $VmConfig

—広告—

最後に

Azure PowerShellを使用してRocky Linux 9の仮想マシンを作成しました。
今回は1例で作成しています。その他の設定も色々カスタマイズする事が出来ます。

引き続き色々試してみたいと思います。

Rocky Linuxへのデータディスク追加はこちらに纏めています。

Azure PowerShellやAzure CLIを利用した仮想マシンの電源状態確認についてはこちらに纏めています。

Azure PowerShellを利用した仮想マシンの情報を取得についてはこちらに纏めています。

SSH鍵を利用した仮想マシンの作成手順についてはこちらで紹介しています。
パスフレーズ付きのSSH鍵を利用した例やSSH公開キーの選択肢による手順の違いなどを紹介しています。

スポンサーリンク