Share via


Início Rápido: Criar e implementar uma pilha de implementação com o Bicep

Este início rápido descreve como criar uma pilha de implementação.

Pré-requisitos

Criar um ficheiro Bicep

Crie um ficheiro Bicep para criar uma conta de armazenamento e uma rede virtual.

param resourceGroupLocation string = resourceGroup().location
param storageAccountName string = 'store${uniqueString(resourceGroup().id)}'
param vnetName string = 'vnet${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: storageAccountName
  location: resourceGroupLocation
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2022-11-01' = {
  name: vnetName
  location: resourceGroupLocation
  properties: {
    addressSpace: {
      addressPrefixes: [
        '10.0.0.0/16'
      ]
    }
    subnets: [
      {
        name: 'Subnet-1'
        properties: {
          addressPrefix: '10.0.0.0/24'
        }
      }
      {
        name: 'Subnet-2'
        properties: {
          addressPrefix: '10.0.1.0/24'
        }
      }
    ]
  }
}

Guarde o ficheiro Bicep como main.bicep.

Criar uma pilha de implementação

Neste início rápido, vai criar a pilha de implementação no âmbito do grupo de recursos. Também pode criar a pilha de implementação no âmbito da subscrição ou no âmbito do grupo de gestão. Para obter mais informações, veja Criar pilhas de implementação.

az group create \
  --name 'demoRg' \
  --location 'centralus'

az stack group create \
  --name demoStack \
  --resource-group 'demoRg' \
  --template-file './main.bicep' \
  --deny-settings-mode 'none'

Verificar a implementação

Para listar as pilhas de implementação implementadas ao nível do grupo de recursos:

az stack group show \
  --resource-group 'demoRg' \
  --name 'demoStack'

O resultado mostra dois recursos geridos: uma conta de armazenamento e uma rede virtual:

{
  "actionOnUnmanage": {
    "managementGroups": "detach",
    "resourceGroups": "detach",
    "resources": "detach"
  },
  "debugSetting": null,
  "deletedResources": [],
  "denySettings": {
    "applyToChildScopes": false,
    "excludedActions": null,
    "excludedPrincipals": null,
    "mode": "none"
  },
  "deploymentId": "/subscriptions/00000000-0000-0000-0000-000000000000/demoRg/providers/Microsoft.Resources/deployments/demoStack-2023-06-08-14-58-28-fd6bb",
  "deploymentScope": null,
  "description": null,
  "detachedResources": [],
  "duration": "PT30.1685405S",
  "error": null,
  "failedResources": [],
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/demoRg/providers/Microsoft.Resources/deploymentStacks/demoStack",
  "location": null,
  "name": "demoStack",
  "outputs": null,
  "parameters": {},
  "parametersLink": null,
  "provisioningState": "succeeded",
  "resourceGroup": "demoRg",
  "resources": [
    {
      "denyStatus": "none",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/demoRg/providers/Microsoft.Network/virtualNetworks/vnetthmimleef5fwk",
      "resourceGroup": "demoRg",
      "status": "managed"
    },
    {
      "denyStatus": "none",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/demoRg/providers/Microsoft.Storage/storageAccounts/storethmimleef5fwk",
      "resourceGroup": "demoRg",
      "status": "managed"
    }
  ],
  "systemData": {
    "createdAt": "2023-06-08T14:58:28.377564+00:00",
    "createdBy": "johndole@contoso.com",
    "createdByType": "User",
    "lastModifiedAt": "2023-06-08T14:58:28.377564+00:00",
    "lastModifiedBy": "johndole@contoso.com",
    "lastModifiedByType": "User"
  },
  "tags": null,
  "template": null,
  "templateLink": null,
  "type": "Microsoft.Resources/deploymentStacks"
}

Também pode verificar a implementação ao listar os recursos geridos na pilha de implementação:

az stack group show \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --output 'json'

O resultado é semelhante a:

