練習 - 控制資源的部署順序

已完成

在此單元中,您將從執行一些基本設定工作開始。 在 Visual Studio Code 中,您會將終端工作階段連線到免費 Azure 沙箱環境所提供的 Azure 訂用帳戶。 這麼做可讓您向 Azure 驗證命令。

然後,您會執行基本的 ARM 範本來佈建 Linux 虛擬機器 (VM)。 部署完成之後,您會驗證 VM 是否正在執行且可連線。

雖然使用 VM 是一個常見工作,但您發現 VM 資源要求網路和儲存體元件必須存在,才能建立 VM。 您會查看 dependsOn 建構如何讓您能夠設定佈建資源的順序。

設定

在這裡,您會開啟 Visual Studio Code、建立 PowerShell 工作階段,並連線到免費 Azure 沙箱環境所提供的 Azure 訂用帳戶。

在此課程模組期間,您必須執行這些設定工作一次。 如果您登出或在稍後練習中變成中斷連線,則可回來參考這些步驟。

在 Visual Studio Code 中開啟 PowerShell

  1. 打開 Visual Studio Code。

  2. 使用 [終端機] 功能表開啟終端機視窗。

  3. 如果終端機視窗右側的下拉式功能表顯示 pwsh,表示您有正確的殼層可使用,因此可以跳到下一節。

    Screenshot of Terminal window, terminal type.

  4. 否則,請選取下拉式功能表,然後選擇 [選取預設殼層]

  5. 選取 pwsh

    Screenshot that shows selecting a shell from the drop-down menu.

  6. 選取終端機中的 +,以 pwsh 作為殼層來建立新的終端機。

登入 Azure

  1. 執行 Connect-AzAccount 以登入帳戶。

    Connect-AzAccount
    

    瀏覽器視窗隨即出現。

  2. 選取您用來啟用沙箱的帳戶,並在出現提示時關閉瀏覽器視窗。

設定有效的訂用帳戶

  1. 執行 Get-AzSubscription,以取得適用於沙箱環境的訂用帳戶識別碼。

    Get-AzSubscription
    

    尋找 Concierge Subscription,並複製第二個資料行。 其看起來會像 cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0

  2. 執行 Set-AzContext,將有效訂用帳戶變更為指引訂用帳戶。

    注意

    請務必將「{訂用帳戶識別碼}」取代為您在最後一個命令中所得到的指引訂用帳戶識別碼。

    $subscription = Get-AzSubscription -SubscriptionId {Your subscription ID}
    Set-AzContext $subscription
    

設定預設的資源群組

一般來說,當您執行 Azure CLI 命令時,需要指定資源群組。

沙箱會為您提供預設的資源群組。 若要讓後續的 Azure CLI 命令更容易執行,請在這裡設定預設的資源群組。

執行 Set-AzDefault Cmdlet,以設定預設的資源群組。

Set-AzDefault -ResourceGroupName <rgn>resource group name</rgn>

注意

一般來說,當您使用 PowerShell 在 Azure 上部署資源時,您需要指定資源群組。 您會使用 Set-AzDefault,透過設定部署的內容來略過此需求。

典型 VM 部署的內容

當您部署 VM 時,請記住,需要將其與數個資源一起部署,才能讓該 VM 正常運作。

以下是通常需要與 VM 一起部署之資源類型的簡短摘要:

  • Microsoft.Storage/storageAccounts。 儲存體帳戶會提供適用於作業系統與檔案的磁碟空間。
  • Microsoft.Network/publicIPAddresses。 公用 IP 位址可讓您從網際網路連線到 VM。
  • Microsoft.Network/networkSecurityGroups。 網路安全性群組包含用來處理虛擬網路之輸入和輸出流量的規則。
  • Microsoft.Network/virtualNetworks。 您的 VM 必須放在虛擬網路中。 此資源需要在其之前部署網路安全性群組。
  • Microsoft.Network/networkInterfaces。 此資源相依於其他兩個資源:公用 IP 位址和虛擬網路。
  • Microsoft.Compute/virtualMachines。 虛擬機器是您想要部署的主要資源。 其取決於兩個不同的資源:儲存體帳戶和網路介面。

