使用 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 具有多个循环结构,包括 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 环境中的一致性。 在下一个单元中,让我们生成此脚本以包含其他参数,并检查是否成功完成。