Добавление ресурсов в стек развертывания
Приложение депозитов продолжает развиваться на протяжении всей разработки. Команда ежедневно добавляет ресурсы и тестирует функции. Наблюдаемость добавляется в приложение с существующей рабочей областью Log Analytics и новым экземпляром Application Insights. Вы хотите продолжать управлять ресурсами в виде одной атомарной единицы. Дополнительные сведения о добавлении существующих и новых ресурсов в стек развертывания.
В этом уроке вы узнаете, как добавить существующие и новые ресурсы в стек развертывания в качестве управляемых ресурсов.
Примечание.
Команды в этом уроке демонстрируют основные понятия. На этом этапе не выполняйте команды. Вскоре вы поупражняетесь с полученными знаниями.
Добавление существующего ресурса
Ресурсы, которые приложение использует со временем. Как обновить стек развертывания, чтобы включить уже существующий ресурс в Azure?
Bicep позволяет определить ресурс, который уже существует в Azure. Определение существующего ресурса аналогично определению нового ресурса с небольшими различиями. Например, можно определить существующий ресурс в объявлении ресурса с помощью ключевого existing
слова:
resource logAnalyticsWorkspace 'Microsoft.OperationsManagement/solutions@2015-11-01-preview' existing = {
name: 'log-deposits'
}
При добавлении существующего ресурса в качестве управляемого ресурса в стек развертывания нам не нужно использовать это existing
ключевое слово. Необходимо просто определить существующий ресурс в файле Bicep, шаблоне ARM JSON или спецификации шаблона. В конце концов стек развертывания управляет существующим ресурсом.
Рассмотрим наш Bicep-файл из последнего урока. Наш файл определяет план службы приложений, веб-приложение и сервер SQL Azure и базу данных. Мы хотим добавить существующую рабочую область Log Analytics в стек развертывания. Рабочая область находится в той же группе ресурсов, где существуют управляемые ресурсы.
Чтобы добавить существующую рабочую область Log Analytics, необходимо добавить его определение в файл Bicep. Обратите внимание, что нам не нужно включать код, описывающий рабочую область как существующий ресурс.
// 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'
@description('The name of the Log Analytics Workspace.')
var logAnalyticsWorkspaceName = 'log-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'
}
}
// Resource - Log Analytics Workspace
resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' = {
name: logAnalyticsWorkspaceName
location: location
properties: {
retentionInDays: 30
sku: {
name: 'PerGB2018'
}
}
}
После изменения файла 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
После изменения файла Bicep мы хотим обновить стек развертывания, чтобы изменения, внесенные в ресурсы в файле Bicep, были реализованы.
Чтобы обновить стек развертывания с помощью Azure PowerShell, используйте Set-AzResourceGroupDeploymentStack
команду.
Set-AzResourceGroupDeploymentStack `
-Name stack-deposits `
-ResourceGroupName rg-depositsApplication `
-TemplateFile ./main.bicep `
-ActionOnUnmanage DetachAll `
-DenySettingsMode None
Добавление нового управляемого ресурса
Процесс добавления нового ресурса в стек развертывания идентичен добавлению существующего ресурса в стек. Необходимо просто определить существующий ресурс в файле Bicep, шаблоне ARM JSON или спецификации шаблона. В конце концов стек развертывания управляет новым ресурсом.
Рассмотрим файл Bicep из предыдущего раздела. Теперь наш файл определяет план службы приложений, службу приложений, сервер SQL Azure и базу данных и рабочую область Log Analytics. Мы хотим добавить новый экземпляр Application Insights в стек развертывания и настроить службу приложений для использования экземпляра. Чтобы добавить новый экземпляр Application Insights, необходимо добавить его определение в файл Bicep и обновить службу приложений для использования нового экземпляра.
// 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 Application Insights instance.')
var applicationInsightsName = 'appinsights-deposits'
@description('The name of the app service plan.')
var appServicePlanName = 'plan-deposits'
@description('The name of the Log Analytics Workspace.')
var logAnalyticsWorkspaceName = 'log-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
siteConfig: {
appSettings: [
{
name: 'APPINSIGHTS_INSTRUMENTATIONKEY'
value: applicationInsights.properties.InstrumentationKey
}
]
}
}
}
// 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'
}
}
// Resource - Log Analytics Workspace
resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' = {
name: logAnalyticsWorkspaceName
location: location
properties: {
retentionInDays: 30
sku: {
name: 'PerGB2018'
}
}
}
// Resource - Application Insights
resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = {
name: applicationInsightsName
location: location
kind: 'web'
properties: {
Application_Type: 'web'
WorkspaceResourceId: logAnalyticsWorkspace.id
}
}
После изменения файла 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
Примечание.
Azure CLI не имеет выделенной команды для обновления стека развертывания. Используйте команду create для обновления стека.
При выполнении обновления в стеке вы получите сообщение о том, что стек уже существует в текущей подписке. Если значение действия для неуправляемого параметра изменяется, предупреждение оповещает вас о новых значениях.
После изменения файла Bicep мы хотим обновить стек развертывания, чтобы изменения, внесенные в ресурсы в файле Bicep, были реализованы.
Чтобы обновить стек развертывания с помощью Azure PowerShell, используйте Set-AzResourceGroupDeploymentStack
команду.
Set-AzResourceGroupDeploymentStack `
-Name stack-deposits `
-ResourceGroupName rg-depositsApplication `
-TemplateFile ./main.bicep `
-ActionOnUnmanage DetachAll `
-DenySettingsMode None
Как видно, процесс добавления существующего ресурса или нового ресурса совпадает.