Přidání prostředků do zásobníku nasazení
Aplikace vkladů se bude dále vyvíjet v průběhu vývoje. Tým každý den přidává prostředky a funkce testování. Pozorovatelnost se přidává do aplikace s existujícím pracovním prostorem služby Log Analytics a novou instancí Application Insights. Chcete pokračovat ve správě prostředků jako jedna atomická jednotka. Potřebujete další informace o přidání existujících i nových prostředků do zásobníku nasazení.
V této lekci se dozvíte, jak přidat existující i nové prostředky do zásobníku nasazení jako spravované prostředky.
Poznámka:
Příkazy v této lekci jsou znázorněny pro ilustraci konceptů. Zatím nespouštět příkazy. Brzy si procvičíte, co se tady naučíte.
Přidání existujícího prostředku
Prostředky, které aplikace používá, se v průběhu času mění. Jak aktualizujeme zásobník nasazení tak, aby zahrnoval již existující prostředek v Azure?
Bicep umožňuje definovat prostředek, který už v Azure existuje. Definování existujícího prostředku se podobá definování nového prostředku s mírnými rozdíly. Pomocí klíčového existing
slova můžete například definovat existující prostředek v deklaraci prostředku:
resource logAnalyticsWorkspace 'Microsoft.OperationsManagement/solutions@2015-11-01-preview' existing = {
name: 'log-deposits'
}
Když do zásobníku nasazení přidáváme existující prostředek jako spravovaný prostředek, nemusíme toto existing
klíčové slovo používat. Stačí definovat existující prostředek v našem souboru Bicep, šabloně JSON ARM nebo specifikaci šablony. Nakonec zásobník nasazení spravuje existující prostředek.
Podívejme se na náš soubor Bicep z poslední lekce. Náš soubor definuje plán služby App Service, webovou aplikaci a server a databázi Azure SQL. Do našeho zásobníku nasazení chceme přidat existující pracovní prostor služby Log Analytics. Pracovní prostor je ve stejné skupině prostředků, ve které existují naše spravované prostředky.
Abychom mohli přidat existující pracovní prostor služby Log Analytics, musíme do souboru Bicep přidat jeho definici. Všimněte si, že nepotřebujeme zahrnout žádný kód popisující pracovní prostor jako existující prostředek.
// 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'
}
}
}
Při změně souboru Bicep chceme aktualizovat zásobník nasazení tak, aby se implementovaly změny prostředků v souboru Bicep.
Pokud chcete aktualizovat zásobník nasazení pomocí Azure CLI, použijte az stack group create
tento příkaz.
az stack group create \
--name stack-deposits \
--resource-group rg-depositsApplication \
--template-file ./main.bicep \
--action-on-unmanage detachAll \
--deny-settings-mode none
Při změně souboru Bicep chceme aktualizovat zásobník nasazení tak, aby se implementovaly změny prostředků v souboru Bicep.
Pokud chcete aktualizovat zásobník nasazení pomocí Azure PowerShellu Set-AzResourceGroupDeploymentStack
, použijte tento příkaz.
Set-AzResourceGroupDeploymentStack `
-Name stack-deposits `
-ResourceGroupName rg-depositsApplication `
-TemplateFile ./main.bicep `
-ActionOnUnmanage DetachAll `
-DenySettingsMode None
Přidání nového spravovaného prostředku
Proces přidání nového prostředku do zásobníku nasazení je stejný jako přidání existujícího prostředku do zásobníku. Stačí definovat existující prostředek v našem souboru Bicep, šabloně JSON ARM nebo specifikaci šablony. Nakonec zásobník nasazení spravuje nový prostředek.
Pojďme se podívat na náš soubor Bicep z předchozí části. Náš soubor teď definuje plán služby App Service, službu App Service, server Azure SQL a databázi a pracovní prostor služby Log Analytics. Do zásobníku nasazení chceme přidat novou instanci Application Insights a nakonfigurovat službu App Service tak, aby tuto instanci používala. Abychom mohli přidat novou instanci Application Insights, musíme do souboru Bicep přidat její definici a aktualizovat službu App Service tak, aby používala novou instanci.
// 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
}
}
Při změně souboru Bicep chceme aktualizovat zásobník nasazení tak, aby se implementovaly změny prostředků v souboru Bicep.
Pokud chcete aktualizovat zásobník nasazení pomocí Azure CLI, použijte az stack group create
tento příkaz.
az stack group create \
--name stack-deposits \
--resource-group rg-depositsApplication \
--template-file ./main.bicep \
--action-on-unmanage detachAll \
--deny-settings-mode none
Poznámka:
Azure CLI nemá vyhrazený příkaz pro aktualizaci zásobníku nasazení. K aktualizaci zásobníku použijte příkaz create.
Při provádění aktualizace zásobníku se zobrazí zpráva oznamující, že zásobník již existuje v aktuálním předplatném. Pokud se hodnota akce u nespravovaných parametrů změní, upozornění vás upozorní na nové hodnoty.
Při změně souboru Bicep chceme aktualizovat zásobník nasazení tak, aby se implementovaly změny prostředků v souboru Bicep.
Pokud chcete aktualizovat zásobník nasazení pomocí Azure PowerShellu Set-AzResourceGroupDeploymentStack
, použijte tento příkaz.
Set-AzResourceGroupDeploymentStack `
-Name stack-deposits `
-ResourceGroupName rg-depositsApplication `
-TemplateFile ./main.bicep `
-ActionOnUnmanage DetachAll `
-DenySettingsMode None
Jak vidíte, postup přidání existujícího prostředku nebo nového prostředku je stejný.