使用 Azure CLI 脚本创建资源

已完成

手动执行复杂或重复的任务可能非常耗时且容易出错。 组织更倾向于实现这些任务的自动化,以降低成本并避免出错。

自动化在你需要在多个虚拟机上测试软件的客户关系管理 (CRM) 示例中至关重要。 可能需要持续删除和重新创建这些计算机。 使用 Azure CLI 脚本自动创建 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

在该脚本中,将值捕获到变量中。 在此示例中,参数为 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 环境中的一致性。 在下一个单元中,让我们生成此脚本以包含其他参数,并检查是否成功完成。