Creare uno stack di distribuzione

Completato

Uno stack di distribuzione di Azure è una raccolta di risorse Azure che possono essere gestite come singola unità anche se si estendono su più gruppi di risorse o sottoscrizioni.

Si sta pianificando la distribuzione della versione di test della nuova applicazione depositi. È necessario ottenere altre informazioni su come creare uno stack di distribuzione e verificarne le risorse gestite.

In questa unità si apprenderà a creare uno stack di distribuzione, a verificarne la distribuzione e a elencare tutti gli stack di distribuzione nell'ambiente.

Nota

I comandi riportati in questa unità vengono illustrati per spiegare i concetti. Non eseguire ancora i comandi. Presto sarà possibile provare quanto appreso.

Stack di distribuzione rivisitati

Gli stack di distribuzione cambiano il modo di pensare all'organizzazione delle risorse su più gruppi di risorse e sottoscrizioni. Uno stack di distribuzione consente di raggruppare tutte le risorse che costituiscono l'applicazione, indipendentemente dal posto che occupano nella gerarchia organizzativa delle risorse di Azure. È possibile gestirle come singola unità. Con gli stack di distribuzione, è possibile eseguire operazioni del ciclo di vita sulla raccolta di risorse che costituiscono lo stack.

Elemento grafico che rappresenta un'applicazione e la sua gestione da parte di uno stack di distribuzione con ambito gruppo di risorse.

Si considerino gli stack di distribuzione come una serie di puntatori che raggruppano le risorse dell'applicazione in una singola unità. Gli stack di distribuzione possono essere creati in ambiti diversi, ad esempio gruppi di risorse, sottoscrizioni e gruppi di gestione.

Definizione delle risorse

Gli stack di distribuzione supportano l'uso di file Bicep, modelli JSON ARM o specifiche di modello per la definizione delle risorse in uno stack. Quando si crea uno stack di distribuzione usando l'interfaccia della riga di comando di Azure o Azure PowerShell, è possibile puntare al file modello specifico (file Bicep o modello JSON ARM) o alla specifica del modello. Non è necessario modificare la modalità di definizione delle risorse.

Per il primo stack di distribuzione viene usato il file Bicep seguente. Il file definisce un piano di servizio app e un'app Web. Queste risorse diventano risorse gestite quando si crea lo stack di distribuzione.

// 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

È possibile notare la sintassi ${uniqueString(resourceGroup().id)} nel parametro webApplicationName. La funzione uniqueString crea una stringa in base all'ID del gruppo di risorse e la aggiunge come suffisso a webapp-deposits. Molti servizi di Azure richiedono nomi univoci. Questa funzione consente di generare un nome univoco.

Creazione di uno stack di distribuzione

La creazione e la distribuzione di uno stack di distribuzione e delle relative risorse sono quasi identiche a una distribuzione standard di Azure. Indipendentemente dal fatto che si usi l'interfaccia della riga di comando di Azure, Azure PowerShell o un'infrastruttura come la pipeline di codice, il processo è lo stesso. Ad esempio:

Il comando dell'interfaccia della riga di comando di Azure per distribuire un file Bicep in un gruppo di risorse è:

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

Il comando dell'interfaccia della riga di comando di Azure per creare uno stack di distribuzione nell'ambito del gruppo di risorse è:

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

Si noti che le uniche modifiche apportate al comando sono le parole deployment e stack e le differenze nei parametri usati. Lo stesso vale per le distribuzioni in sottoscrizioni e gruppi di gestione.

Nota

Nei moduli successivi viene illustrato come gestire le risorse di uno stack di distribuzione usando --action-on-unmanage e come evitare modifiche indesiderate usando --deny-settings-mode.

Il comando di Azure PowerShell per distribuire un file Bicep in un gruppo di risorse è:

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

Il comando di Azure PowerShell per creare uno stack di distribuzione nell'ambito del gruppo di risorse è:

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

Si noti che l'unica modifica al comando è la parola stack, oltre alle differenze nei parametri usati. Lo stesso vale per le distribuzioni in sottoscrizioni e gruppi di gestione.

