Exercício - Desanexar e excluir recursos gerenciados de uma pilha de implantação

Concluído

O Sprint 3 do novo aplicativo de depósitos está chegando ao fim. A equipe de depósitos solicitou que você desanexasse o Workspace do Log Analytics e a instância do Application Insights da pilha de implantação. Esses recursos precisam continuar existindo no Azure. Além disso, eles solicitaram que o servidor e o banco de dados SQL do Azure fossem excluídos da pilha de implantação e do Azure.

Neste exercício, você vai desanexar e excluir os recursos do Azure da pilha de implantação que não são mais necessários para o aplicativo de depósitos. Você começa desanexando os recursos da pilha de implantação que precisam continuar existindo no Azure. Em seguida, você deve excluir os recursos da pilha de implantação que não são mais necessários. Por fim, você deve excluir a pilha de implantação, seus recursos gerenciados e o grupo de recursos.

Durante o processo, você

  • Modificará o arquivo Bicep para remover o Workspace do Log Analytics e a instância do Application Insights
  • Atualizar a pilha de implantação para desanexar os recursos gerenciados
  • Validar os recursos gerenciados da pilha de implantação e os recursos desanexados
  • Modifique o arquivo Bicep para remover o servidor e o banco de dados SQL do Azure
  • Atualizar a pilha de implantação para excluir os recursos gerenciados
  • Valide os recursos gerenciados da pilha de implantação e os recursos excluídos
  • Exclua a pilha de implantação e os recursos gerenciados.
  • Valide a exclusão da pilha de implantação e dos recursos gerenciados.

Modificar o arquivo Bicep para desanexar o Workspace do Log Analytics e a instância do Application Insights

A equipe de depósitos solicitou que desconectássemos o Workspace do Log Analytics e a instância do Application Insights da pilha de implantação. Eles também solicitaram que os recursos continuassem existindo no Azure. Começamos modificando o arquivo Bicep.

  1. Abra o arquivo main.bicep no Visual Studio Code.

  2. Remova o código destacado da 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'
    
  3. Remova o código realçado da seção de recursos do arquivo:

    // 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
      }
    }
    
  4. Salve as alterações no arquivo.

Atualizar a pilha de implantação para desanexar os recursos gerenciados

