練習 - 在 Azure PowerShell 中使用指令碼建立 Azure 資源

已完成

複習我們最初的案例:建立 VM 來測試 CRM 軟體。 當新的組建可使用時,我們要啟用新的 VM,以便從乾淨映像測試完整的安裝體驗。 完成之後,我們要刪除 VM。

讓我們試試建立 VM 的命令。

使用 Azure PowerShell 建立 Linux VM

由於我們正在使用 Azure 沙箱,所以您不需要建立資源群組。 改用 [sandbox resource group name] 資源群組。 此外,也要注意位置限制。

再來用 PowerShell 建立新的 Azure VM。

  1. 使用 New-AzVm Cmdlet 建立 VM。

    • 使用 [sandbox resource group name] 資源群組。

    • 為 VM 命名。 您通常會想要使用有意義的名稱,以指出 VM 的用途、位置與 (如有多部 VM) 執行個體編號。 我們將「testvm-eus-01」用於「美國東部測試 VM,執行個體 1」。根據您放置 VM 的位置,提供您自己的名稱。

    • 從下列 Azure 沙箱提供的清單選取您附近的位置。 如果您要使用複製並貼上,請務必變更下列範例命令中的值。

      • westus2
      • 美國中南部
      • centralus
      • eastus
      • westeurope
      • 東南亞
      • japaneast
      • brazilsouth
      • australiasoutheast
      • centralindia
    • 針對映像使用「Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest」。 此映像為 Ubuntu Linux。

    • 使用 Get-Credential Cmdlet,並將結果傳至 Credential 參數。

      重要

      請查看 Linux VM 常見問題集以了解使用者名稱與密碼的限制。 密碼長度必須在 12 至 123 個字元之間,並符合下列四種複雜性需求的其中三種:

      • 包含小寫字元
      • 包含大寫字元
      • 包含數字
      • 包含特殊字元 (Regex match [\W_])
    • 新增 -OpenPorts 參數並傳遞 "22" 作為連接埠。 此連接埠可讓我們以 SSH 連線至機器。

    • 建立公用 IP 位址名稱。 您會使用此名稱來建立並尋找靜態 IP 位址以登入機器。

    New-AzVm -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name "testvm-eus-01" -Credential (Get-Credential) -Location "eastus" -Image Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest -OpenPorts 22 -PublicIpAddressName "testvm-eus-01"
    

    提示

    您可以使用 [複製] 按鈕將命令複製到剪貼簿。 要貼上命令,請在 Cloud Shell 終端中,以滑鼠右鍵按一下新行,然後選取 [貼上],或使用 Shift+Insert 鍵盤快速鍵 (在 macOS 上為 ⌘+V)。

  2. 建立使用者名稱和密碼,然後按 Enter。 PowerShell 開始建立 VM。

  3. 建立 VM 需要幾分鐘的時間來完成。 完成後,您可以加以查詢,並將 VM 物件指派給變數 ($vm)。

    $vm = (Get-AzVM -Name "testvm-eus-01" -ResourceGroupName <rgn>[sandbox resource group name]</rgn>)
    
  4. 查詢該值得出關於虛擬機器的資訊。

    $vm
    

    您應該會看到如下的輸出:

    ResourceGroupName : <rgn>[sandbox resource group name]</rgn>
    Id                : /subscriptions/00000000-0000-0000-0000-000000000000/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}
    
  5. 您可以透過點 (.) 標記法,存取複雜物件。 舉例來說,若要查看 VMSize 物件中與 HardwareProfile 區段關聯的屬性,請執行下列命令:

    $vm.HardwareProfile
    
  6. 或者,若要取得其中一個磁碟的相關資訊,請執行下列命令:

    $vm.StorageProfile.OsDisk
    
  7. 您甚至可以將 VM 物件傳入其他 Cmdlet。 例如,執行下列命令會顯示您 VM 的所有可用大小:

    $vm | Get-AzVMSize
    
  8. 現在,執行下列命令以取得您的公用 IP 位址:

    az vm list-ip-addresses -n testvm-eus-01 -g <rgn>[sandbox resource group name]</rgn>
    
  9. 使用 IP 位址,您可以透過 SSH 連線至 VM。 舉例來說,如果您的使用者名稱為「bob」,且 IP 位址是「205.22.16.5」,執行此命令將會連線至 Linux 機器:

    ssh bob@205.22.16.5
    

    輸入 exit 以登出。

刪除 VM

若要嘗試更多其他命令,要先刪除虛擬機器。 首先,我們需要將其關閉 (如果系統提示您繼續,請輸入 Y):

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

當 VM 停止時,請執行 Remove-AzVM Cmdlet 來刪除 VM (如果系統提示您繼續,請輸入 Y):

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

執行此命令以列出您資源群組中的所有資源:

Get-AzResource -ResourceGroupName $vm.ResourceGroupName | Format-Table

您應該會看到數個仍存在的資源 (磁碟、虛擬網路等等)。

Microsoft.Compute/disks
Microsoft.Network/networkInterfaces
Microsoft.Network/networkSecurityGroups
Microsoft.Network/publicIPAddresses
Microsoft.Network/virtualNetworks

Remove-AzVM 命令只會刪除 VM。 它並未清理其他任何資源。 目前我們希望只刪除資源群組本身就好。 不過,讓我們來練習手動清除。 您應該會看到命令中的模式。

  1. 刪除網路介面:

    $vm | Remove-AzNetworkInterface –Force
    
  2. 刪除受控 OS 磁碟:

    Get-AzDisk -ResourceGroupName $vm.ResourceGroupName -DiskName $vm.StorageProfile.OSDisk.Name | Remove-AzDisk -Force
    
  3. 接著,刪除虛擬網路:

    Get-AzVirtualNetwork -ResourceGroupName $vm.ResourceGroupName | Remove-AzVirtualNetwork -Force
    
  4. 刪除網路安全性群組:

    Get-AzNetworkSecurityGroup -ResourceGroupName $vm.ResourceGroupName | Remove-AzNetworkSecurityGroup -Force
    
  5. 最後,刪除公用 IP 位址:

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

我們現在應該處理掉所有之前建立的資源了。 請檢查資源群組以確保萬無一失。 雖然我們在此執行許多手動命令,但更好的方法是撰寫指令碼。 然後,我們可以稍後重複使用此邏輯建立或刪除 VM。 讓我們使用 PowerShell 來查看指令碼。