使用 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 有幾種迴圈結構,包括 until
、while
和 for
。 對於您需要對集合中一組數目的值執行迴圈的案例,for
迴圈是一個不錯的選擇。
#!/bin/bash
for i in 1 2 3
do
echo "Loop $i times"
done
參數
建立 Azure CLI 指令碼時,您可以對該指令碼新增參數,然後在執行該指令碼時指定這些參數的值。 例如:
.\setupEnvironment.sh parameter1 parameter2 parameter3
在指令碼中,可以將值擷取到變數。 在此範例中,參數為 loopCount 和 name:
#!/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 環境的一致性。 在下一個單元中,讓我們建置此指令碼以包含其他參數,並檢查是否成功完成。