Nota

Nei moduli successivi viene illustrato come gestire le risorse di uno stack di distribuzione usando -ActionOnUnmanage e come evitare modifiche indesiderate usando -DenySettingsMode.

A questo punto, si esamini la creazione di uno stack di distribuzione nell'ambito del gruppo di risorse.

Per creare uno stack di distribuzione usando l'interfaccia della riga di comando di Azure, usare il comando az stack group create. I comandi seguenti creano prima un gruppo di risorse denominato rg-depositsApplication, quindi creano lo stack di distribuzione nell'ambito del gruppo di risorse.

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

Per creare uno stack di distribuzione con Azure PowerShell, usare il comando New-AzResourceGroupDeploymentStack. I comandi seguenti creano prima un gruppo di risorse denominato rg-depositsApplication, quindi creano lo stack di distribuzione nell'ambito del gruppo di risorse.

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

Visualizzazione degli stack di distribuzione

I gruppi di risorse possono avere più stack di distribuzione con ambito. È possibile visualizzare informazioni dettagliate su uno stack di distribuzione specifico con ambito di un gruppo di risorse.

Per visualizzare una risorsa specifica dello stack di distribuzione con ambito di un gruppo di risorse usando l'interfaccia della riga di comando di Azure, usare il comando az stack group show, specificando il nome dello stack di distribuzione e il gruppo di risorse di destinazione.

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

I risultati includono le proprietà dello stack di distribuzione e lo stato delle risorse gestite. L'output dovrebbe essere simile alla sezione seguente:

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

Prendere nota della sezione delle risorse dell'output. Per ogni risorsa, mostra lo stato come managed, il relativo gruppo di risorse, il relativo ID risorsa e le impostazioni di rifiuto.

Per visualizzare una risorsa specifica dello stack di distribuzione con ambito di un gruppo di risorse usando Azure PowerShell, usare il comando Get-AzResourceGroupDeploymentStack, specificando il nome dello stack di distribuzione e il gruppo di risorse di destinazione.

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

I risultati includono le proprietà dello stack di distribuzione e lo stato delle risorse gestite. L'output dovrebbe essere simile alla sezione seguente:

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

Prendere nota della sezione delle risorse dell'output. Definisce le risorse gestite dallo stack di distribuzione. Viene visualizzato l'ID risorsa completo di ogni risorsa.

È possibile visualizzare gli stack di distribuzione anche nel portale di Azure. Sono disponibili nei rispettivi ambiti. Per un gruppo di risorse, accedere al gruppo di risorse per cui è stato limitato l'ambito dello stack di distribuzione. In Impostazioni viene visualizzata un'opzione per gli stack di distribuzione.

Screenshot del portale di Azure che mostra le impostazioni di un gruppo di risorse e la posizione in cui trovare gli stack di distribuzione.

Cliccando sugli stack di distribuzione, vengono elencati gli stack con ambito del gruppo di risorse. Cliccando su uno stack di distribuzione si passa alla pagina delle proprietà degli stack di distribuzione.

Screenshot del portale di Azure che mostra le proprietà di uno stack di distribuzione, incluse le risorse gestite.

Elenco degli stack di distribuzione

È inoltre possibile elencare tutti gli stack di distribuzione con ambito di un gruppo di risorse specifico.

Per elencare tutte le risorse dello stack di distribuzione con ambito di un gruppo di risorse usando l'interfaccia della riga di comando di Azure, usare il comando az stack group list, specificando il gruppo di risorse di destinazione.

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

Per elencare tutte le risorse dello stack di distribuzione con ambito di un gruppo di risorse usando Azure PowerShell, usare il comando Get-AzResourceGroupDeploymentStack, specificando il gruppo di risorse di destinazione.

Get-AzResourceGroupDeploymentStack `
    -ResourceGroupName rg-depositsApplication

Nota

Azure PowerShell usa lo stesso comando, Get-AzResourceGroupDeploymentStack sia per le operazioni show che list.