更新部署堆疊中的資源

已完成

隨著應用程式的發展,其資源也會隨之演變。 如何在新增新服務和功能時更新部署堆疊及其受控資源? 哪些情況需要我們更新部署堆疊?

存款應用程式正在進行重大變更。 必須修改 Azure 資源屬性、需要新增新的資源,且需要移除現有的資源。 您需要深入了解何時更新部署堆疊,以及如何更新現有的受控資源。

在此單元中,您將了解哪些情況需要部署堆疊更新。 您也會了解如何修改部署堆疊所管理的資源。

注意

本單元中的命令僅用於示範概念。 請先不要執行命令。 您很快就會在此練習所學到的內容。

更新部署堆疊

構成應用程式的資源會隨時間變更。 需要修改現有資源的屬性、需要新增或刪除資源,或是應用程式必須整合透過其他方法部署的資源。 部署堆疊可以更新,以實作應用程式中的變更。 哪些情況需要我們更新部署堆疊?

  • 修改受控資源的屬性
  • 將現有的資源新增為受控資源
  • 新增受控資源
  • 中斷連結受控資源
  • 刪除受控資源

如何實作這些變更? 如上一個課程模組所述,部署堆疊會管理 Bicep 檔案、ARM JSON 範本或範本規格中所定義的資源。當您建立部署堆疊時,系統會參考其中一個檔案來部署資源。 更新部署堆疊的情況也是如此。 若要更新部署堆疊所管理的資源,請更新基礎範本檔案。

更新現有的受控資源

修改部署在 Azure 中的資源是常見的做法。 您可能需要變更資源的屬性值,以納入新功能或增強其功能。 如果您目前使用基礎結構即程式碼在 Azure 中定義資源,您便熟悉如何修改資源的屬性。 使用部署堆疊時,程序會相同。 對 Bicep 檔案中的資源進行變更,並在堆疊上執行更新作業。

讓我們從最後一個課程模組考慮我們的 Bicep 檔案。 我們的檔案會定義 App Service 方案、Web 應用程式和 Azure SQL Server 與資料庫。 我們想要將 App Service 方案的 SKU 從 F1 SKU 修改為 S1 SKU。

// Parameters
@description('The location for all resources.')
param location string = 'eastus'

@description('The name of the SQL database.')
param sqlDatabaseName string = 'sqldb-${uniqueString(resourceGroup().id)}'

@description('The password of the admin user.')
param sqlServerAdminUserName string

@description('The name of the admin user.')
@secure()
param sqlServerAdminPassword string

@description('The name of the SQL server.')
param sqlServerName string = 'sql-${uniqueString(resourceGroup().id)}'

@description('The name of the web application.')
param webApplicationName string = 'webapp-${uniqueString(resourceGroup().id)}'

// Variables
@description('The name of the app service plan.')
var appServicePlanName = 'plan-deposits'

// Resource - App Service Plan
resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
  name: appServicePlanName
  location: location
  sku: {
    name: 'S1'
    capacity: 1
  }
}

// Resource - Web App
resource webApplication 'Microsoft.Web/sites@2023-12-01' = {
  name: webApplicationName
  location: location
  properties: {
    serverFarmId: appServicePlan.id
  }
}

// Resource - SQL Server
resource sqlServer 'Microsoft.Sql/servers@2021-11-01' ={
  name: sqlServerName
  location: location
  properties: {
    administratorLogin: sqlServerAdminUserName
    administratorLoginPassword: sqlServerAdminPassword
  }
}

// Resource - SQL Database
resource sqlServerDatabase 'Microsoft.Sql/servers/databases@2021-11-01' = {
  parent: sqlServer
  name: sqlDatabaseName
  location: location
  sku: {
    name: 'Standard'
    tier: 'Standard'
  }
}

修改 Bicep 檔案之後,我們想要更新部署堆疊,以便實作對 Bicep 檔案中資源所做的變更。

若要使用 Azure CLI 更新部署堆疊,請使用 az stack group create 命令。

az stack group create \
    --name stack-deposits \
    --resource-group rg-depositsApplication \
    --template-file ./main.bicep \
    --action-on-unmanage detachAll \
    --deny-settings-mode none

堆疊更新完成之後,我們想要確認 App Service 方案現在已在 S1 SKU 上執行。

若要使用 Azure CLI 檢視 App Service 方案的組態,請使用 az appservice plan show 命令

az appservice plan show \
    --name plan-deposits
    --resource-group rg-depositsApplication

輸出會顯示更新成功,且 App Service 方案現在正在 S1 SKU上執行。

"sku": {
    "capacity": 1,
    "family": "S",
    "name": "S1",
    "size": "S1",
    "tier": "Standard"
},

修改 Bicep 檔案之後,我們想要更新部署堆疊,以便實作對 Bicep 檔案中資源所做的變更。

若要使用 Azure PowerShell 更新部署堆疊,請使用 Set-AzResourceGroupDeploymentStack 命令。

Set-AzResourceGroupDeploymentStack `
    -Name stack-deposits `
    -ResourceGroupName rg-depositsApplication `
    -TemplateFile ./main.bicep `
    -ActionOnUnmanage DetachAll `
    -DenySettingsMode None

堆疊更新完成之後,我們想要確認 App Service 方案現在已在 S1 SKU 上執行。

若要使用 Azure PowerShell 檢視 App Service 方案的組態,請使用 Get-AzAppServicePlan 命令

$plan = Get-AzAppServicePlan `
    -ResourceGroupName rg-depositsApplication `
    -Name plan-deposits
$sku = $plan.Sku
$sku

輸出會顯示更新成功,且 App Service 方案現在正在 S1 SKU上執行。

Name         : S1
Tier         : Standard
Size         : S1
Family       : S
Capacity     : 1