Com o arquivo Bicep modificado, queremos atualizar a pilha de implantação para que o Workspace do Log Analytics e a instância do Application Insights sejam desanexados da pilha. Usamos --action-on-unmanage detachAll para obter esse resultado.

  1. Para atualizar a pilha de implantação, execute o comando a seguir no 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
    
  2. Você receberá uma mensagem informando que a pilha já existe na assinatura atual. Se o valor do parâmetro action on unmanage for alterado, o aviso alertará você sobre os novos valores. Pressione y e, em seguida, “Enter”.

    Captura de tela que mostra a linha de comando da CLI do Azure avisando que a pilha de implantação já existe.

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 o Workspace do Log Analytics e a instância do Application Insights sejam desanexados da pilha. Usamos ActionOnUnmanage DetachAll para obter esse resultado.

  1. Para atualizar a pilha de implantação, execute o comando a seguir no terminal no Visual Studio Code.

    Set-AzResourceGroupDeploymentStack `
        -Name stack-deposits `
        -ResourceGroupName rg-depositsApplication `
        -TemplateFile ./main.bicep `
        -ActionOnUnmanage DetachAll `
        -DenySettingsMode none
    
  2. Aguarde a conclusão da operação de atualização antes de passar para a próxima tarefa.

Validar os recursos gerenciados da pilha de implantação e os recursos desanexados

Com a atualização concluída, queremos validar que a pilha de implantação não está mais gerenciando o Workspace do Log Analytics e a instância do Application Insights.

  1. Para ver a configuração da pilha de implantação, execute o comando a seguir no terminal no Visual Studio Code.

    az stack group show \
        --resource-group rg-depositsApplication \
        --name stack-deposits
    
  2. Observe a seção actionOnUnmanage da saída. Os valores estão todos definidos como detach. Esse resultado se deve ao fato de você ter realizado a atualização da pilha de implantação com --action-on-unmanage detachAll.

    "actionOnUnmanage": {
      "managementGroups": "detach",
      "resourceGroups": "detach",
      "resources": "detach"
    },
    
  3. Agora observe a seção de recursos da saída. Não vemos mais o Workspace do Log Analytics e a instância do Application Insights como recursos gerenciados.

    "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"
      }
    ],
    

Com a atualização concluída, queremos validar que a pilha de implantação não está mais gerenciando o Workspace do Log Analytics e a instância do Application Insights.

  1. Para ver a configuração da pilha de implantação, execute o comando a seguir no terminal no Visual Studio Code.

    Get-AzResourceGroupDeploymentStack `
        -ResourceGroupName rg-depositsApplication `
        -Name stack-deposits
    
  2. Observe os valores de resourcesCleanupAction, resourceGroupsCleanupAction e managementGroupsCleanupAction. Os valores estão todos definidos como detach. Esse resultado se deve ao fato de você ter realizado a atualização da pilha de implantação com -ActionOnUnmanage DetachAll.

    resourcesCleanupAction        : detach
    resourceGroupsCleanupAction   : detach
    managementGroupsCleanupAction : detach
    
  3. Agora observe a seção de recursos da saída. Não vemos mais o Workspace do Log Analytics e a instância do Application Insights como recursos gerenciados.

    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
    

Vamos validar nossa pilha de implantação no portal do Azure.

  1. Acesse o portal do Azure.

  2. No painel do lado esquerdo, selecione Grupos de recursos.

  3. Selecione rg-depositsApplication.

  4. Se necessário, expanda o menu configurações.

  5. Selecione Estacas de implantação.

  6. Selecione stack-deposits.

  7. Verifique se você tem quatro recursos gerenciados e dois recursos desanexados (Log Analytics e Application Insights).

    Uma captura de tela mostrando o portal do Azure representando uma pilha de implantação e seus recursos gerenciados e recursos desanexados.

Modifique o arquivo Bicep para desanexar e excluir o servidor e o banco de dados SQL do Azure

A equipe de depósitos solicitou que desanexássemos e excluíssemos o servidor e o banco de dados SQL do Azure da pilha de implantação e do Azure. Começamos modificando o arquivo Bicep.

  1. Reabra o arquivo main.bicep no Visual Studio Code.

  2. Remova o código destacado da seção de parâmetros do seu arquivo:

    // 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)}'
    
  3. Remova o código realçado da seção de recursos do arquivo:

    // 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'
      }
    }
    
  4. Salve as alterações no arquivo.

Atualizar a pilha de implantação para excluir os recursos gerenciados

Com o arquivo Bicep modificado, queremos atualizar a pilha de implantação para que o servidor e o banco de dados SQL do Azure sejam desanexados da pilha e excluídos do Azure. Usamos --action-on-unmanage deleteAll para obter esse resultado. Essa ação também exclui o Workspace do Log Analytics e a instância do Application Insights que desconectamos na última seção.

  1. Para atualizar a pilha de implantação, execute o comando a seguir no terminal no Visual Studio Code.

    az stack group create \
        --name stack-deposits \
        --resource-group rg-depositsApplication \
        --template-file ./main.bicep \
        --action-on-unmanage deleteAll \
        --deny-settings-mode none
    
  2. Você receberá uma mensagem informando que a pilha já existe na assinatura atual. Se o valor do parâmetro action on unmanage for alterado, o aviso alertará você sobre os novos valores. Pressione y e, em seguida, “Enter”.

    Captura de tela que mostra a linha de comando da CLI do Azure avisando que a pilha de implantação já existe.

  3. 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 o servidor e o banco de dados SQL do Azure sejam desanexados da pilha e excluídos do Azure. Usamos -ActionOnUnmanage DeleteAll para fazer isso. Essa ação também exclui o Workspace do Log Analytics e a instância do Application Insights que desconectamos na última seção.

  1. Para atualizar a pilha de implantação, execute o comando a seguir no terminal no Visual Studio Code.

    Set-AzResourceGroupDeploymentStack `
        -Name stack-deposits `
        -ResourceGroupName rg-depositsApplication `
        -TemplateFile ./main.bicep `
        -ActionOnUnmanage DeleteAll `
        -DenySettingsMode none
    
  2. Aguarde a conclusão da operação de atualização antes de passar para a próxima tarefa.

Validar os recursos gerenciados da pilha de implantação

Com a atualização concluída, queremos validar se a pilha de implantação não está mais gerenciando o Workspace do Log Analytics, a instância do Application Insights e o servidor e banco de dados SQL do Azure. Também queremos verificar se os recursos foram excluídos do Azure.

  1. Para ver a configuração da pilha de implantação, execute o comando a seguir no terminal no Visual Studio Code.

    az stack group show \
        --resource-group rg-depositsApplication \
        --name stack-deposits
    
  2. Observe a seção actionOnUnmanage da saída. Os valores estão todos definidos como delete. Esse resultado se deve ao fato de você ter realizado a atualização da pilha de implantação com --action-on-unmanage deleteAll.

    "actionOnUnmanage": {
      "managementGroups": "delete",
      "resourceGroups": "delete",
      "resources": "delete"
    },
    
  3. Agora observe a seção de recursos da saída. Não vemos mais o servidor e o banco de dados SQL do Azure como recursos gerenciados.

    "resources": [
      {
        "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"
      }
    ],
    

