Criar uma pilha de implantação

Concluído

Uma pilha de implantação do Azure é uma coleção de recursos do Azure que podem ser gerenciados como uma única unidade, mesmo que abranjam vários grupos de recursos ou assinaturas.

Você está planejando a implantação da versão de teste do novo aplicativo de depósitos. Você precisa saber mais sobre como criar uma pilha de implantação e verificar seus recursos gerenciados.

Nesta unidade, você aprenderá a criar uma pilha de implantação, verificar sua implantação e listar todas as pilhas de implantação em seu ambiente.

Nota

Os comandos nesta unidade são mostrados para ilustrar conceitos. Não execute os comandos ainda. Você vai praticar o que você aprende aqui em breve.

Pilhas de implantação revisitadas

As pilhas de implantação alteram a forma como você pensa sobre a organização de recursos em grupos de recursos e assinaturas. Uma pilha de implantação permite que você agrupe todos os recursos que compõem seu aplicativo, independentemente de onde eles estejam em sua hierarquia organizacional de recursos do Azure. Você pode gerenciá-los como uma única unidade. Com pilhas de implantação, você pode executar operações de ciclo de vida na coleção de recursos que compõem a pilha.

Um gráfico que representa um aplicativo e seu gerenciado por uma pilha de implantação com escopo de grupo de recursos.

Pense nas pilhas de implantação como uma série de ponteiros que agrupam os recursos do seu aplicativo em uma única unidade. As pilhas de implantação podem ser criadas em escopos diferentes, como grupos de recursos, assinaturas e grupos de gerenciamento.

Definir recursos

As pilhas de implantação suportam o uso de arquivos Bicep, modelos JSON ARM ou especificações de modelo para definir recursos em uma pilha. Ao criar uma pilha de implantação usando a CLI do Azure ou o Azure PowerShell, você pode apontar para o arquivo de modelo específico (arquivo Bicep ou modelo JSON ARM) ou especificação de modelo. Não é necessário alterar a forma como define os seus recursos.

Usamos o seguinte arquivo Bicep para nossa primeira pilha de implantação. O arquivo define um plano de serviço de aplicativo e um aplicativo Web. Esses recursos se tornam recursos gerenciados quando criamos a pilha de implantação.

// Parameters
@description('The location for all resources.')
param location string = 'eastus'

@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
  }
}

Nota

Você pode notar a ${uniqueString(resourceGroup().id)} sintaxe no webApplicationName parâmetro. A função uniqueString cria uma cadeia de caracteres com base na id do grupo de recursos e a adiciona como um sufixo ao webapp-deposits. Muitos serviços do Azure exigem nomes exclusivos. Esta função ajuda a gerar um nome exclusivo.

Criando uma pilha de implantação

Criar e implantar uma pilha de implantação e seus recursos é quase idêntico a uma implantação padrão do Azure. Se você estiver usando a CLI do Azure, o Azure PowerShell ou uma infraestrutura como pipeline de código, o processo parece o mesmo. Por exemplo:

O comando da CLI do Azure para implantar um arquivo Bicep em um grupo de recursos é:

az deployment group create \
    --resource-group rg-depositsApplication \
    --template-file ./main.bicep

O comando da CLI do Azure para criar uma pilha de implantação no escopo do grupo de recursos é:

az stack group create \
    --name stack-deposits \
    --resource-group rg-depositsApplication \
    --template-file ./main.bicep \
    --action-on-unmanage detachAll \
    --deny-settings-mode none

Observe que as únicas alterações no comando são as palavras deployment e stack, e diferenças nos parâmetros usados. O mesmo vale para implantações em assinaturas e grupos de gerenciamento.

Nota

Em módulos posteriores, exploramos como gerenciar os recursos de uma pilha de implantação usando --action-on-unmanage e como evitar alterações indesejadas usando --deny-settings-modeo .

