演習 - Azure CLI を使用して対話形式で Azure リソースを作成する

完了

元のシナリオでは、顧客関係管理 (CRM) ソフトウェアをテストするために仮想マシン (VM) を作成する必要があります。 新しいビルドを使用できるようになったら、新しい VM を起動して、クリーン イメージからインストール エクスペリエンス全体をテストする必要があります。 テストが完了したら、VM を削除できます。

VM を作成するコマンドを試してみましょう。

演習 - Azure CLI を使用して Linux VM を作成する

Azure サンドボックスを使用しているので、リソース グループを作成する必要はありません。 代わりに、既存のサンドボックス リソース グループ [サンドボックス リソース グループ名] を使用します。 場所の制限に注意してください。

Azure CLI を使用して新しい Azure VM を作成する方法を次に示します。

  1. VM を作成するには、az vm create コマンドを使用します。

    • サンドボックス リソース グループの名前を取得するには、az group list コマンドを使用します。

    • 組織の命名標準に従って VM に名前を割り当てます。

    • 使用可能な Azure サンドボックスの場所の一覧から、近くの場所を選択する:

      • westus2
      • southcentralus
      • centralus
      • eastus
      • westeurope
      • southeastasia
      • japaneast
      • brazilsouth
      • australiasoutheast
      • centralindia
    • Linux イメージ Ubuntu2204 を使用します。

    • 組織の命名標準に従って管理者のユーザー名を割り当てます。

    #!/bin/bash
    
    # Get the single resource group name created by the sandbox.
    rgName=$(az group list --query "[].{Name:name}" --output tsv)
    echo $rgName
    
    # Create additional variables with values of your choice.
    vmName="msdocs-vm-01"
    vmLocation="westus"
    vmImage="Ubuntu2204"
    vmAdminUserName="myAzureUserName"
    
    # Create the VM
    az vm create \
      --resource-group $rgName \
      --name $vmName \
      --location $vmLocation \
      --image $vmImage \
      --public-ip-sku Standard \
      --admin-username $vmAdminUserName \
      --generate-ssh-keys
    

    ヒント

    コピー ボタンを使用するだけで、すべての行連結文字が削除されることに気付きましたか? この動作は仕様によるものです。 Azure CLI は、異なる行連結文字の多数の環境で実行できるため、コピー ボタンによってこれらが削除されます。 書式設定されたスクリプトをコピーしたい場合は、マウスを使用してコード ブロックの内容を選択してコピーします。

    Azure Cloud Shell に貼り付けるには、Cloud Shell ターミナル内で新しい行を右クリックして [貼り付け] を選択するか、Shift + Insert キーボード ショートカット (macOS では ⌘ + V) を使用します。

    スクリプトが正しくコピーされておらず、サンドボックス ターミナルが追加入力を待機している場合は、Ctrl + Z を使用してプロンプトに戻り、もう一度やり直してください。

  2. Linux VM が作成されるまで待機する:

    VM の作成プロセスが完了するまでに数分かかります。

  3. VM に関する情報を取得する

    完了すると、Azure CLI は VM に関する情報を JSON 形式で返します。 VM に関する特定の情報を取得するには、az vm listaz vm show のコマンドを使用します。 次に例をいくつか示します。

    これらのスクリプトの一部では、前の手順で格納した変数名と値を使用します。

    テーブル形式ですべての VM の一覧を取得します。

    az vm list --output table
    

    JSON 形式で 1 つの VM に関する情報を取得します。

    この出力の一部は、新しい VM の作成後に表示されます。 ただし、スクリプトで参照する入れ子になったプロパティ名を見つけるときは、より多くの情報が返される方が便利です。 プロパティ名は大文字と小文字が区別されます。

    az vm show --resource-group $rgName --name $vmName
    

    VM プロパティに関する情報を取得します。

    # Get the time the VM was created
    az vm show --resource-group $rgName --name $vmName --query "timeCreated"
    
    # Get the OS disk storage account type
    az vm show --resource-group $rgName --name $vmName --query "storageProfile.osDisk.managedDisk.storageAccountType"
    

    VM のプロパティを変数に格納します。

    Azure CLI では、いくつかの出力の種類を使用できます。 既定値は JSON ですが、変数に値を格納する場合は、--output tsv を使用して追加の書式設定を削除してください。

    #!/bin/bash
    # Store the VM id
    vmID=$(az vm show --resource-group $rgName --name $vmName --query id --output tsv)
    echo $vmID
    
    # Store the public IP address
    publicIP=$(az vm list-ip-addresses \
        --resource-group $rgName \
        --name $vmName \
        --query "[].virtualMachine.network.publicIpAddresses[0].ipAddress" --output tsv)
    echo $publicIP
    
  4. VM に接続します。**

    #!/bin/bash
    az ssh vm --private-key-file \path\to\private\key \
        --resource-group $rgName \
        --name $vmName \
        --local-user $vmAdminUserName
    

    exit」と入力してサインアウトします。

