练习 - 使用 Azure PowerShell 以交互方式创建 Azure 资源

已完成

在原始方案中,必须创建虚拟机 (VM) 来测试客户关系管理 (CRM) 软件。 当新版本可用时,你想要快速新建 VM,以便通过干净的映像测试完整安装体验。 测试完成后,可以删除 VM。

让我们来尝试用于创建 VM 的命令。

注释

本练习可选做。 若要完成本练习,则需要在开始之前创建 Azure 订阅。 如果没有 Azure 帐户或不想暂时创建一个帐户,可以通读说明,以便了解所显示的信息。

注释

需要使用资源组来完成本练习中的步骤。 可以使用已创建的资源组,也可以专门为此练习创建新的资源组。 如果选择创建新的资源组,这样就可以更轻松地清理完成练习时创建的任何资源。 如果没有现有资源组或想要为此练习创建新的资源组,可以按照 使用 Azure 门户和 Azure 资源管理器 中的步骤管理资源组,使用 Azure 门户创建资源组,或者可以使用 Azure CLI 通过 Azure CLI 创建资源组,按照 “管理 Azure 资源组 ”中的步骤作。

使用 Azure PowerShell 创建 Linux VM

下面介绍如何使用 Azure PowerShell 创建新的 Azure VM:

  1. 使用 New-AzVM cmdlet 创建 VM。

    • 指定 VM 的资源组。
    • 根据组织的命名标准命名 VM。
    • 从可用 Azure 区域列表中选择离你近的位置。
    • 使用 Ubuntu Linux 映像:Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest
    • 使用 Get-Credential cmdlet 设置 VM 管理员凭据。
    • 使用用于 SSH 访问的端口 添加 OpenPorts22 参数。
    • 创建用于 SSH 登录的公共 IP 地址名称。
    $azVmParams = @{
        ResourceGroupName   = 'myResourceGroupName'
        Name                = 'testvm-eus-01'
        Credential          = (Get-Credential)
        Location            = 'eastus'
        Image               = 'Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest'
        OpenPorts           = 22
        PublicIpAddressName = 'testvm-eus-01'
    }
    New-AzVm @azVmParams
    

    将前面的示例中的 myResourceGroupName 替换为现有资源组的名称或为此练习创建的资源组的名称。

    提示

    可以使用“复制”按钮将命令复制到剪贴板。 要粘贴,请右键单击 Cloud Shell 终端中的新行,然后选择“粘贴”,或使用 Shift+Insert 键盘快捷方式(在 macOS 上为 ⌘+V)。

  2. 输入凭据:

    出现提示时,输入用户名和密码,并遵循以下准则:密码必须为 12-123 个字符,满足以下四个复杂性要求中的三个:小写字符、大写字符、数字和特殊字符(正则表达式匹配 [\W_])。 有关详细信息,请参阅 Linux VM 常见问题解答

  3. 等待 VM 创建:

    VM 创建过程需要几分钟才能完成。

  4. 查询 VM:

    完成后,查询 VM 并将 VM 对象分配给变量 ($vm)。

    $vm = Get-AzVM -Name testvm-eus-01 -ResourceGroupName myResourceGroupName
    
  5. 查看有关 VM 的信息:

    若要查看有关 VM 的信息,请显示变量的内容。

    $vm
    

    示例输出:

    ResourceGroupName : myResourceGroupName
    Id                : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroupName/providers/Microsoft.Compute/virtualMachines/testvm-eus-01
    VmId              : 00000000-0000-0000-0000-000000000000
    Name              : testvm-eus-01
    Type              : Microsoft.Compute/virtualMachines
    Location          : eastus
    Tags              : {}
    HardwareProfile   : {VmSize}
    NetworkProfile    : {NetworkInterfaces}
    OSProfile         : {ComputerName, AdminUsername, LinuxConfiguration, Secrets}
    ProvisioningState : Succeeded
    StorageProfile    : {ImageReference, OsDisk, DataDisks}
    ...
    
  6. 检查 VM 属性:

    可以通过成员访问运算符 (.) 检查复杂对象。 例如,若要查看与 HardwareProfileVMSize 部分关联的 对象中的属性,请运行以下命令:

    $vm.HardwareProfile
    

    若要获取其中一个磁盘上的信息,请运行以下命令:

    $vm.StorageProfile.OsDisk
    
  7. 获取可用的 VM 大小:

    将 VM 对象传递到其他 cmdlet 以获取可用大小:

    $vm | Get-AzVMSize
    
  8. 获取公共 IP 地址:

    检索公共 IP 地址以连接到 VM 并将其存储在变量中。

    $ip = Get-AzPublicIpAddress -ResourceGroupName myResourceGroupName -Name testvm-eus-01
    
  9. 连接到 VM:

    使用变量中的 IP 地址通过 SSH 连接到 VM。 例如,如果用户名为 bob,请使用以下命令:

    ssh bob@$($ip.IpAddress)
    

    通过键入 exit 进行注销。

