PowerShellを使ったAzure VMの作成手順(Rocky Linux)

2019-10-19Azure,PowerShell/Azure CLI,Rocky Linux/CentOS,Virtual Machines

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

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

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

スポンサーリンク

Azure PowerShellを使った仮想マシンの作成手順(Rocky Linux)

参考にした公式サイト

公式サイトの手順を参考に、確認を進めます。

クイック スタート: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

※手順確認時以降に、Rocky Linuxのイメージが変更されています(2024年5月現在)。

  • PublisherName: resf
  • Offer: rockylinux-x86_64
  • SKU: 9-base
  • バージョン: latest

仮想マシンのログインに利用するSSHキーを作成

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

New-AzSshKey

※Windows環境の場合は、公開鍵と秘密鍵がC:\Users\ユーザー名.ssh\配下に生成されます。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

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

Linuxの仮想マシンを作成
#仮想マシンの設定値
$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の仮想マシン作成手順を確認しました。
今回の手順は一例です。その他の設定もさまざまにカスタマイズできます。

引き続き、いろいろ試してみたいと思います。

Azure Portalを使用した仮想マシンの作成からOSの初期設定までの手順については、こちらで紹介しています。
rootユーザーの初期設定手順も確認しています。

Rocky Linuxへのデータディスク追加手順については、こちらで紹介しています。

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

Azure PowerShellを利用した仮想マシンの情報取得方法については、こちらで紹介しています。

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

スポンサーリンク