更新部署堆栈中的资源
随着应用程序不断演变,其资源也会演变。 添加新服务和功能时,如何更新部署堆栈及其托管资源? 哪些情况需要我们更新部署堆栈?
存款应用程序正在进行重大更改。 需要修改 Azure 资源属性,需要添加新资源,需要删除现有资源。 需要详细了解什么时候更新部署堆栈以及如何更新现有受管理资源。
在本单元中,你会了解需要更新部署堆栈的情况。 你还会了解如何修改由部署堆栈管理的资源。
注意
本单元中显示的命令用于说明概念。 请暂时不要运行这些命令。 稍后你将练习在此处学到的知识。
更新部署堆栈
随着时间的推移,构成应用程序的资源会更改。 需要修改现有资源的属性、需要添加或删除资源,或者应用程序需要集成通过其他方法部署的资源。 可以更新部署堆栈,以实现应用程序中的更改。 哪些情况需要我们更新部署堆栈?
- 正在修改受管理资源的属性
- 正在将现有资源添加为受管理资源
- 正在添加新的受管理资源
- 正在拆离受管理资源
- 正在删除受管理资源
如何实现这些更改? 如上一模块中所述,部署堆栈管理 Bicep 文件、ARM JSON 模板或模板规格中定义的资源。创建部署堆栈时,引用其中一个文件来部署资源。 更新部署堆栈也是如此。 要更新部署堆栈管理的资源,请更新基础模板文件。
更新现有受管理资源
修改在 Azure 中部署的资源是常见的做法。 可能需要更改资源的属性值以合并新功能或增强其功能。 如果当前使用基础结构即代码在 Azure 中定义资源,则你熟悉如何修改资源的属性。 使用部署堆栈时,该过程是相同的。 对 Bicep 文件中的资源进行更改,并在堆栈上运行更新操作。
让我们考虑一下上一个模块中的 Bicep 文件。 我们的文件定义应用服务计划、Web 应用以及 Azure SQL 服务器和数据库。 我们希望将应用服务计划的 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
堆栈更新完成后,我们希望验证应用服务计划现在是否在S1
SKU 上运行。
要查看使用 Azure CLI 的应用服务计划的配置,请使用az appservice plan show
命令
az appservice plan show \
--name plan-deposits
--resource-group rg-depositsApplication
输出显示更新成功,应用服务计划现在在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
堆栈更新完成后,我们希望验证应用服务计划现在是否在S1
SKU 上运行。
要查看使用 Azure PowerShell 的应用服务计划的配置,请使用Get-AzAppServicePlan
命令
$plan = Get-AzAppServicePlan `
-ResourceGroupName rg-depositsApplication `
-Name plan-deposits
$sku = $plan.Sku
$sku
输出显示更新成功,应用服务计划现在在S1
SKU 上运行。
Name : S1
Tier : Standard
Size : S1
Family : S
Capacity : 1