練習 - 使用指令碼透過 Azure PowerShell 建立 Azure 資源

已完成

在本單元中,您將繼續使用一個開發 Linux 系統管理工具的公司範例。 目標是使用 Linux 虛擬機器 (VM),讓潛在客戶可測試您的軟體。 設定好資源群組之後,即可建立 VM 了。

您的公司在大型 Linux 商展上獲得了一個攤位。 您計畫設定一個有三個終端機的示範區域,每個終端機會連線到不同的 Linux VM。 每天結束時,您必須刪除並重新建立 VM,以在每天早上有全新的開始。 經過一整天的手動建立 VM 很容易出錯,因此您需要編寫 PowerShell 指令碼來自動執行 VM 建立流程。

備註

此練習為選擇性項目。 如果您想要完成此練習,您必須先建立 Azure 訂用帳戶,才能開始。 如果您沒有 Azure 帳戶,或目前不想建立帳戶,您可以閱讀指示,以便瞭解所呈現的資訊。

撰寫指令碼以建立虛擬機器

請依照下列步驟在 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
    

    提示

    如果您偏好使用這些編輯器的其中一個,整合式 Cloud Shell 編輯器也支援 vim、nano 和 emacs。

  4. 定義資源群組名稱的參數:

    在您的指令碼中新增以下文字行:

    param (
        [string]$ResourceGroupName
    )
    
  5. 要求輸入虛擬機系統管理員的認證:

    $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 myResourceGroupName
    
  2. 等候完成。 指令碼需要幾分鐘才能完成。

  3. 驗證 VM。 指令碼完成後,請列出資源群組中的 VM,以驗證是否已順利完成:

    Get-AzVM -ResourceGroupName myResourceGroupName
    

    您應該會看到三個 VM 各有一個唯一的名稱。

您已成功建立了自動化的指令碼,該指令碼能建立三個虛擬機器,每個都位於特定的資源群組中,確保它們已準備好可以在商展中進行每日展示。 雖然指令碼簡短易懂,但卻大幅加快了流程的速度,否則若透過 Azure 入口網站手動執行該流程,可能會非常耗時且容易出錯。