练习 - 使用 Azure CLI 以交互方式创建 Azure 资源
在原始方案中,必须创建虚拟机 (VM) 来测试客户关系管理 (CRM) 软件。 当新版本可用时,你想要快速新建 VM,以便通过干净的映像测试完整安装体验。 测试完成后,可以删除 VM。
让我们来尝试用于创建 VM 的命令。
练习 - 使用 Azure CLI 创建 Linux VM
我们使用的是 Azure 沙盒,因此无需创建资源组。 使用现有的沙盒资源组 [沙盒资源组名称]
下面介绍如何使用 Azure CLI 创建新的 Azure VM:
使用
az vm create
命令创建 VM。使用
az group list
命令获取沙盒资源组的名称。根据组织的命名标准为 VM 分配名称。
从可用 Azure 沙盒位置的列表中选择靠近你的位置:
- 美国西部2
- 美国中南部
- 美国中部
- 美国东部
- 欧洲西部
- 亚洲东南部
- 日本东部
- 巴西南部
- 澳大利亚东南部
- 印度中部
使用 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 返回到提示,然后重试。
等待 Linux VM 创建:
VM 创建过程需要几分钟才能完成。
获取有关 VM 的信息
完成后,Azure CLI 会以 JSON 格式返回有关 VM 的信息。 使用命令
az vm list
和az 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
连接到 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
参数指定你最感兴趣的信息。
获取某个位置的可用 VM 大小:
az vm list-sizes --location westus --output table
获取某个位置的可用 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
获取现有 VM 的可用重设大小选项:
az vm list-vm-resize-options --resource-group $rgName --name $vmName --output table
显示资源组中所有 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
关闭 VM:
可以关闭(停止)正在运行的 VM,尽管该 VM 将继续计费。
az vm stop --resource-group $rgName --name $vmName
提示是否继续时,输入“Y”,然后按 Enter。
解除分配 VM:
要避免为已停止的 VM 计费,可以解除分配该 VM。 解除分配 VM 包含不再分配的资源(不再收取费用)。 VM 的状态将从“已停止”更改为“已停止(已解除分配)”。
az vm deallocate --resource-group $rgName --name $vmName
删除 VM:
VM 停止后,请通过运行
az vm delete
命令将其删除。az vm delete --resource-group $rgName --name $vmName
提示是否继续时,输入“Y”,然后按 Enter。
虽然以交互方式执行了这些命令,但更好的方法是编写 Azure CLI 脚本。 利用脚本,你将来能够重用创建或删除 VM 的逻辑。
在下一单元中,我们将使用 Azure CLI 脚本自动执行这些任务。