{
  "actionOnUnmanage": {
    "managementGroups": "detach",
    "resourceGroups": "detach",
    "resources": "detach"
  },
  "debugSetting": null,
  "deletedResources": [],
  "denySettings": {
    "applyToChildScopes": false,
    "excludedActions": null,
    "excludedPrincipals": null,
    "mode": "none"
  },
  "deploymentId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/demoRg/providers/Microsoft.Resources/deployments/demoStack-2023-06-05-20-55-48-38d09",
  "deploymentScope": null,
  "description": null,
  "detachedResources": [],
  "duration": "PT29.006353S",
  "error": null,
  "failedResources": [],
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/demoRg/providers/Microsoft.Resources/deploymentStacks/demoStack",
  "location": null,
  "name": "demoStack",
  "outputs": null,
  "parameters": {},
  "parametersLink": null,
  "provisioningState": "succeeded",
  "resourceGroup": "demoRg",
  "resources": [
    {
      "denyStatus": "none",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/demoRg/providers/Microsoft.Network/virtualNetworks/vnetzu6pnx54hqubm",
      "resourceGroup": "demoRg",
      "status": "managed"
    },
    {
      "denyStatus": "none",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/demoRg/providers/Microsoft.Storage/storageAccounts/storezu6pnx54hqubm",
      "resourceGroup": "demoRg",
      "status": "managed"
    }
  ],
  "systemData": {
    "createdAt": "2023-06-05T20:55:48.006789+00:00",
    "createdBy": "johndole@contoso.com",
    "createdByType": "User",
    "lastModifiedAt": "2023-06-05T20:55:48.006789+00:00",
    "lastModifiedBy": "johndole@contoso.com",
    "lastModifiedByType": "User"
  },
  "tags": null,
  "template": null,
  "templateLink": null,
  "type": "Microsoft.Resources/deploymentStacks"
}

Assim que uma pilha for criada, pode aceder e ver a própria pilha e os recursos geridos associados através do portal do Azure. Navegue para o grupo de recursos onde a pilha foi implementada e pode aceder a todas as informações e definições relevantes.

Captura de ecrã de uma pilha de implementação no portal do Azure.

Atualizar a pilha de implementação

Para atualizar uma pilha de implementação, pode modificar o ficheiro Bicep subjacente e executar novamente o comando criar pilha de implementação.

Edite main.bicep para alterar o nome do sku para Standard_GRS de Standard_LRS:

Execute o seguinte comando:

az stack group create \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --template-file './main.bicep' \
  --deny-settings-mode 'none'

No portal do Azure, verifique as propriedades da conta de armazenamento para confirmar a alteração.

Com o mesmo método, pode adicionar um recurso à pilha de implementação ou remover um recurso gerido da pilha de implementação. Para obter mais informações, veja Adicionar recursos a uma pilha de implementação e Eliminar recursos geridos de uma pilha de implementação.

Eliminar a pilha de implementação

Para eliminar a pilha de implementação e os recursos geridos:

az stack group delete \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --delete-all

Se executar os comandos de eliminação sem eliminar todos os parâmetros, os recursos geridos serão desanexados, mas não eliminados. Por exemplo:

az stack group delete \
  --name 'demoStack' \
  --resource-group 'demoRg'

Os seguintes parâmetros podem ser utilizados para controlar entre desencaixar e eliminar.

  • --delete-all: elimine os recursos e os grupos de recursos.
  • --delete-resources: elimine apenas os recursos.
  • --delete-resource-groups: elimine apenas os grupos de recursos. É inválido utilizar delete-resource-groups por si só. delete-resource-groups tem de ser utilizado em conjunto com delete-resources.

Para obter mais informações, veja Eliminar pilhas de implementação.

O comando remover remove exclusivamente recursos geridos e grupos de recursos geridos. Continua a ser responsável por eliminar os grupos de recursos que não são geridos pela pilha de implementação.

Limpar os recursos

Elimine o grupo de recursos não gerido.

az group delete --name 'demoRg'

Passos seguintes