練習 - 使用 Azure CLI 以互動方式建立 Azure 資源

已完成

在原始案例中,您必須建立虛擬機器 (VM) 來測試您的客戶關係管理 (CRM) 軟體。 當新的組建可用時,您想要啟用新的 VM,以從乾淨映像測試完整的安裝體驗。 測試完成後,您就可以刪除 VM。

讓我們試試建立 VM 的命令。

練習 - 使用 Azure CLI 建立 Linux VM

既然您正在使用 Azure 沙箱,您不需要建立資源群組。 相反的,使用現有的沙箱資源群組[沙箱資源群組名稱]。 請注意位置限制。

以下說明如何使用 Azure CLI 建立新的 Azure VM:

  1. 使用 az vm create 命令建立 VM。

    • 使用 az group list 命令取得沙箱資源群組的名稱。

    • 遵循組織的命名標準來為 VM 指派名稱。

    • 從可用的 Azure 沙箱位置清單中選擇靠近您的位置:

      • westus2
      • 美國中南部
      • centralus
      • eastus
      • westeurope
      • 東南亞
      • 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 會以 JSON 格式傳回 VM 的相關資訊。 使用 az vm listaz vm show 命令取得 VM 的具體資訊。 以下列出一些範例:

    其中數個指令碼會使用在先前步驟中儲存的變數名稱和值。

    取得資料表格式的所有 VM 清單。

    az vm list --output table
    

    取得 JSON 格式單一 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 入口網站,此入口網站通常會提供屬性選項的挑選清單。 例如,可用位置和 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 清單。

    # 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 命令以刪除 VM。

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

    輸入 Y,並在出現提示時按 Enter 繼續。

當您以互動方式執行這些命令時,更好的方法是撰寫 Azure CLI 指令碼。 您可以透過指令碼,在未來重複使用邏輯來建立或刪除 VM。

在下一個單元中,讓我們使用 Azure CLI 指令碼,將這些工作自動化。