練習 - 重構範本以使用模組
在此練習中,您將更新先前建立的 Bicep 範本,使其針對 Azure App Service 資源使用模組。 模組有助於讓主要範本的用途更加明確。 如果您想要的話,可以在其他範本中重複使用 App Service 模組。
在此過程中,您將會:
- 加入新的模組,並將 App Service 資源移至其中。
- 從主要 Bicep 範本參照該模組。
- 新增 App Service 應用程式主機名稱的輸出,然後從模組和範本部署發出該輸出。
- 測試部署以確定範本有效。
加入新的模組檔案
在 Visual Studio Code 中,於 main.bicep 檔案建立所在的相同資料夾中建立名為 modules 的新資料夾。 在 modules 資料夾中,建立名為 appService.bicep 的檔案。 儲存檔案。
在 appService.bicep 檔案中新增下列內容:
param location string param appServiceAppName string @allowed([ 'nonprod' 'prod' ]) param environmentType string var appServicePlanName = 'toy-product-launch-plan' var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1' resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = { name: appServicePlanName location: location sku: { name: appServicePlanSkuName } } resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true } }
請注意,您複製了 main.bicep 範本中的參數和變數,因為 appService.bicep 範本必須是獨立的。
儲存對檔案所做的變更。 請注意,Visual Studio Code 不會顯示任何紅色波浪線來指出遺漏變數、遺漏參數或資源無效的警告。
從父代範本新增模組參照
現在您已有完整的模組可部署 App Service 資源,因此您可以參照父代範本內的模組了。 因為模組會部署 App Service 資源,所以您可以從父代範本中刪除相關聯的資源和變數。
在 main.bicep 檔案中,刪除 App Service 資源以及
appServicePlanName
和appServicePlanSkuName
變數定義。 請勿刪除與 App Service 參數,因為您仍然需要這些參數。 此外,請勿刪除儲存體帳戶的參數、變數或資源。在 main.bicep 檔案底部新增下列 Bicep 程式碼:
module appService 'modules/appService.bicep' = { name: 'appService' params: { location: location appServiceAppName: appServiceAppName environmentType: environmentType } }
請注意,您要藉由參照父代範本中的參數來指定模組的參數。
儲存對檔案所做的變更。
以輸出的方式新增主機名稱
在 appService.bicep 檔案底部新增下列 Bicep 程式碼:
output appServiceAppHostName string = appServiceApp.properties.defaultHostName
此程式碼會宣告此模組 (將會命名為
appServiceAppHostName
) 的輸出會是string
類型。 輸出會從 App Service 應用程式的defaultHostName
屬性取得其值。儲存對檔案所做的變更。
此輸出會在將作為模組的 Bicep 檔案內加以宣告,因此只能供父代範本使用。 您也需要將輸出傳回給已部署該範本的人員。
開啟 main.bicep 檔案,並在檔案底部新增下列程式碼:
output appServiceAppHostName string = appService.outputs.appServiceAppHostName
請注意,此輸出的宣告方式與模組中的輸出類似。 但這次您要參照模組的輸出,而不是資源屬性。
儲存對檔案所做的變更。
驗證 Bicep 檔案
完成上述所有變更之後,main.bicep 檔案看起來應該像下列範例:
param location string = 'eastus'
param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}'
param appServiceAppName string = 'toylaunch${uniqueString(resourceGroup().id)}'
@allowed([
'nonprod'
'prod'
])
param environmentType string
var storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS'
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: storageAccountName
location: location
sku: {
name: storageAccountSkuName
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
module appService 'modules/appService.bicep' = {
name: 'appService'
params: {
location: location
appServiceAppName: appServiceAppName
environmentType: environmentType
}
}
output appServiceAppHostName string = appService.outputs.appServiceAppHostName
appService.bicep 檔案看起來應該像下列範例:
param location string
param appServiceAppName string
@allowed([
'nonprod'
'prod'
])
param environmentType string
var appServicePlanName = 'toy-product-launch-plan'
var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'
resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
name: appServicePlanName
location: location
sku: {
name: appServicePlanSkuName
}
}
resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = {
name: appServiceAppName
location: location
properties: {
serverFarmId: appServicePlan.id
httpsOnly: true
}
}
output appServiceAppHostName string = appServiceApp.properties.defaultHostName
如果任一檔案不符,請複製範例,或是將您的範本調整為與範例相符。
部署更新後的 Bicep 範本
在終端中執行下列 Azure CLI 命令。
az deployment group create \
--template-file main.bicep \
--parameters environmentType=nonprod
在終端內執行下列 Azure PowerShell 命令。
New-AzResourceGroupDeployment `
-TemplateFile main.bicep `
-environmentType nonprod
檢查您的部署
在瀏覽器中,返回 Azure 入口網站。 移至您的資源群組;現在有兩個成功的部署。
選取 [2 個成功] 連結。 請注意,您在清單中有一個名為 main 的部署,以及一個名為 appService 的新部署。
選取名為 main 的部署,然後選取 [部署詳細資料],以展開已部署的資源清單。
請注意,我們的模組部署會出現在清單中。
選取 [輸出] 索引標籤。請注意,其中會有一個名為 appServiceAppHostName 的輸出,其具有您 App Service 應用程式的主機名稱。 將主機名稱複製到剪貼簿。
開啟新的瀏覽器索引標籤,並貼上您已複製的主機名稱。 您應該會看到預設的 App Service 歡迎頁面。
恭喜! 您已成功地為絕佳應用程式部署好基礎。