練習 - 控制資源的部署順序
在此單元中,您將從執行一些基本設定工作開始。 在 Visual Studio Code 中,您會將終端工作階段連線到免費 Azure 沙箱環境所提供的 Azure 訂用帳戶。 這麼做可讓您向 Azure 驗證命令。
然後,您會執行基本的 ARM 範本來佈建 Linux 虛擬機器 (VM)。 部署完成之後,您會驗證 VM 是否正在執行且可連線。
雖然使用 VM 是一個常見工作,但您發現 VM 資源要求網路和儲存體元件必須存在,才能建立 VM。 您會查看 dependsOn
建構如何讓您能夠設定佈建資源的順序。
設定
在這裡,您會開啟 Visual Studio Code、建立 PowerShell 工作階段,並連線到免費 Azure 沙箱環境所提供的 Azure 訂用帳戶。
在此課程模組期間,您必須執行這些設定工作一次。 如果您登出或在稍後練習中變成中斷連線,則可回來參考這些步驟。
在 Visual Studio Code 中開啟 PowerShell
打開 Visual Studio Code。
使用 [終端機] 功能表開啟終端機視窗。
如果終端機視窗右側的下拉式功能表顯示 pwsh,表示您有正確的殼層可使用,因此可以跳到下一節。
否則,請選取下拉式功能表,然後選擇 [選取預設殼層]。
選取 pwsh。
選取終端機中的 +,以 pwsh 作為殼層來建立新的終端機。
登入 Azure
執行
Connect-AzAccount
以登入帳戶。Connect-AzAccount
瀏覽器視窗隨即出現。
選取您用來啟用沙箱的帳戶,並在出現提示時關閉瀏覽器視窗。
設定有效的訂用帳戶
執行
Get-AzSubscription
,以取得適用於沙箱環境的訂用帳戶識別碼。Get-AzSubscription
尋找
Concierge Subscription
,並複製第二個資料行。 其看起來會像 cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0。執行
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 及執行所需的所有資源。
執行下列
curl
命令以下載 ARM 範本:curl -O 'https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json'
執行
ConvertTo-SecureString
Cmdlet,並將結果指派給名為$secure
的 PowerShell 變數:$secure = "insecurepassword123!" | ConvertTo-SecureString -AsPlainText -Force
現在您已有加密的密碼版本,接下來可以傳遞部署指令碼。
執行
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 連線。 若要這麼做︰
執行
Invoke-Expression
命令以透過 SSH 連線到 VM:Invoke-Expression (Get-AzResourceGroupDeployment -Name azuredeploy -ResourceGroupName <rgn>your resource group</rgn>).outputs.sshCommand.value
出現提示時,輸入
yes
以繼續連線。 然後輸入系統管理員密碼,insecurepassword123!
。重要
實際上,請妥善保管密碼。 您也可以使用公開金鑰驗證,這通常比使用密碼更安全。
從您與 VM 的 SSH 連線,執行
hostname
以列印 VM 的主機名稱:hostname
您會看到 VM 的內部主機名稱,
vm1
:vm1
執行
exit
以離開您的 SSH 工作階段。exit
恭喜,您已經使用 ARM 範本,成功部署 Linux VM。 VM 是包含相依資源的常見資源類型。
設定
在這裡,您會開啟 Visual Studio Code、建立終端工作階段,並連線到免費 Azure 沙箱環境所提供的 Azure 訂用帳戶。
在此課程模組期間,您必須執行這些設定工作一次。 如果您登出或在稍後練習中變成中斷連線,則可回來參考這些步驟。
在 Visual Studio Code 中開啟殼層
打開 Visual Studio Code。
使用 [終端機] 功能表開啟終端機視窗。
如果下拉式功能表顯示您慣用的殼層 (例如 bash 或 zsh),則您可以跳到下一節。
否則,請選取下拉式功能表,然後選擇 [選取預設殼層]。
選取所需的殼層類型。
選取終端中的 []+,以使用您選取的殼層類型來建立新的終端。
登入 Azure
從終端機,執行
az login
:az login
瀏覽器視窗隨即出現。
選取您用來啟用沙箱的帳戶,並在出現提示時關閉瀏覽器視窗。
設定有效的訂用帳戶
執行下列 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 及執行所需的所有資源。
執行下列
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
執行
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 連線。 若要這麼做︰
執行下列
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
執行下列
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
再次執行命令,這次使用
$()
語法來執行 SSH 命令:$(az deployment group show \ --name azuredeploy \ --query properties.outputs.sshCommand.value \ --output tsv)
出現提示時,輸入
yes
以繼續連線。 然後輸入系統管理員密碼,insecurepassword123!
。重要
實際上,請妥善保管密碼。 您也可以使用公開金鑰驗證,這通常比使用密碼更安全。
從您與 VM 的 SSH 連線,執行
hostname
以列印 VM 的主機名稱:hostname
您會看到 VM 的內部主機名稱,
vm1
:vm1
執行
exit
以離開您的 SSH 工作階段。exit
恭喜,您已經使用 ARM 範本,成功部署 Linux VM。 VM 是包含相依資源的常見資源類型。