O comando do Azure PowerShell para implantar um arquivo Bicep em um grupo de recursos é:

New-AzResourceGroupDeployment `
    -ResourceGroupName rg-depositsApplication `
    -TemplateFile ./main.bicep

O comando do Azure PowerShell para criar uma pilha de implantação no escopo do grupo de recursos é:

New-AzResourceGroupDeploymentStack `
    -Name stack-deposits `
    -ResourceGroupName rg-depositsApplication `
    -TemplateFile ./main.bicep `
    -ActionOnUnmanage DetachAll `
    -DenySettingsMode None

Observe que a única alteração no comando é a palavra stack, e diferenças nos parâmetros usados. O mesmo vale para implantações em assinaturas e grupos de gerenciamento.

Nota

Em módulos posteriores, exploramos como gerenciar os recursos de uma pilha de implantação usando -ActionOnUnmanage e como evitar alterações indesejadas usando -DenySettingsModeo .

Agora, vamos dar uma olhada na criação de uma pilha de implantação no escopo do grupo de recursos.

Para criar uma pilha de implantação usando a CLI do Azure, use o az stack group create comando. Os comandos a seguir primeiro criam um grupo de recursos chamado rg-depositsApplication e, em seguida, criam a pilha de implantação no escopo do grupo de recursos.

az group create \
    --name rg-depositsApplication \
    --location eastus
az stack group create \
    --name stack-deposits \
    --resource-group rg-depositsApplication \
    --template-file ./main.bicep \
    --action-on-unmanage detachAll \
    --deny-settings-mode none

Para criar uma pilha de implantação usando o Azure PowerShell, use o New-AzResourceGroupDeploymentStack comando. Os comandos a seguir primeiro criam um grupo de recursos chamado rg-depositsApplication e, em seguida, criam a pilha de implantação no escopo do grupo de recursos.

New-AzResourceGroup `
    -Name rg-depositsApplication `
    -Location eastus
New-AzResourceGroupDeploymentStack `
    -Name stack-deposits `
    -ResourceGroupName rg-depositsApplication `
    -TemplateFile ./main.bicep `
    -ActionOnUnmanage DetachAll `
    -DenySettingsMode None

Mostrando pilhas de implantação

Os grupos de recursos podem ter várias pilhas de implantação com escopo para eles. Você pode mostrar detalhes sobre uma pilha de implantação específica com escopo para um grupo de recursos.

Para mostrar um recurso de pilha de implantação específico com escopo para um grupo de recursos usando a CLI do Azure, use o az stack group show comando, especificando o nome da pilha de implantação e o grupo de recursos de destino.

az stack group show \
    --resource-group rg-depositsApplication \
    --name stack-deposits

Os resultados incluem as propriedades da pilha de implantação e o status dos recursos gerenciados. A saída deve parecer familiar para a seguinte seção:

{
  "actionOnUnmanage": {
    "managementGroups": "detach",
    "resourceGroups": "detach",
    "resources": "detach"
  },
  "bypassStackOutOfSyncError": null,
  "correlationId": ".",
  "debugSetting": null,
  "deletedResources": [],
  "denySettings": {
    "applyToChildScopes": false,
    "excludedActions": null,
    "excludedPrincipals": null,
    "mode": "none"
  },
  "deploymentId": "/subscriptions/././rg-depositsApplication/./Microsoft.Resources/deployments/stack-deposits",
  "deploymentScope": null,
  "description": null,
  "detachedResources": [],
  "duration": "PT2M53.2734284S",
  "error": null,
  "failedResources": [],
  "id": "/subscriptions/././rg-depositsApplication/./Microsoft.Resources/deploymentStacks/stack-deposits",
  "location": null,
  "name": "stack-deposits",
  "outputs": null,
  "parametersLink": null,
  "provisioningState": "succeeded",
  "resourceGroup": "rg-depositsApplication",
  "resources": [
    {
      "denyStatus": "none",
      "id": "/subscriptions/././rg-depositsApplication/././serverfarms/plan-deposits",
      "resourceGroup": "rg-depositsApplication",
      "status": "managed"
    },
    {
      "denyStatus": "none",
      "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-eque2jlrboltq",
      "resourceGroup": "rg-depositsApplication",
      "status": "managed"
    }
  ],
  "systemData": {
    "createdAt": "2024-01-01T00:00:01.000000+00:00",
    "createdBy": "depositsapplication@contoso.com",
    "createdByType": "User",
    "lastModifiedAt": "2024-01-01T00:00:01.000000+00:00",
    "lastModifiedBy": "depositsapplication@contoso.com",
    "lastModifiedByType": "User"
  },
  "tags": {},
  "template": null,
  "templateLink": null,
  "type": "Microsoft.Resources/deploymentStacks"
}

