使用 Azure CLI 指令碼建立資源

已完成

手動執行時,複雜或重複的工作可能耗時又容易出錯。 組織寧可將這些工作自動化,以降低成本並避免錯誤。

在客戶關係管理 (CRM) 的範例中,當您在多部虛擬機器上測試軟體時,自動化是至關重要的。 這些機器可能需要不斷地被刪除並重新建立。 使用 Azure CLI 指令碼自動建立 VM 比每次手動建立 VM 更有效率且更可靠。

除了建立 VM 這項核心作業外,您的指令碼必須符合幾項需求:

  • 建立多個 VM:使用 az vm create 建立多個使用唯一名稱的 VM。
  • 資源群組參數:允許指令碼接受以參數做為資源群組的名稱。

在本單元中,您將學習如何在符合這些需求的 Bash 環境中撰寫和執行 Azure CLI 指令碼。

什麼是 az Azure CLI Bash 指令碼?

Azure CLI 指令碼是一個包含命令和控制建構的文字檔。 該指令碼會執行參考命令,而控制建構是 Bash 所提供的迴圈、變數、參數、註解等程式設計功能。

Azure CLI Bash 指令碼檔案具有 .sh 副檔名。 您可以使用任何文字編輯器建立和儲存這些檔案。

建立指令碼後,您可以透過傳遞該檔案的名稱來從命令列執行它。 在該檔案名稱前面加上一個點 (表示目前目錄) 和一個反斜線:

.\myScript.sh

Bash 技術

Bash 包含程式語言中常見的功能。 對於本練習中您正在專注於的指令碼,您將使用三個主要功能:變數、迴圈和參數。

變數

在 Azure CLI 中,將值指派給某個變數會自動建立該變數。 例如:

location="eastus"

若要判斷儲存於變數的值,請使用 $ 前置詞及其名稱:

echo $location

迴圈

Bash 有幾種迴圈結構,包括 untilwhilefor。 對於您需要對集合中一組數目的值執行迴圈的案例,for 迴圈是一個不錯的選擇。

#!/bin/bash
for i in 1 2 3
do
   echo "Loop $i times"
done

參數

建立 Azure CLI 指令碼時,您可以對該指令碼新增參數,然後在執行該指令碼時指定這些參數的值。 例如:

.\setupEnvironment.sh parameter1 parameter2 parameter3

在指令碼中,可以將值擷取到變數。 在此範例中,參數為 loopCountname

#!/bin/bash

loopCount=3
name="msdocs"

for i in $(seq 1 $loopCount)
do
    loopName="loop $i for $name"
    echo $loopName
done

輸出如下所示:

loop 1 for msdocs
loop 2 for msdocs
loop 3 for msdocs

您可以使用參數作為輸入和迴圈來根據指定的參數建立一組 VM。 此方法保留指令碼的通用性,避免重複使用相同的程式碼。

範例指令碼

以下範例指令碼示範如何使用變數、迴圈和參數建立多個 VM:

#!/bin/bash
    
# Assign parameters to variables
vmCount=$1
adminUserPrefix=$2
shift 2
images=("$@")
    
# Loop 
for i in $(seq 1 $vmCount)
do
    let "randomIdentifier=$RANDOM*$RANDOM"
    resourceGroupName="msdocs-rg-$randomIdentifier"
    location="westus"
    adminUserName="msdocs-$randomIdentifier"
    vmName="msdocs-vm-$randomIdentifier"
    vmImage=${images[$((i-1)) % ${#images[@]}]}

    echo "Creating VM $vmName on $mvImage with admin $adminUserName in resource group $resourceGroupName"

    # create the resource group
    az group create --name $resourceGroupName --location $location

    # create the VM
    az vm create \
        --resource-group $resourceGroupName \
        --location $location \
        --admin-username $adminUserName \
        --name $vmName \
        --image $vmImage \
        --generate-ssh-keys

done

執行指令碼

將該指令碼儲存為 msdocs-script.sh 並從 Bash 命令列執行它,同時提供必要的參數:

./msdocs-script.sh 3  Debian11 Debian11 Ubuntu2204

使用此指令碼,您可以有效率地在不同的資源群組中建立多個 VM、自動執行重複的工作,並確保整個 Azure 環境的一致性。 在下一個單元中,讓我們建置此指令碼以包含其他參數,並檢查是否成功完成。