Com a atualização concluída, queremos validar se a pilha de implantação não está mais gerenciando o Workspace do Log Analytics, a instância do Application Insights e o servidor e banco de dados SQL do Azure. Também queremos verificar se os recursos foram excluídos do Azure.

  1. Para ver a configuração da pilha de implantação, execute o comando a seguir no terminal no Visual Studio Code.

    Get-AzResourceGroupDeploymentStack `
        -ResourceGroupName rg-depositsApplication `
        -Name stack-deposits
    
  2. Observe os valores de resourcesCleanupAction, resourceGroupsCleanupAction e managementGroupsCleanupAction. Os valores estão todos definidos como delete. Esse resultado se deve ao fato de você ter realizado a atualização da pilha de implantação com -ActionOnUnmanage DeleteAll.

    resourcesCleanupAction        : delete
    resourceGroupsCleanupAction   : delete
    managementGroupsCleanupAction : delete
    
  3. Agora observe a seção de recursos da saída. Não vemos mais o servidor e o banco de dados SQL do Azure como recursos gerenciados.

    Resources                     : /subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm
    
  1. Retorne ao portal do Azure.

  2. No painel do lado esquerdo, selecione Grupos de recursos.

  3. Selecione rg-depositsApplication.

  4. Se necessário, expanda o menu configurações.

  5. Selecione Estacas de implantação.

  6. Selecione stack-deposits.

  7. Verifique se o plano do serviço de aplicativo e o serviço de aplicativo ainda existem como recursos gerenciados e se nossos outros recursos foram excluídos.

    Uma captura de tela mostrando o portal do Azure representando uma pilha de implantação e seus dois recursos gerenciados.

Excluir a implantação de pilha

  1. Para excluir a pilha de implantação e os recursos gerenciados, execute o comando a seguir no terminal no Visual Studio Code.

    az stack group delete \
        --name stack-deposits \
        --resource-group rg-depositsApplication \
        --action-on-unmanage deleteAll
    
  2. Ele solicita que você confirme se deseja excluir a pilha e os recursos especificados.

    Captura de tela que mostra a linha de comando com uma solicitação de confirmação da exclusão da pilha de implantação usando a CLI do Azure.

  3. Após a operação de exclusão, abra o portal do Azure e verifique se a pilha de implantação e os recursos foram removidos.

  4. Para excluir o grupo de recursos usado nesses exercícios, execute o comando a seguir no terminal no Visual Studio Code.

    az group delete \
        -name rg-depositsApplication
    
  5. Ele solicita que você confirme se deseja remover o grupo de recursos. Pressione “S” e, em seguida, “Enter”.

    Captura de tela que mostra a linha de comando com uma solicitação de confirmação da exclusão do grupo de recursos usando a CLI do Azure.

  1. Para excluir a pilha de implantação e os recursos gerenciados, execute o comando a seguir no terminal no Visual Studio Code.

    Remove-AzResourceGroupDeploymentStack `
        -Name stack-deposits `
        -ResourceGroupName rg-depositsApplication `
        -ActionOnUnmanage DeleteAll
    
  2. Ele solicita que você confirme se deseja excluir a pilha e os recursos especificados.

    Captura de tela que mostra a linha de comando com uma solicitação de confirmação da exclusão da pilha de implantação usando o Azure PowerShell.

  3. Após a operação de exclusão, abra o portal do Azure e verifique se a pilha de implantação e os recursos foram removidos.

  4. Para excluir o grupo de recursos usado nesses exercícios, execute o comando a seguir no terminal no Visual Studio Code.

    Remove-AzResourceGroup `
        -Name rg-depositsApplication
    
  5. Ele solicita que você confirme se deseja remover o grupo de recursos. Pressione “S” e, em seguida, “Enter”.

    Captura de tela que mostra a linha de comando com uma solicitação de confirmação da exclusão do grupo de recursos usando o Azure PowerShell.

  1. Retorne ao portal do Azure.

  2. No painel do lado esquerdo, selecione Grupos de recursos.

  3. Verifique se o rg-depositsApplication não existe mais.