练习 - 使用 Azure CLI 以交互方式创建 Azure 资源
在原始方案中,必须创建虚拟机 (VM) 来测试客户关系管理 (CRM) 软件。 当新版本可用时,你想要快速新建 VM,以便通过干净的映像测试完整安装体验。 测试完成后,可以删除 VM。
让我们来尝试用于创建 VM 的命令。
注释
本练习可选做。 若要完成本练习,则需要在开始之前创建 Azure 订阅。 如果没有 Azure 帐户或不想暂时创建一个帐户,可以通读说明,以便了解所显示的信息。
注释
需要使用资源组来完成本练习中的步骤。 可以使用已创建的资源组,也可以专门为此练习创建新的资源组。 如果选择创建新的资源组,这样就可以更轻松地清理完成练习时创建的任何资源。 如果没有现有资源组或想要为此练习创建新的资源组,可以按照 使用 Azure 门户和 Azure 资源管理器 中的步骤管理资源组,使用 Azure 门户创建资源组,或者可以使用 Azure CLI 通过 Azure CLI 创建资源组,按照 “管理 Azure 资源组 ”中的步骤作。
练习 - 使用 Azure CLI 创建 Linux VM
下面介绍如何使用 Azure CLI 创建新的 Azure VM:
通过 Azure 门户或使用位于许多 Azure CLI 代码块右上角的 “打开 Cloud Shell ”按钮打开 Azure Cloud Shell。
使用
az vm create命令创建 VM。- 指定资源组的名称。 将以下示例中的 myResourceGroupName 替换为现有资源组的名称或为此练习创建的资源组的名称。
- 根据组织的命名标准为 VM 分配名称。
- 从可用 Azure 位置列表中选择离你近的位置。
- 使用 Linux 映像:
Ubuntu2204。 - 按照组织的命名标准分配管理员用户名。
#!/bin/bash # Create variables with values of your choice. rgName="myResourceGroupName" 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)。
如果脚本未正确复制并且 Cloud Shell 终端正在等待添加输入,请使用 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 脚本自动执行这些任务。