練習 - 使用指令碼透過 Azure PowerShell 建立 Azure 資源
在此單元中,您會繼續進行開發 Linux 系統管理工具的公司範例。 目標是使用 Linux 虛擬機器 (VM),讓潛在客戶可測試您的軟體。 設定好資源群組之後,即可建立 VM 了。
您的公司在大型 Linux 商展上獲得了一個攤位。 您計畫設定一個有三個終端機的示範區域,每個終端機會連線到不同的 Linux VM。 每天結束時,您必須刪除並重新建立 VM,以在每天早上有全新的開始。 經過一整天的手動建立 VM 很容易出錯,因此您需要編寫 PowerShell 指令碼來自動執行 VM 建立流程。
撰寫指令碼以建立虛擬機器
請依照下列步驟在 Azure Cloud Shell 中撰寫指令碼,以自動建立虛擬機器。
注意
您通常需要使用認證和 Connect-AzAccount
向 Azure 進行驗證,但在 Cloud Shell 中,您已經過驗證,因此無需執行此步驟。
切換到主資料夾:
Set-Location -Path $HOME
建立新的 PowerShell 指令碼檔案:
New-Item -Name ConferenceDailyReset.ps1 -ItemType File
開啟整合式 Visual Studio Code (VS Code) 編輯器:
code ./ConferenceDailyReset.ps1
提示
如果您偏好使用這些編輯器的其中一個,整合式 Cloud Shell 編輯器也支援 vim、nano 和 emacs。
定義資源群組名稱的參數:
在您的指令碼中新增以下文字行:
param ( [string]$ResourceGroupName )
VM 系統管理員認證的提示:
$adminCredential = Get-Credential -Message 'Enter a username and password for the VM administrator.'
建立迴圈以執行三次:
$vms = 'web','app','sql' foreach ($vm in $vms) { $vm }
在迴圈中,傳回每個 VM 的名稱:
Write-Output "Creating VM: $vm"
使用
$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 + 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 鍵盤快速鍵關閉編輯器。
執行指令碼
使用下列命令執行指令碼:
./ConferenceDailyReset.ps1 -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
等候完成。 指令碼需要幾分鐘才能完成。
驗證 VM。 指令碼完成後,請列出資源群組中的 VM,以驗證是否已順利完成:
Get-AzVM -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
您應該會看到三個 VM 各有一個唯一的名稱。
您已成功建立指令碼,可自動建立三個 VM,每個 VM 都位於特定資源群組中,請確保其已準備就緒可在商展中進行每日示範。 雖然指令碼簡短易懂,但卻大幅加快了流程的速度,否則若透過 Azure 入口網站手動執行該流程,可能會非常耗時且容易出錯。