部署 Linux VM

在這裡,您將從我們提供的 GitHub 存放庫下載 ARM 範本。 該範本會佈建一部 Linux VM 及執行所需的所有資源。

  1. 執行下列 curl 命令以下載 ARM 範本:

    curl -O 'https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json'
    
  2. 執行 ConvertTo-SecureString Cmdlet,並將結果指派給名為 $secure 的 PowerShell 變數:

    $secure = "insecurepassword123!" | ConvertTo-SecureString -AsPlainText -Force
    

    現在您已有加密的密碼版本,接下來可以傳遞部署指令碼。

  3. 執行 New-AzResourceGroupDeployment 命令以部署範本:

    New-AzResourceGroupDeployment `
      -TemplateFile "./azuredeploy.json" `
      -adminUsername "azureuser" `
      -vmName "vm1" `
      -adminPasswordOrKey $secure
    

    執行命令可能需要幾分鐘的時間。 在命令執行時,您可以視需要從個別的瀏覽器索引標籤檢查 ARM 範本

    透過搜尋 dependsOn 機碼來記下資源相依性。 例如,虛擬機器資源相依於網路介面:

    "type": "Microsoft.Compute/virtualMachines",
    "apiVersion": "2020-06-01",
    "name": "[parameters('vmName')]",
    "location": "[parameters('location')]",
    "dependsOn": [
      "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]"
    ],
    

檢查部署

驗證 VM 已佈建且可透過 SSH 連線。 若要這麼做︰

  1. 執行 Invoke-Expression 命令以透過 SSH 連線到 VM:

    Invoke-Expression (Get-AzResourceGroupDeployment -Name azuredeploy -ResourceGroupName <rgn>your resource group</rgn>).outputs.sshCommand.value
    

    出現提示時,輸入 yes 以繼續連線。 然後輸入系統管理員密碼,insecurepassword123!

    重要

    實際上,請妥善保管密碼。 您也可以使用公開金鑰驗證,這通常比使用密碼更安全。

  2. 從您與 VM 的 SSH 連線,執行 hostname 以列印 VM 的主機名稱:

    hostname
    

    您會看到 VM 的內部主機名稱,vm1:

    vm1
    
  3. 執行 exit 以離開您的 SSH 工作階段。

    exit
    

恭喜,您已經使用 ARM 範本,成功部署 Linux VM。 VM 是包含相依資源的常見資源類型。

設定

在這裡,您會開啟 Visual Studio Code、建立終端工作階段,並連線到免費 Azure 沙箱環境所提供的 Azure 訂用帳戶。

在此課程模組期間,您必須執行這些設定工作一次。 如果您登出或在稍後練習中變成中斷連線,則可回來參考這些步驟。

在 Visual Studio Code 中開啟殼層

  1. 打開 Visual Studio Code。

  2. 使用 [終端機] 功能表開啟終端機視窗。

  3. 如果下拉式功能表顯示您慣用的殼層 (例如 bashzsh),則您可以跳到下一節。

  4. 否則,請選取下拉式功能表,然後選擇 [選取預設殼層]

  5. 選取所需的殼層類型。

    Screenshot that shows selecting a shell from the drop-down menu.

  6. 選取終端中的 []+,以使用您選取的殼層類型來建立新的終端。

登入 Azure

  1. 從終端機,執行 az login

    az login
    

    瀏覽器視窗隨即出現。

  2. 選取您用來啟用沙箱的帳戶,並在出現提示時關閉瀏覽器視窗。

設定有效的訂用帳戶

執行下列 az account set 命令,以將 Azure 沙箱環境設定為您使用中的訂用帳戶:

az account set -s "Concierge Subscription"

注意

如果命令失敗,請執行 az account list --refresh --all,然後重新執行 az account set 命令。

設定預設資源群組

一般來說,當您執行 Azure CLI 命令時,需要指定資源群組。

沙箱會為您提供預設的資源群組。 若要讓後續的 Azure CLI 命令更容易執行,請在這裡設定預設的資源群組。

執行下列 az configure 命令,以設定預設的資源群組:

az configure --defaults group=<rgn>resource group name</rgn>

典型 VM 部署的內容

當您部署 VM 時,請記住,需要將其與數個資源一起部署,才能讓該 VM 正常運作。

以下是通常需要與 VM 一起部署之資源類型的簡短摘要:

  • Microsoft.Storage/storageAccounts。 儲存體帳戶會提供適用於作業系統與檔案的磁碟空間。
  • Microsoft.Network/publicIPAddresses。 公用 IP 位址可讓您從網際網路連線到 VM。
  • Microsoft.Network/networkSecurityGroups。 網路安全性群組包含用來處理虛擬網路之輸入和輸出流量的規則。
  • Microsoft.Network/virtualNetworks。 您的 VM 必須放在虛擬網路中。 此資源需要在其之前部署網路安全性群組。
  • Microsoft.Network/networkInterfaces。 此資源相依於其他兩個資源:公用 IP 位址和虛擬網路。
  • Microsoft.Compute/virtualMachines。 虛擬機器是您想要部署的主要資源。 其取決於兩個不同的資源:儲存體帳戶和網路介面。

部署 Linux VM

在這裡,您將從我們提供的 GitHub 存放庫下載 Azure Resource Manager (ARM) 範本。 該範本會佈建一部 Linux VM 及執行所需的所有資源。

  1. 執行下列 wget 命令以下載 ARM 範本:

    wget https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json
    

    如果您尚未安裝 wget,可執行此 curl 命令:

    curl https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json > azuredeploy.json
    
  2. 執行 az deployment group create 命令以部署範本:

    az deployment group create \
      --template-file azuredeploy.json \
      --parameters adminUsername=azureuser vmName=vm1 adminPasswordOrKey='insecurepassword123!'
    

    執行命令可能需要幾分鐘的時間。 在命令執行時,您可以視需要從個別的瀏覽器索引標籤檢查 ARM 範本

    透過搜尋 dependsOn 機碼來記下資源相依性。 例如,虛擬機器資源相依於網路介面:

    "type": "Microsoft.Compute/virtualMachines",
    "apiVersion": "2020-06-01",
    "name": "[parameters('vmName')]",
    "location": "[parameters('location')]",
    "dependsOn": [
      "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]"
    ],
    

檢查部署

驗證 VM 已佈建且可透過 SSH 連線。 若要這麼做︰

  1. 執行下列 az deployment group list 命令,以列出您訂用帳戶中的部署群組:

    az deployment group list --output table
    

    您會看到一個名為 azuredeploy 的部署群組:

    Name         ResourceGroup                               State      Timestamp                         Mode
    -----------  ------------------------------------------  ---------  --------------------------------  -----------
    azuredeploy  learn-1ef901aa-3f6a-46aa-8e93-a7f11e5192b8  Succeeded  2020-11-24T17:55:39.762517+00:00  Incremental
    
  2. 執行下列 az deployment group show 命令,以顯示您可用來連線到 VM 的 SSH 命令:

    az deployment group show \
      --name azuredeploy \
      --query properties.outputs.sshCommand.value \
      --output tsv
    

    ARM 範本會在 output 區段中定義此屬性。 以下是範例:

    ssh azureuser@simplelinuxvm-a33zb3sc332ue.westus.cloudapp.azure.com
    
  3. 再次執行命令,這次使用 $() 語法來執行 SSH 命令:

    $(az deployment group show \
      --name azuredeploy \
      --query properties.outputs.sshCommand.value \
      --output tsv)
    

    出現提示時,輸入 yes 以繼續連線。 然後輸入系統管理員密碼,insecurepassword123!

    重要

    實際上,請妥善保管密碼。 您也可以使用公開金鑰驗證,這通常比使用密碼更安全。

  4. 從您與 VM 的 SSH 連線,執行 hostname 以列印 VM 的主機名稱:

    hostname
    

    您會看到 VM 的內部主機名稱,vm1:

    vm1
    
  5. 執行 exit 以離開您的 SSH 工作階段。

    exit
    

恭喜,您已經使用 ARM 範本,成功部署 Linux VM。 VM 是包含相依資源的常見資源類型。