練習 - 授權您的服務主體部署
在先前的練習中,您已建立網站部署管線的服務主體,並測試您是否可以使用其金鑰登入。 現在您已準備好將服務主體存取權授與您的 Azure 環境。 在此練習中,您將建立服務主體的角色指派,然後使用服務主體來部署 Bicep 檔案。
在此過程中,您將會:
- 以您自己的使用者帳戶登入。
- 建立您公司網站的資源群組。
- 建立角色指派,以允許服務主體將資源部署至資源群組。
- 以服務主體的形式登入,並部署 Bicep 檔案,以建立公司的網站資源。
- 驗證部署。
- 清除資源群組和服務主體。
以您的使用者帳戶登入
在先前的練習中,您已使用服務主體登入,然後登出。您必須再次以您自己的使用者帳戶登入,以便您可以遵循此練習中的下一個步驟。
在 Visual Studio Code 的 Azure Cloud Shell (bash) 終端中,執行下列命令來登入 Azure:
az login
在開啟的瀏覽器中,登入您的 Azure 帳戶。
在 Visual Studio Code 的 Azure Cloud Shell (PowerShell) 終端中,執行下列命令來登入 Azure:
Connect-AzAccount
在開啟的瀏覽器中,登入您的 Azure 帳戶。
建立資源群組
現在您將建立資源群組,以包含玩具公司的網站資源。
在 Visual Studio Code 終端機中執行此 Azure CLI 命令以建立資源群組:
az group create --name ToyWebsite --location eastus
查看上一個命令的 JSON 輸出。 它包含名為
id
的屬性,也就是資源群組的識別碼。 在安全的地方複製此識別碼。 稍後您將會用到此資訊。
在 Visual Studio Code 終端機中執行此 Azure PowerShell 命令以建立資源群組:
New-AzResourceGroup -Name ToyWebsite -Location eastus
查看上一個命令的 JSON 輸出。 它包含名為
ResourceId
的屬性,也就是資源群組的識別碼。 在安全的地方複製此識別碼。 稍後您將會用到此資訊。
建立角色指派
針對網站的部署管線,您決定建立具有下列詳細資料的角色指派:
- [受託人]:您在前一個練習中建立的服務主體。
- [角色]:參與者內建的角色。
- [範圍]:您在上一個步驟中建立的資源群組。
在 Visual Studio Code 終端機中執行下列 Azure CLI 命令,以建立角色指派。 使用您稍早複製的值取代預留位置。
az role assignment create \
--assignee APPLICATION_ID \
--role Contributor \
--scope RESOURCE_GROUP_ID \
--description "The deployment pipeline for the company's website needs to be able to create resources within the resource group."
在 Visual Studio Code 終端機中執行下列 Azure CLI 命令,以建立角色指派。 使用您稍早複製的值取代預留位置。
New-AzRoleAssignment `
-ApplicationId APPLICATION_ID `
-RoleDefinitionName Contributor `
-Scope RESOURCE_GROUP_ID `
-Description "The deployment pipeline for the company's website needs to be able to create resources within the resource group."
建立 Bicep 檔案
您先前已建立可部署網站資源的 Bicep 檔案。 在這裡,您可以儲存此檔案,以便使用服務主體進行測試。
建立名為 main.bicep 的新檔案。
將下列內容新增至 main.bicep 檔案。 很快就會開始部署範本。
@description('The Azure region into which the resources should be deployed.') param location string = resourceGroup().location @description('The name of the App Service app.') param appServiceAppName string = 'toywebsite${uniqueString(resourceGroup().id)}' @description('The name of the App Service plan SKU.') param appServicePlanSkuName string = 'F1' var appServicePlanName = 'toy-website-plan' var applicationInsightsInstanceName = 'toy-website-insights' resource appServicePlan 'Microsoft.Web/serverFarms@2020-06-01' = { name: appServicePlanName location: location sku: { name: appServicePlanSkuName } } resource applicationInsightsInstance 'Microsoft.Insights/components@2018-05-01-preview' = { name: applicationInsightsInstanceName location: location kind: 'web' properties: { Application_Type: 'web' } } resource appServiceApp 'Microsoft.Web/sites@2020-06-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { appSettings: [ { name: 'APPINSIGHTS_INSTRUMENTATIONKEY' value: applicationInsightsInstance.properties.InstrumentationKey } { name: 'APPLICATIONINSIGHTS_CONNECTION_STRING' value: applicationInsightsInstance.properties.ConnectionString } ] } } }
儲存對檔案所做的變更。 您可以選取 [檔案]>[另存新檔],或在 Windows 中選取Ctrl+S (macOS 為 ⌘+S)。 請務必記住您儲存檔案的位置。 例如,您可能需要建立指令碼資料夾來儲存檔案。
使用服務主體部署 Bicep 檔案
您目前沒有部署管線,因此您將模擬管線部署 Bicep 檔案的用途。
在 Visual Studio Code 終端機中執行下列 Azure CLI 命令,以使用服務主體的認證登入。 將您在前一個練習中複製的值取代預留位置。
az login --service-principal \ --username APPLICATION_ID \ --password SERVICE_PRINCIPAL_KEY \ --tenant TENANT_ID
執行下列 Azure CLI 命令以部署 Bicep 檔案:
az deployment group create \ --resource-group ToyWebsite \ --template-file main.bicep
部署可能需要一到兩分鐘的時間才能完成,然後您會看到成功的部署。
在 Visual Studio Code 終端機中執行下列 Azure PowerShell 命令,以安全地提示您提供服務主體的認證。 使用上一個練習中的服務主體應用程式識別碼和金鑰,分別提供使用者名稱和密碼。
$credential = Get-Credential
在 Visual Studio Code 終端機中執行下列 Azure PowerShell 命令,以使用服務主體的認證登入。 用您稍早複製的值取代
TENANT_ID
預留位置。Connect-AzAccount -ServicePrincipal ` -Credential $credential ` -Tenant TENANT_ID
執行下列 Azure PowerShell 命令以部署 Bicep 檔案:
New-AzResourceGroupDeployment -ResourceGroupName ToyWebsite -TemplateFile main.bicep
部署可能需要一到兩分鐘的時間才能完成,然後您會看到成功的部署。
檢查部署
使用 Azure 入口網站檢查您部署的資源,並檢查每個部署的結果。
前往 Azure 入口網站。
在左窗格中,選取 [資源群組]。
選取 [ToyWebsite]。
選取 [部署] 以查看成功的部署。
您也可能會看到名為 [失敗 - 異常 - 警示 - 規則 - 部署] 的部署。 Application Insights 會自動建立此部署。
選取 [主要] 部署以查看已部署的資源,然後展開 [部署詳細資料]。
在此情況下,會列出 App Service 方案、應用程式和 Application Insights 執行個體。
請注意,此部署不會有任何異常。 雖然服務主體已初始化,但它與任何其他的 Bicep 部署一樣。
清除資源群組和服務主體
您已成功建立服務主體和角色指派,且您已使用 Bicep 檔案來部署網站的資源。 您現在可以移除您所建立的資源。
使用下列命令登出服務主體的帳戶:
az logout
執行下列命令,以您自己的使用者帳戶重新登入 Azure:
az login
在開啟的瀏覽器中,登入您的 Azure 帳戶。
執行下列 Azure CLI 命令以刪除資源群組、其內容和角色指派:
az group delete --name ToyWebsite
當系統提示您確認時,請輸入
y
。執行下列命令來刪除服務主體。 使用前一個練習中複製的應用程式識別碼取代
APPLICATION_ID
的預留位置:az ad sp delete --id APPLICATION_ID
使用下列命令登出服務主體的帳戶:
Logout-AzAccount
執行下列命令,以您自己的使用者帳戶重新登入 Azure:
Connect-AzAccount
在開啟的瀏覽器中,登入您的 Azure 帳戶。
執行下列 Azure PowerShell 命令以刪除資源群組、其內容和角色指派:
Remove-AzResourceGroup -Name ToyWebsite
當系統提示您確認時,請輸入
y
。執行下列命令來刪除服務主體。 使用前一個練習中複製的應用程式識別碼取代
APPLICATION_ID
的預留位置:Remove-AzADServicePrincipal -ApplicationId APPLICATION_ID
當系統提示您確認時,請輸入
y
。