演習 - スクリプトを使用して Azure PowerShell で Azure リソースを作成する

完了

このユニットでは、引き続き、Linux 管理ツールを開発している会社の例を扱います。 目標は、Linux Virtual Machines (VM) を使用して、潜在的な顧客がソフトウェアをテストできるようにすることです。 リソース グループが既に設定されているので、次に VM を作成します。

会社では Linux の大規模なトレード ショーでブースを確保しました。 デモンストレーション領域を設定し、そこにはそれぞれ別々の Linux VM に接続された 3 台の端末を設置する計画です。 1 日の終わりに VM を削除して再作成する必要があります。そうすることで、VM は毎朝新しい状態で開始されます。 長い 1 日後に VM を手動で作成すると、エラーが発生しやすくなります。そのため、VM の作成プロセスを自動化する PowerShell スクリプトを記述する必要があります。

仮想マシンを作成するスクリプトを記述する

仮想マシンの作成を自動化するスクリプトを Azure Cloud Shell に記述するには、次の手順に従います。

Note

通常は、Connect-AzAccount で資格情報を使用して Azure に対して認証しますが、Cloud Shell では既に認証されているため、この手順は不要です。

  1. 自分のホーム フォルダーに切り替えます。

    Set-Location -Path $HOME
    
  2. 新しい PowerShell スクリプト ファイルを作成します。

    New-Item -Name ConferenceDailyReset.ps1 -ItemType File
    
  3. 統合された Visual Studio Code (VS Code) エディターを開きます。

    code ./ConferenceDailyReset.ps1
    

    ヒント

    vim、nano、および emacs のいずれかを使用する場合、統合された Cloud Shell エディターではこれらのエディターもサポートされています。

  4. リソース グループ名のパラメーターを定義します。

    次の行をスクリプトに追加します。

    param (
        [string]$ResourceGroupName
    )
    
  5. VM 管理者の資格情報の入力を求めます。

    $adminCredential = Get-Credential -Message 'Enter a username and password for the VM administrator.'
    
  6. 3 回実行するループを作成します。

    $vms = 1..3
    foreach ($vm in $vms) {
        $vm
    }
    
  7. ループで、各 VM の名前を作成し、それを返します。

    $vmName = "ConferenceDemo-$vm"
    Write-Output "Creating VM: $vmName"
    
  8. $vmName 変数を使用して VM を作成します。

    $azVmParams = @{
        ResourceGroupName = $ResourceGroupName
        Name              = $vmName
        Credential        = $adminCredential
        Image             = 'Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest'
        OpenPorts         = 22
    }
    New-AzVm @azVmParams
    
  9. ファイルを保存します。

    スクリプトを保存するには、エディターの右上隅にある省略記号 (...) コンテキスト メニューを使用するか、Ctrl + S キーボード ショートカットを使用します。

完成したスクリプト

完成したスクリプトは次の例のようになります。

param (
    [string]$ResourceGroupName
)

$adminCredential = Get-Credential -Message 'Enter a username and password for the VM administrator.'

$vms = 'web','app','sql'

foreach ($vm in $vms) {

    $vmName = "ConferenceDemo-$vm"
    Write-Output "Creating VM: $vmName"

    $azVmParams = @{
        ResourceGroupName = $ResourceGroupName
        Name              = $vmName
        Credential        = $adminCredential
        Image             = 'Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest'
        OpenPorts         = 22
    }
    New-AzVm @azVmParams
}

前の例のコードのようにスクリプトが表示されたことを確認したら、エディターの右上隅にある省略記号 (...) コンテキスト メニューまたは Ctrl + Q キーボード ショートカットを使用してエディターを閉じます。

スクリプトを実行する

  1. 次のコマンドを使用してこのスクリプトを実行します。

    ./ConferenceDailyReset.ps1 -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
    
  2. 完了するまで待ちます。 このスクリプトの完了には数分かかります。

  3. VM を確認します。 スクリプトが完了したら、リソース グループ内の VM を一覧表示して、スクリプトが正常に完了したことを確認します。

    Get-AzVM -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
    

    それぞれに一意の名前がある、3 つの VM が表示されます。

3 つの VM の作成を自動化するスクリプトが正常に作成されました。各 VM は特定のリソース グループに含まれており、トレード ショーでの毎日のデモに対応できます。 スクリプトは短くて簡単ですが、Azure portal を使用して手動で実行すると、時間がかかり、エラーが発生しやすいプロセスが大幅に高速化されます。