その他の VM オプションの詳細を確認する

コマンド ラインで Azure リソースを操作する場合、Azure portal を使用していないため、プロパティ オプションの選択リストが提供されません。 たとえば、使用可能な場所や VM サイズの一覧です。 Azure CLI の多くのコマンド グループで、この情報を提供する複数のコマンドがあります。 次に VM の例をいくつか示します。

ヒント

Azure CLI の --output table 形式では、使用可能な情報が 100% 返されるわけではありませんが、多くの場合、大量のコマンド結果が読みやすくなります。 特に関心のある情報を指定するには、--query パラメーターを使用します。

  1. その場所で使用可能な VM サイズを取得する:

    az vm list-sizes --location westus --output table
    
  2. その場所で使用可能な SKU を取得する:

    選択した --location によっては、Azure CLI から SKU の完全な一覧が返されるまでに 1、2 分かかる場合があります。

    # virtual machines
    az vm list-skus --location westus --resource-type virtualMachines --output table
    
    # disks
    az vm list-skus --location westus --resource-type disks --output table
    
  3. 既存の VM で使用可能なサイズ変更オプションを取得する:

    az vm list-vm-resize-options --resource-group $rgName --name $vmName --output table
    
  4. リソース グループにあるすべての VM の詳細を表示します。**

    ローカル環境での作業を選択し、お使いのサブスクリプションに複数の VM がある場合は、フィルター条件を満たす VM のクエリを実行します。

    #!/bin/bash
    # details of all VMs in a specified resource group
    az vm show --show-details --ids $(az vm list --resource-group $rgName --query "[].id" -o tsv)
    
    # list of all VMs created in the last 7 days
    createDate=$(date +%F -d "-7days")
    az vm list --resource-group $rgName \
            --query "[?timeCreated >='$createDate'].{Name:name, admin:osProfile.adminUsername, DiskSize:storageProfile.osDisk.diskSizeGb}" \
            --output table
    
    # list all VMs whose disks are of a certain type
    # first get a list of the disk types or organization is using
    az vm list --resource-group $rgName --query "[].{Name:name, osDiskSize:storageProfile.osDisk.diskSizeGb, managedDiskTypes:storageProfile.osDisk.managedDisk.storageAccountType}" --output table
    
    diskType="Premium_LRS"
    az vm list --resource-group $rgName \
            --query "[?storageProfile.osDisk.managedDisk.storageAccountType =='$diskType'].{Name:name, admin:osProfile.adminUsername, osDiskSize:storageProfile.osDisk.diskSizeGb, CreatedOn:timeCreated, vmID:id}" \
            --output table
    

VM を停止または削除する

  1. VM をシャットダウンします。

    VM は引き続き課金されますが、実行中の VM を電源オフ (停止) できます。

    az vm stop --resource-group $rgName --name $vmName
    

    Y」と入力し、続行を求められたら Enter キーを押します。

  2. VM の割り当てを解除する:

    停止した VM が課金されないようにするために、割り当てを解除することができます。 割り当てを解除された VM には、今後割り当てられないリソースが含まれます (料金は発生しなくなります)。 VM の状態が [停止済み] から [停止済み (割り当て解除)] に変わるまで待ちます。

    az vm deallocate --resource-group $rgName --name $vmName
    
  3. VM を削除する:

    VM が停止したら、az vm delete コマンドを実行して削除します。

    az vm delete --resource-group $rgName --name $vmName
    

    Y」と入力し、続行を求められたら Enter キーを押します。

これらのコマンドを対話形式で実行した場合は、Azure CLI スクリプトを記述することをお勧めします。 スクリプトを使用すると、将来 VM を作成または削除するためにロジックを再利用できます。

次のユニットでは、Azure CLI スクリプトを使用してこれらのタスクを自動化しましょう。