Tome nota da secção de recursos da saída. Para cada recurso, ele mostra seu status como managed, seu grupo de recursos, sua ID de recurso e suas configurações de negação.

Para mostrar um recurso de pilha de implantação específico com escopo para um grupo de recursos usando o Azure PowerShell, use o Get-AzResourceGroupDeploymentStack comando, especificando o nome da pilha de implantação e o grupo de recursos de destino.

Get-AzResourceGroupDeploymentStack `
    -ResourceGroupName rg-depositsApplication `
    -Name stack-deposits

Os resultados incluem as propriedades da pilha de implantação e o status dos recursos gerenciados. A saída deve parecer familiar para a seguinte seção:

Id                            : /subscriptions/././rg-depositsApplication/././deploymentStacks/stack-deposits
Name                          : stack-deposits
ProvisioningState             : succeeded
resourcesCleanupAction        : detach
resourceGroupsCleanupAction   : detach
managementGroupsCleanupAction : detach
CorrelationId                 : .
DenySettingsMode              : none
CreationTime(UTC)             : 1/01/2024 0:00:01 AM
DeploymentId                  : /subscriptions/././rg-depositsApplication/././deployments/stack-deposits
Resources                     : /subscriptions/././rg-depositsApplication/././serverfarms/plan-deposits
                                /subscriptions/././rg-depositsApplication/././sites/webapp-eque2jlrboltq

Tome nota da secção de recursos da saída. Ele define os recursos gerenciados pela pilha de implantação. Você vê a ID completa do recurso de cada recurso.

Você também pode exibir pilhas de implantação no portal do Azure. Eles estão disponíveis em seus respetivos escopos. Para um grupo de recursos, navegue até o grupo de recursos onde a pilha de implantação tem o escopo. Em configurações, você verá uma opção para pilhas de implantação.

Uma captura de tela do portal do Azure mostrando as configurações de um grupo de recursos e onde encontrar pilhas de implantação.

Quando você clica em pilhas de implantação, ele lista todas as pilhas com escopo para o grupo de recursos. Clicar em uma pilha de implantação leva você à página de propriedades das pilhas de implantação.

Uma captura de tela do portal do Azure mostrando as propriedades de uma pilha de implantação, incluindo seus recursos gerenciados.

Listando pilhas de implantação

Você também pode listar todas as pilhas de implantação com escopo para um grupo de recursos específico.

Para listar todos os recursos da pilha de implantação com escopo para um grupo de recursos usando a CLI do Azure, use o az stack group list comando, especificando o grupo de recursos de destino.

az stack group list \
    --resource-group rg-depositsApplication

Para listar todos os recursos da pilha de implantação com escopo para um grupo de recursos usando o Azure PowerShell, use o Get-AzResourceGroupDeploymentStack comando, especificando o grupo de recursos de destino.

Get-AzResourceGroupDeploymentStack `
    -ResourceGroupName rg-depositsApplication

Nota

O Azure PowerShell usa o mesmo comando, Get-AzResourceGroupDeploymentStack para as operações show e list.