Упражнение. Добавление ресурсов в стек развертывания
Вы находитесь на спринте 3 для нового приложения депозитов. Недавно команда по депозитам запрашивала изменения некоторых используемых служб Azure. Они также попросили создать другие службы, необходимые для поддержки приложения.
В этом упражнении вы создадите стек развертывания в группе ресурсов, которая ссылается на Bicep-файл. Файл определяет план службы приложений, службу приложений и базу данных SQL Azure. Затем вы измените номер SKU плана службы приложений и обновите стек развертывания. Наконец, вы добавите существующую рабочую область Log Analytics и новый экземпляр Application Insights для поддержки мониторинга приложения.
В процессе вы:
- Создание файла Bicep, определяющего начальную архитектуру
- Создайте стек развертывания, наложенный на группу ресурсов, с помощью файла Bicep.
- Изменение свойств существующего управляемого ресурса
- Обновите файл Bicep, чтобы включить существующую рабочую область Log Analytics и новый экземпляр Application Insights
- Обновление стека развертывания для развертывания управляемых ресурсов
- Проверьте управляемые ресурсы стека развертывания.
В этом упражнении используется расширение Bicep для Visual Studio Code. Убедитесь, что это расширение установлено в Visual Studio Code.
Создание файла Bicep
Первым шагом является создание Bicep-файла, который определяет ресурсы для использования с стеком развертывания.
Откройте Visual Studio Code.
Создайте файл с именем main.bicep.
Сохраните пустой файл, куда Visual Studio Code загрузит средства Bicep.
Можно выбрать Файл>Сохранить как или нажать клавиши CTRL+S в Windows (⌘+S в macOS). Не забудьте помнить, где сохранен файл. Например, можно создать для сохранения файла папку templates (шаблоны).
Добавьте в файл следующий код 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' // Resource - App Service Plan resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = { name: appServicePlanName location: location sku: { name: 'F1' 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' } }
Обратите внимание, что вы используете выражения, которые включают интерполяцию строк и функцию
uniqueString()
для определения значений параметров по умолчанию. Кто-то, развертывающий этот шаблон, может переопределить значения параметров по умолчанию, указав значения во время развертывания, но они не могут переопределить значения переменных.Кроме того, обратите внимание, что вы используете переменную для имени плана Служба приложений, но используете параметры для других имен. У учетных записей хранения и приложений Службы приложений должны быть глобально уникальные имена, а имена планов службы приложений должны уникальными только в пределах своей группы ресурсов. Это различие означает, что не стоит использовать одно и то же имя плана службы приложений в разных развертываниях, если все развертывания относятся к разным группам ресурсов.
Сохраните изменения в файле.
Создание стека развертывания и развертывание ресурсов в Azure
Чтобы развернуть этот шаблон в Azure, необходимо войти в свою учетную запись Azure из терминала Visual Studio Code. Убедитесь, что средства Azure CLI установлены.
В меню Терминал выберите Новый терминал. Окно терминала обычно открывается в нижней половине экрана.
Если окно терминала отображает bash справа , это означает, что правильная оболочка уже открыта. Кроме того, если вы видите значок оболочки Bash справа, его можно выбрать для запуска оболочки.
Если появится оболочка, отличной от bash , выберите стрелку раскрывающегося списка оболочки и выберите Git Bash.
Перейдите в терминале в каталог, где сохранили свой шаблон. Например, если вы сохранили его в папке templates, можно использовать следующую команду:
cd templates
Установка Bicep
Выполните следующую команду, чтобы убедиться, что у вас установлена последняя версия Bicep:
az bicep install && az bicep upgrade
Вход в Azure с помощью Azure CLI
В окне терминала Visual Studio Code войдите в Azure, выполнив следующую команду:
az login
В открывшемся браузере войдите в свою учетную запись Azure.
Терминал Visual Studio Code отобразит список подписок, связанных с данной учетной записью.
В списке найдите подписку, которую вы хотите использовать для этого упражнения.
Если вы пропустили список при входе, можно использовать следующий фрагмент кода для повторного составления списка подписок.
az account list --output table
Установите подписку по умолчанию для всех команд Azure CLI, которые выполняются во время этого сеанса:
az account set --subscription "Your Subscription Name or ID"
Создание или изменение группы ресурсов
Нам нужно создать группу ресурсов для стека развертывания и управляемых ресурсов. Чтобы создать группу ресурсов, выполните следующую команду из терминала в Visual Studio Code.
az group create \
--name rg-depositsApplication \
--location eastus
Чтобы развернуть этот шаблон в Azure, войдите в свою учетную запись Azure из терминала Visual Studio Code. Убедитесь, что Azure PowerShell установлено.
В меню Терминал выберите Новый терминал. Окно терминала обычно открывается в нижней половине экрана.
Если окно терминала отображает pwsh или powershell справа, это означает, что правильная оболочка уже открыта. Кроме того, если вы видите значок оболочки PowerShell справа, его можно выбрать для запуска оболочки.
Если появится оболочка, отличной от pwsh или PowerShell , выберите стрелку раскрывающегося списка оболочки и выберите PowerShell.
Перейдите в терминале в каталог, где сохранили свой шаблон. Например, если вы сохранили его в папке templates, можно использовать следующую команду:
Set-Location -Path templates
Установите Bicep CLI
Чтобы использовать Bicep из Azure PowerShell, установите Bicep CLI.
Вход в Azure с помощью Azure PowerShell
В окне терминала Visual Studio Code войдите в Azure, выполнив следующую команду:
Connect-AzAccount
В открывшемся браузере войдите в свою учетную запись Azure.
Получите идентификатор подписки, которую вы хотите использовать для этого упражнения, выполнив следующую команду:
Get-AzSubscription
Идентификатор подписки находится во втором столбце. Скопируйте второй столбец. Он выглядит примерно так, как aaaa0a0a-bb1b-cc2c-dd3d-eeee4e4e4e4e4e4e4e.
Установите подписку по умолчанию для всех команд Azure PowerShell, которые вы выполняете в этом сеансе:
Set-AzContext -SubscriptionId {Your subscription ID}
Создание или изменение группы ресурсов
Нам нужно создать группу ресурсов для стека развертывания и управляемых ресурсов. Чтобы создать группу ресурсов, выполните следующую команду из терминала в Visual Studio Code.
New-AzResourceGroup `
-Name rg-depositsApplication `
-Location eastus
Создание стека развертывания
Затем необходимо создать стек развертывания, ограниченный для нашей недавно созданной группы ресурсов. Чтобы создать стек развертывания, выполните следующую команду из терминала в Visual Studio Code.
Чтобы создать стек развертывания, выполните следующую команду из терминала в Visual Studio Code.
az stack group create \ --name stack-deposits \ --resource-group rg-depositsApplication \ --template-file ./main.bicep \ --action-on-unmanage detachAll \ --deny-settings-mode none
Он предложит ввести значение для
sqlServerAdminUserName
. Создайте имя администратора SQL Server, за которым следует "ВВОД".Он предложит ввести значение для
sqlServerAdminPassword
. Создайте сложный пароль для администратора SQL Server, а затем —ВВОД.Дождитесь завершения операции обновления, прежде чем перейти к следующей задаче.
Чтобы создать стек развертывания, выполните следующую команду из терминала в Visual Studio Code.
New-AzResourceGroupDeploymentStack ` -Name stack-deposits ` -ResourceGroupName rg-depositsApplication ` -TemplateFile ./main.bicep ` -ActionOnUnmanage DetachAll ` -DenySettingsMode None
Он предложит ввести значение для
sqlServerAdminUserName
. Создайте имя администратора SQL Server, за которым следует "ВВОД".Он предложит ввести значение для
sqlServerAdminPassword
. Создайте сложный пароль для администратора SQL Server, а затем —ВВОД.Дождитесь завершения операции обновления, прежде чем перейти к следующей задаче.
Измените файл Bicep, чтобы добавить существующую рабочую область Log Analytics и новый экземпляр Application Insights
Откройте файл main.bicep в Visual Studio Code.
Добавьте выделенный код в раздел переменных файла:
// 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 - 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, чтобы изменить план службы приложений и службу приложений
Откройте файл main.bicep в Visual Studio Code.
Измените имя SKU плана службы приложений на
F1
S1
:// Resource - App Service Plan resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = { name: appServicePlanName location: location sku: { name: 'S1' capacity: 1 } }
Добавьте выделенный код в провод в экземпляр Application Insights:
// 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 } ] } } }
Сохраните изменения в файле.
Обновление стека развертывания
После изменения файла Bicep мы хотим обновить стек развертывания, чтобы изменения, внесенные в ресурсы в файле Bicep, были реализованы.
Чтобы обновить стек развертывания, выполните следующую команду из терминала в Visual Studio Code.
az stack group create \ --name stack-deposits \ --resource-group rg-depositsApplication \ --template-file ./main.bicep \ --action-on-unmanage detachAll \ --deny-settings-mode none
Вы получите сообщение о том, что стек уже существует в текущей подписке. Если значение действия для неуправляемого параметра изменилось, предупреждение оповещает вас о новых значениях. Нажмите клавишу
y
ВВОД, а затем нажмите клавишу ВВОД.Он предложит ввести значение для
sqlServerAdminUserName
. Создайте имя администратора SQL Server, за которым следует "ВВОД".Он предложит ввести значение для
sqlServerAdminPassword
. Создайте сложный пароль для администратора SQL Server, а затем —ВВОД.Дождитесь завершения операции обновления, прежде чем перейти к следующей задаче.
После изменения файла Bicep мы хотим обновить стек развертывания, чтобы изменения, внесенные в план службы приложений, были реализованы.
Чтобы обновить стек развертывания, выполните следующую команду из терминала в Visual Studio Code.
Set-AzResourceGroupDeploymentStack ` -Name stack-deposits ` -ResourceGroupName rg-depositsApplication ` -TemplateFile ./main.bicep ` -ActionOnUnmanage DetachAll ` -DenySettingsMode none
Он предложит ввести значение для
sqlServerAdminUserName
. Создайте имя администратора SQL Server, за которым следует "ВВОД".Он предложит ввести значение для
sqlServerAdminPassword
. Создайте сложный пароль для администратора SQL Server, а затем —ВВОД.Дождитесь завершения операции обновления, прежде чем перейти к следующей задаче.
Проверка обновления стека развертывания и управляемых ресурсов
После завершения обновления мы хотим проверить, обновлен ли номер плана службы приложений и что стек развертывания управляет существующей рабочей областью Log Analytics и новым экземпляром Application Insights.
Чтобы просмотреть конфигурацию плана службы приложений, выполните следующую команду из терминала в Visual Studio Code.
az appservice plan show \ --name plan-deposits --resource-group rg-depositsApplication
Обратите внимание на раздел SKU выходных данных. План службы приложений теперь находится на SKU S1. Он должен быть похож на следующие выходные данные:
"sku": { "capacity": 1, "family": "S", "name": "S1", "size": "S1", "tier": "Standard" },
Чтобы просмотреть конфигурацию стека развертывания, выполните следующую команду из терминала в Visual Studio Code.
az stack group show \ --resource-group rg-depositsApplication \ --name stack-deposits
Обратите внимание на раздел ресурсов выходных данных. Теперь мы видим существующую рабочую область Log Analytics и новый экземпляр Application Insights, указанный как управляемые ресурсы. Результат должен выглядеть примерно так:
"resources": [ { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm", "resourceGroup": "rg-depositsApplication", "status": "managed" }, { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm/databases/sqldb-brpdm7iotbwjm", "resourceGroup": "rg-depositsApplication", "status": "managed" }, { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits", "resourceGroup": "rg-depositsApplication", "status": "managed" }, { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm", "resourceGroup": "rg-depositsApplication", "status": "managed" }, { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././components/appinsights-deposits", "resourceGroup": "rg-depositsApplication", "status": "managed" }, { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././workspaces/log-deposits", "resourceGroup": "rg-depositsApplication", "status": "managed" } ],
Чтобы просмотреть конфигурацию плана службы приложений, выполните следующую команду из терминала в Visual Studio Code.
$plan = Get-AzAppServicePlan ` -ResourceGroupName rg-depositsApplication ` -Name plan-deposits $sku = $plan.Sku $sku
Обратите внимание на выходные данные. План службы приложений теперь находится на SKU S1. Это должно быть похоже на следующее:
Name : S1 Tier : Standard Size : S1 Family : S Capacity : 1
Чтобы просмотреть конфигурацию стека развертывания, выполните следующую команду из терминала в Visual Studio Code.
Get-AzResourceGroupDeploymentStack ` -ResourceGroupName rg-depositsApplication ` -Name stack-deposits
Обратите внимание на раздел ресурсов выходных данных. Теперь мы видим существующую рабочую область Log Analytics и новый экземпляр Application Insights, указанный как управляемые ресурсы. Результат должен выглядеть примерно так:
Resources : /subscriptions/./resourceGroups/rg-depositsApplication/././servers/ sql-brpdm7iotbwjm /subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm/databases/sqldb-brpdm7iotbwjm /subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits /subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm /subscriptions/./resourceGroups/rg-depositsApplication/././components/appinsights-deposits /subscriptions/./resourceGroups/rg-depositsApplication/././workspaces/log-deposits