Exercício - Adicionar recursos a uma pilha de implantação
Você está no sprint 3 para o novo aplicativo de depósitos. Recentemente, a equipe de depósitos solicitou alterações em alguns dos serviços do Azure em uso. Solicitaram também a criação de outros serviços necessários para apoiar a candidatura.
Neste exercício, você cria uma pilha de implantação com escopo para um grupo de recursos que faz referência a um arquivo Bicep. O arquivo define um plano de serviço de aplicativo, um serviço de aplicativo e um banco de dados SQL do Azure. Em seguida, modifique a SKU do plano de serviço de aplicativo e atualize a pilha de implantação. Finalmente, você adiciona um espaço de trabalho existente do Log Analytics e uma nova instância do Application Insights para dar suporte ao monitoramento do aplicativo.
Durante o processo, você:
- Crie um arquivo Bicep que define sua arquitetura inicial
- Crie uma pilha de implantação com escopo para um grupo de recursos usando seu arquivo Bicep.
- Modificar as propriedades de um recurso gerenciado existente
- Atualize o arquivo Bicep para incluir um espaço de trabalho existente do Log Analytics e uma nova instância do Application Insights
- Atualizar a pilha de implantação para implantar os recursos gerenciados
- Valide os recursos gerenciados da pilha de implantação.
Este exercício usa a extensão Bicep para Visual Studio Code. Certifique-se de que instala esta extensão no Visual Studio Code.
Criar o arquivo Bicep
Nossa primeira etapa é criar um arquivo Bicep que define nossos recursos para usar com a pilha de implantação.
Abra o Visual Studio Code.
Crie um novo arquivo chamado main.bicep.
Salve o arquivo vazio para que o Visual Studio Code carregue as ferramentas do Bíceps.
Você pode selecionar Arquivo>Salvar como ou Ctrl+S no Windows (⌘+S no macOS). Lembre-se de onde você salvou o arquivo. Por exemplo, talvez você queira criar uma pasta de modelos na qual salvar o arquivo.
Adicione o seguinte código Bicep ao ficheiro. Você implanta o modelo em breve.
// 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' } }
Observe que você está usando expressões que incluem interpolação de cadeia de caracteres e a
uniqueString()
função para definir valores de parâmetro padrão. Alguém que implanta esse modelo pode substituir os valores de parâmetro padrão especificando os valores no momento da implantação, mas não pode substituir os valores das variáveis.Observe também que você está usando uma variável para o nome do plano do Serviço de Aplicativo, mas está usando parâmetros para os outros nomes. As contas de armazenamento e os aplicativos do Serviço de Aplicativo precisam de nomes globalmente exclusivos, mas os nomes dos planos do Serviço de Aplicativo precisam ser exclusivos apenas dentro do grupo de recursos. Essa diferença significa que não é uma preocupação usar o mesmo nome de plano do Serviço de Aplicativo em implantações diferentes, desde que as implantações estejam todas indo para grupos de recursos diferentes.
Guarde as alterações ao ficheiro.
Crie a pilha de implantação e implante seus recursos no Azure
Para implementar este modelo no Azure, tem de iniciar sessão na sua conta do Azure a partir do terminal do Visual Studio Code. Certifique-se de ter instalado as ferramentas da CLI do Azure.
No menu Terminal, selecione New Terminal (Novo Terminal). A janela do terminal geralmente abre na metade inferior da tela.
Se a janela do terminal exibir bash no lado direito, isso significa que o shell correto já está aberto. Como alternativa, se você vir um ícone de shell bash à direita, você pode selecioná-lo para iniciar o shell.
Se um shell diferente de bash aparecer, selecione a seta suspensa do shell e, em seguida, selecione Git Bash.
No terminal, vá para o diretório onde você salvou seu modelo. Por exemplo, se você salvou seu modelo na pasta de modelos , poderá usar este comando:
cd templates
Instalar o Bicep
Execute o seguinte comando para garantir que você tenha a versão mais recente do Bicep:
az bicep install && az bicep upgrade
Entrar no Azure usando a CLI do Azure
No terminal do Visual Studio Code, entre no Azure executando o seguinte comando:
az login
No browser que se abre, inicie sessão na sua conta do Azure.
O terminal de código do Visual Studio exibe uma lista das assinaturas associadas a essa conta.
Na lista, localize a subscrição que pretende utilizar para este exercício.
Se você perdeu a lista do login, você pode usar o trecho a seguir para listar suas assinaturas novamente.
az account list --output table
Defina a assinatura padrão para todos os comandos da CLI do Azure que você executa nesta sessão.
az account set --subscription "Your Subscription Name or ID"
Criar um grupo de recursos
Precisamos criar um grupo de recursos para nossa pilha de implantação e recursos gerenciados. Para criar um grupo de recursos, execute o seguinte comando a partir do terminal no Visual Studio Code.
az group create \
--name rg-depositsApplication \
--location eastus
Para implantar esse modelo no Azure, entre em sua conta do Azure a partir do terminal do Visual Studio Code. Certifique-se de ter instalado o Azure PowerShell.
No menu Terminal, selecione New Terminal (Novo Terminal). A janela do terminal geralmente abre na metade inferior da tela.
Se a janela do terminal exibir pwsh ou powershell no lado direito, isso significa que o shell correto já está aberto. Como alternativa, se você vir um ícone de shell do PowerShell à direita, poderá selecioná-lo para iniciar o shell.
Se um shell diferente de pwsh ou powershell for exibido, selecione a seta suspensa do shell e selecione PowerShell.
No terminal, vá para o diretório onde você salvou seu modelo. Por exemplo, se você salvou seu modelo na pasta de modelos , poderá usar este comando:
Set-Location -Path templates
Instalar a CLI do Bíceps
Para usar o Bicep do Azure PowerShell, instale a CLI do Bicep.
Iniciar sessão no Azure com o Azure PowerShell
No terminal do Visual Studio Code, entre no Azure executando o seguinte comando:
Connect-AzAccount
No browser que se abre, inicie sessão na sua conta do Azure.
Obtenha o ID da subscrição que pretende utilizar para este exercício executando o seguinte comando:
Get-AzSubscription
O ID de subscrição é a segunda coluna. Copie a segunda coluna. Parece algo como aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e.
Defina a assinatura padrão para todos os comandos do Azure PowerShell executados nesta sessão.
Set-AzContext -SubscriptionId {Your subscription ID}
Criar um grupo de recursos
Precisamos criar um grupo de recursos para nossa pilha de implantação e recursos gerenciados. Para criar um grupo de recursos, execute o seguinte comando a partir do terminal no Visual Studio Code.
New-AzResourceGroup `
-Name rg-depositsApplication `
-Location eastus
Criar a pilha de implantação
Em seguida, precisamos criar nossa pilha de implantação com escopo para nosso grupo de recursos criado recentemente. Para criar a pilha de implantação, execute o seguinte comando do terminal no Visual Studio Code.
Para criar a pilha de implantação, execute o seguinte comando do terminal no 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
Ele solicita que você insira um valor para
sqlServerAdminUserName
. Crie um nome para o administrador do SQL Server, seguido de 'Enter'.Ele solicita que você insira um valor para
sqlServerAdminPassword
. Crie uma senha complexa para o administrador do SQL Server, seguida por 'Enter'.Aguarde a conclusão da operação de atualização antes de passar para a próxima tarefa.
Para criar a pilha de implantação, execute o seguinte comando do terminal no Visual Studio Code.
New-AzResourceGroupDeploymentStack ` -Name stack-deposits ` -ResourceGroupName rg-depositsApplication ` -TemplateFile ./main.bicep ` -ActionOnUnmanage DetachAll ` -DenySettingsMode None
Ele solicita que você insira um valor para
sqlServerAdminUserName
. Crie um nome para o administrador do SQL Server, seguido de 'Enter'.Ele solicita que você insira um valor para
sqlServerAdminPassword
. Crie uma senha complexa para o administrador do SQL Server, seguida por 'Enter'.Aguarde a conclusão da operação de atualização antes de passar para a próxima tarefa.
Modifique o arquivo Bicep para adicionar o espaço de trabalho existente do Log Analytics e uma nova instância do Application Insights
Abra o arquivo main.bicep no Visual Studio Code.
Adicione o código realçado à seção de variáveis do seu arquivo:
// 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'
Adicione o seguinte código à parte inferior do ficheiro:
// 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 } }
Guarde as alterações ao ficheiro.
Modificar o arquivo Bicep para modificar o plano de serviço de aplicativo e o serviço de aplicativo
Abra o arquivo main.bicep no Visual Studio Code.
Altere o nome da sku do plano de serviço de aplicativo de
F1
paraS1
:// Resource - App Service Plan resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = { name: appServicePlanName location: location sku: { name: 'S1' capacity: 1 } }
Adicione o código realçado à conexão na instância do 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 } ] } } }
Guarde as alterações ao ficheiro.
Atualizar a pilha de implantação
Com o arquivo Bicep modificado, queremos atualizar a pilha de implantação para que as alterações feitas nos recursos no arquivo Bicep sejam implementadas.
Para atualizar a pilha de implantação, execute o seguinte comando do terminal no 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
Você recebe uma mensagem informando que a pilha já existe na assinatura atual. Se o valor da ação no parâmetro unmanage for alterado, o aviso alertará você sobre os novos valores. Pressione
y
, seguido de 'Enter'.Ele solicita que você insira um valor para
sqlServerAdminUserName
. Crie um nome para o administrador do SQL Server, seguido de 'Enter'.Ele solicita que você insira um valor para
sqlServerAdminPassword
. Crie uma senha complexa para o administrador do SQL Server, seguida por 'Enter'.Aguarde a conclusão da operação de atualização antes de passar para a próxima tarefa.
Com o arquivo Bicep modificado, queremos atualizar a pilha de implantação para que as alterações feitas no plano de serviço do aplicativo sejam implementadas.
Para atualizar a pilha de implantação, execute o seguinte comando do terminal no Visual Studio Code.
Set-AzResourceGroupDeploymentStack ` -Name stack-deposits ` -ResourceGroupName rg-depositsApplication ` -TemplateFile ./main.bicep ` -ActionOnUnmanage DetachAll ` -DenySettingsMode none
Ele solicita que você insira um valor para
sqlServerAdminUserName
. Crie um nome para o administrador do SQL Server, seguido de 'Enter'.Ele solicita que você insira um valor para
sqlServerAdminPassword
. Crie uma senha complexa para o administrador do SQL Server, seguida por 'Enter'.Aguarde a conclusão da operação de atualização antes de passar para a próxima tarefa.
Verifique a atualização para a pilha de implantação e os recursos gerenciados
Com a atualização concluída, queremos validar se a sku do plano de serviço de aplicativo está atualizada e se a pilha de implantação está gerenciando o espaço de trabalho existente do Log Analytics e a nova instância do Application Insights.
Para exibir a configuração do plano de serviço de aplicativo, execute o seguinte comando no terminal no Visual Studio Code.
az appservice plan show \ --name plan-deposits --resource-group rg-depositsApplication
Tome nota da seção sku da saída. O plano de serviço do aplicativo agora está no sku S1. Deve ser semelhante à seguinte saída:
"sku": { "capacity": 1, "family": "S", "name": "S1", "size": "S1", "tier": "Standard" },
Para exibir a configuração da pilha de implantação, execute o seguinte comando do terminal no Visual Studio Code.
az stack group show \ --resource-group rg-depositsApplication \ --name stack-deposits
Tome nota da secção de recursos da saída. Agora vemos o espaço de trabalho existente do Log Analytics e a nova instância do Application Insights listada como recursos gerenciados. O resultado deve ser semelhante à seguinte saída:
"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" } ],
Para exibir a configuração do plano de serviço de aplicativo, execute o seguinte comando no terminal no Visual Studio Code.
$plan = Get-AzAppServicePlan ` -ResourceGroupName rg-depositsApplication ` -Name plan-deposits $sku = $plan.Sku $sku
Tome nota da saída. O plano de serviço do aplicativo agora está no sku S1. Deve ser semelhante ao seguinte:
Name : S1 Tier : Standard Size : S1 Family : S Capacity : 1
Para exibir a configuração da pilha de implantação, execute o seguinte comando do terminal no Visual Studio Code.
Get-AzResourceGroupDeploymentStack ` -ResourceGroupName rg-depositsApplication ` -Name stack-deposits
Tome nota da secção de recursos da saída. Agora vemos o espaço de trabalho existente do Log Analytics e a nova instância do Application Insights listada como recursos gerenciados. O resultado deve ser semelhante à seguinte saída:
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