Guida introduttiva: Creare e distribuire uno stack di distribuzione con Bicep

Questa guida introduttiva descrive come creare uno stack di distribuzione.

Prerequisiti

Creare un file Bicep

Creare un file Bicep per creare un account di archiviazione e una rete virtuale.

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'
        }
      }
    ]
  }
}

Salvare il file Bicep come main.bicep.

Creare uno stack di distribuzione

In questa guida introduttiva si crea lo stack di distribuzione nell'ambito del gruppo di risorse. È anche possibile creare lo stack di distribuzione nell'ambito della sottoscrizione o nell'ambito del gruppo di gestione. Per ulteriori informazioni, vedere Creare stack di distribuzione.

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

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

Verificare la distribuzione

Per elencare gli stack di distribuzione distribuiti a livello di gruppo di risorse:

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

L'output mostra due risorse gestite: un account di archiviazione e una rete virtuale:

{
  "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"
}

È anche possibile verificare la distribuzione elencando le risorse gestite nello stack di distribuzione:

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

L'output è simile 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"
}

Dopo aver creato uno stack, è possibile accedere e visualizzare sia lo stack stesso che le risorse gestite associate tramite il portale di Azure. Passare al gruppo di risorse in cui è stato distribuito lo stack ed è possibile accedere a tutte le informazioni e le impostazioni pertinenti.

Screenshot of a deployment stack in the Azure portal.

Aggiornare lo stack di distribuzione

Per aggiornare uno stack di distribuzione, è possibile modificare il file Bicep sottostante e rieseguire il comando crea stack di distribuzione.

Modificare main.bicep per modificare il nome dello SKU in Standard_GRS da Standard_LRS:

Esegui questo comando:

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

Nel portale di Azure controllare le proprietà dell'account di archiviazione per confermare la modifica.

Usando lo stesso metodo, è possibile aggiungere una risorsa allo stack di distribuzione o rimuovere una risorsa gestita dallo stack di distribuzione. Per altre informazioni, vedere Aggiungere risorse a uno stack di distribuzione ed Eliminare risorse gestite da uno stack di distribuzione.

Eliminare lo stack di distribuzione

Per eliminare lo stack di distribuzione e le risorse gestite:

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

Se si eseguono i comandi di eliminazione senza eliminare tutti i parametri, le risorse gestite vengono scollegate ma non eliminate. Ad esempio:

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

I parametri seguenti possono essere usati per controllare tra scollegamento ed eliminazione.

  • --delete-all: elimina sia le risorse che i gruppi di risorse.
  • --delete-resources: elimina le sole risorse.
  • --delete-resource-groups: elimina i soli gruppi di risorse. Non è valido usare delete-resource-groups da solo. delete-resource-groups deve essere usato insieme a delete-resources.

Per ulteriori informazioni, vedere Eliminare stack di distribuzione.

Il comando rimuovi rimuove esclusivamente le risorse gestite e i gruppi di risorse gestiti. L'utente è comunque responsabile dell'eliminazione dei gruppi di risorse non gestiti dallo stack di distribuzione.

Pulire le risorse

Eliminare il gruppo di risorse non gestito.

az group delete --name 'demoRg'

Passaggi successivi