删除 VM

若要尝试其他命令,请删除 VM。 执行以下步骤:

  1. 关闭 VM:

    运行以下命令:

    Stop-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName
    

    提示是否继续时,输入“Y”,然后按 Enter

  2. 删除 VM:

    VM 停止后,运行 Remove-AzVM cmdlet 来将其删除。

    Remove-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName
    

    提示是否继续时,输入“Y”,然后按 Enter

  3. 列出资源组中的所有资源:

    使用 Get-AzResource cmdlet 列出资源组中的所有资源。 结果通过管道传递给 Select-Object 以返回特定属性:

    Get-AzResource -ResourceGroupName $vm.ResourceGroupName | 
        Select-Object -Property Name, ResourceType, ResourceGroupName
    

    应该会看到几个仍然存在的资源(包括磁盘、虚拟网络等):

    Name                    ResourceType                            ResourceGroupName
    ----                    ------------                            -----------------
    cloudshell              Microsoft.Storage/storageAccounts       myResourceGroupName
    testvm-eus-01           Microsoft.Network/virtualNetworks       myResourceGroupName
    testvm-eus-01           Microsoft.Network/publicIPAddresses     myResourceGroupName
    testvm-eus-01           Microsoft.Network/networkSecurityGroups myResourceGroupName
    testvm-eus-01           Microsoft.Network/networkInterfaces     myResourceGroupName
    testvm-eus-01_OsDisk_1  Microsoft.Compute/disks                 myResourceGroupName
    

    Remove-AzVM 命令只删除 VM。 它不会清理其他任何资源。 若要手动清理它们,请执行以下步骤:

  4. 删除网络接口:

    Get-AzNetworkInterface -ResourceGroupName $vm.ResourceGroupName -Name $vm.Name |
        Remove-AzNetworkInterface
    

    提示是否继续时,输入“Y”,然后按 Enter

  5. 删除网络安全组:

    Get-AzNetworkSecurityGroup -ResourceGroupName $vm.ResourceGroupName |
        Remove-AzNetworkSecurityGroup
    

    提示是否继续时,输入“Y”,然后按 Enter

  6. 删除公共 IP 地址:

    Get-AzPublicIpAddress -ResourceGroupName $vm.ResourceGroupName |
        Remove-AzPublicIpAddress
    

    提示是否继续时,输入“Y”,然后按 Enter

  7. 删除虚拟网络:

    Get-AzVirtualNetwork -ResourceGroupName $vm.ResourceGroupName |
        Remove-AzVirtualNetwork
    

    提示是否继续时,输入“Y”,然后按 Enter

  8. 删除托管 OS 磁盘:

    Get-AzDisk -ResourceGroupName $vm.ResourceGroupName -DiskName $vm.StorageProfile.OSDisk.Name |
        Remove-AzDisk
    

    提示是否继续时,输入“Y”,然后按 Enter

  9. 验证是否删除了所有资源:

    检查资源组以确保删除所有资源:

    Get-AzResource -ResourceGroupName $vm.ResourceGroupName | 
        Select-Object -Property Name, ResourceType, ResourceGroupName
    

虽然以交互方式执行了这些命令,但更好的方法是编写 PowerShell 脚本。 通过脚本,你将来能够重复使用用于创建或删除 VM 的逻辑

接下来,让我们看看如何使用 PowerShell 脚本自动执行这些任务。