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

已完成

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

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

使用 Azure PowerShell 创建 Linux VM

我们使用的是 Azure 沙盒,因此无需创建资源组。 使用现有的沙盒资源组 [沙盒资源组名称]。 请注意位置限制。

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

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

    • 指定沙盒资源组:[沙盒资源组名称]

    • 根据组织的命名标准命名 VM。

    • 从可用 Azure 沙盒位置的列表中选择靠近你的位置。

      • 美国西部2
      • 美国中南部
      • 美国中部
      • 美国东部
      • 欧洲西部
      • 亚洲东南部
      • 日本东部
      • 巴西南部
      • 澳大利亚东南部
      • 印度中部
    • 使用 Ubuntu Linux 映像:Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest

    • 使用 Get-Credential cmdlet 设置 VM 管理员凭据。

    • 使用用于 SSH 访问的端口 22 添加 OpenPorts 参数。

    • 创建用于 SSH 登录的公共 IP 地址名称。

    $azVmParams = @{
        ResourceGroupName   = '<rgn>[sandbox resource group name]</rgn>'
        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
    

    提示

    可以使用“复制”按钮将命令复制到剪贴板。 要粘贴,请右键单击 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 <rgn>[sandbox resource group name]</rgn>
    
  5. 查看有关 VM 的信息:

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

    $vm
    

    示例输出:

    ResourceGroupName : <rgn>[sandbox resource group name]</rgn>
    Id                : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rgn>[sandbox resource group name]</rgn>/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 属性:

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

    $vm.HardwareProfile
    

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

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

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

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

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

    $ip = Get-AzPublicIpAddress -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -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       <rgn>[sandbox resource group name]</rgn>
    testvm-eus-01           Microsoft.Network/virtualNetworks       <rgn>[sandbox resource group name]</rgn>
    testvm-eus-01           Microsoft.Network/publicIPAddresses     <rgn>[sandbox resource group name]</rgn>
    testvm-eus-01           Microsoft.Network/networkSecurityGroups <rgn>[sandbox resource group name]</rgn>
    testvm-eus-01           Microsoft.Network/networkInterfaces     <rgn>[sandbox resource group name]</rgn>
    testvm-eus-01_OsDisk_1  Microsoft.Compute/disks                 <rgn>[sandbox resource group name]</rgn>
    

    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 脚本自动执行这些任务。