练习 - 使用 Azure PowerShell 通过脚本创建 Azure 资源

已完成

在本单元中,你将继续使用开发 Linux 管理员工具的公司示例。 目标是使用 Linux 虚拟机 (VM) 允许潜在客户测试软件。 已设置一个资源组,是时候创建 VM 了。

贵公司在大型 Linux 贸易展览会上获得了一个展位。 你计划在演示区配设三台终端机,每台与单独的 Linux VM 进行连接。 你必须在每天结束时删除 VM,再重新创建它们,使其每天早上焕然一新。 忙碌一天后手动创建 VM 容易出错,因此需要编写 PowerShell 脚本来自动执行 VM 创建过程。

编写用于创建虚拟机的脚本

按照以下步骤在 Azure Cloud Shell 中编写脚本,以自动创建虚拟机。

注意

通常,使用具有 Connect-AzAccount 的凭据向 Azure 进行身份验证,但在 Cloud Shell 中,已进行身份验证,因此不需要执行此步骤。

  1. 切换到主文件夹:

    Set-Location -Path $HOME
    
  2. 创建新的 PowerShell 脚本文件:

    New-Item -Name ConferenceDailyReset.ps1 -ItemType File
    
  3. 打开集成的 Visual Studio Code (VS Code) 编辑器:

    code ./ConferenceDailyReset.ps1
    

    提示

    如果你想使用 vim、nano 和 emacs 中的一种,集成的 Cloud Shell 编辑器还可支持这些编辑器。

  4. 为资源组名称定义参数:

    将以下代码行添加到脚本:

    param (
        [string]$ResourceGroupName
    )
    
  5. 提示输入 VM 管理员凭据:

    $adminCredential = Get-Credential -Message 'Enter a username and password for the VM administrator.'
    
  6. 创建一个执行三次的循环:

    $vms = 'web','app','sql'
    foreach ($vm in $vms) {
        $vm
    }
    
  7. 在该循环中,返回每个 VM 的名称:

    Write-Output "Creating VM: $vm"
    
  8. 使用 $vm 变量创建 VM:

    $azVmParams = @{
        ResourceGroupName = $ResourceGroupName
        Name              = $vm
        Credential        = $adminCredential
        Image             = 'Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest'
        OpenPorts         = 22
    }
    New-AzVm @azVmParams
    
  9. 保存文件:

    若要保存脚本,请使用编辑器右上角的省略号 (...) 上下文菜单或 Ctrl + S 键盘快捷方式。

完成后的脚本

完成后的脚本应如以下示例所示:

param (
    [string]$ResourceGroupName
)

$adminCredential = Get-Credential -Message 'Enter a username and password for the VM administrator.'

$vms = 'web','app','sql'

foreach ($vm in $vms) {

    Write-Output "Creating VM: $vm"

    $azVmParams = @{
        ResourceGroupName = $ResourceGroupName
        Name              = $vm
        Credential        = $adminCredential
        Image             = 'Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest'
        OpenPorts         = 22
    }
    New-AzVm @azVmParams
}

确认脚本如上述示例中的代码一样后,使用编辑器右上角的省略号 (...) 上下文菜单或 Ctrl + Q 键盘快捷方式关闭编辑器。

运行脚本

  1. 使用以下命令执行该脚本:

    ./ConferenceDailyReset.ps1 -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
    
  2. 等待完成。 此脚本需要几分钟才能完成。

  3. 验证 VM。 脚本完成后,通过列出资源组中的 VM 来验证它是否已成功完成:

    Get-AzVM -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
    

    应会看到三个 VM,每个 VM 都有唯一的名称。

你已成功创建一个脚本,该脚本可自动创建三个 VM,每个 VM 位于特定资源组中,确保它们已准备好在贸易展览会进行日常演示。 尽管脚本非常简洁明了,但它显著加快了原本通过 Azure 门户手动执行会既耗时又容易出错的流程。