Pubblicare il codice Bicep da un flusso di lavoro di distribuzione

Completato

Quando si automatizza il processo di pubblicazione per una specifica di modello o un modulo Bicep, è necessario assicurarsi che tutte le operazioni svolte normalmente in autonomia possano essere automatizzate ed eseguite all'interno del flusso di lavoro. Questa unità illustra come applicare alcuni dei principi appresi in precedenza per quanto riguarda la pubblicazione delle specifiche di modello e dei moduli Bicep da un flusso di lavoro di distribuzione.

Moduli e specifiche di modello

Bicep consente di riutilizzare facilmente il codice tra le distribuzioni tramite i due approcci comuni seguenti:

  • Specifiche di modello, che sono ottimizzate per la distribuzione di soluzioni complete. Si supponga, ad esempio, di aver definito un set di risorse con protezione avanzata in termini di sicurezza per distribuire una macchina virtuale completa in base alle specifiche dell'azienda. È possibile pubblicare questo codice come specifica di modello. I colleghi possono quindi usare la specifica di modello per distribuire una macchina virtuale completa, anche dal portale di Azure.
  • Moduli, progettati per essere componenti di altre distribuzioni. Si supponga, ad esempio, di aver creato un file Bicep in grado di creare un account di archiviazione. È probabile che sia necessario disporre di account di archiviazione in molte altre distribuzioni, quindi è possibile pubblicare il file Bicep in un registro e usarlo come modulo per tutte le distribuzioni dell'organizzazione.

Quando si deve decidere tra specifiche di modello e moduli Bicep, una valida regola generale da seguire è: se il modello verrà distribuito così com'è in tutta l'organizzazione, le specifiche di modello sono probabilmente la soluzione adatta. Se invece si prevede di riutilizzare questo modello in più modelli padre, i moduli Bicep potrebbero essere la scelta migliore.

Convalidare il codice riutilizzabile in un flusso di lavoro

A differenza delle normali distribuzioni Bicep, la creazione di una specifica di modello o di un modulo non comporta la distribuzione delle risorse direttamente in Azure. Al contrario, si pubblica la specifica di modello o il modulo per usarli in seguito in un'altra distribuzione che distribuirà le risorse specificate. A causa di questa differenza, le modalità per convalidare e testare le specifiche di modello e i moduli Bicep potrebbero essere diverse rispetto al processo usato per le normali distribuzioni Bicep.

È consigliabile eseguire il linting del codice Bicep. Il linter rileva i problemi sintattici e avvisa nel caso in cui ci si discosti dalle procedure consigliate.

Oltre al linting, è consigliabile valutare la possibilità di testare i moduli e le specifiche di modello usando la convalida preliminare. È anche possibile valutare la possibilità di distribuire i moduli e le specifiche di modello in Azure e verificare che le risorse create si comportino come previsto. Tuttavia, può essere difficile eseguire questi tipi di test da un flusso di lavoro di distribuzione per due motivi:

  • La convalida preliminare e le distribuzioni richiedono un ambiente di Azure in cui distribuire le risorse. Potrebbe essere necessario mantenere una sottoscrizione di Azure o un gruppo di risorse dedicato da usare per la distribuzione e il test dei moduli.
  • Molti moduli e specifiche di modello richiedono un set di parametri. Potrebbe essere necessario creare un set di parametri di test per i moduli e le specifiche di modello da usare durante la distribuzione.

È necessario scegliere se includere le fasi del flusso di lavoro per la distribuzione e il test dei moduli e delle specifiche di modello. Questo modulo di formazione di Microsoft Learn esegue il linting del codice Bicep, ma non include altre forme di test. Per testare i moduli e le specifiche di modello, tenere in considerazione la modalità di distribuzione di questi elementi in Azure e valutare l'uso di sottoscrizioni o gruppi di risorse dedicati per distribuire le risorse.

Suggerimento

È consigliabile consultare la pagina Testare il codice Bicep usando GitHub Actions per altre informazioni su come testare i file Bicep in un flusso di lavoro automatizzato.

Autenticazione e autorizzazione

Quando si pubblicano autonomamente le specifiche di modello in Azure, l'utente di Microsoft Entra deve avere accesso al gruppo di risorse contenente la risorsa della specifica di modello. Allo stesso modo, quando si pubblica un modulo Bicep in un registro, l'utente di Microsoft Entra deve disporre dell'autorizzazione per scrivere nell'istanza del Registro Azure Container usata dall'organizzazione per i relativi moduli Bicep.

Quando si usa un flusso di lavoro di distribuzione automatizzato, si applicano gli stessi principi. Tuttavia, poiché la distribuzione viene eseguita da un altro utente, è necessario assicurarsi che l'identità del flusso di lavoro disponga dell'accesso appropriato al gruppo di risorse per la pubblicazione della specifica di modello o al registro contenitori per la pubblicazione dei moduli.

Suggerimento

Quando si pubblica un modulo in un registro, l'identità del carico di lavoro che esegue la distribuzione probabilmente non necessita di un numero elevato di autorizzazioni. Quando il registro usa l'autorizzazione di Microsoft Entra, l'identità del carico di lavoro necessita solo dell'autorizzazione AcrPush per il registro.

Prendere in considerazione l'uso del principio di sicurezza dei privilegi minimi. Concedere all'identità del flusso di lavoro accesso solo al registro contenitori e non a un gruppo di risorse o una sottoscrizione.

Pubblicare i moduli e le specifiche di modello da un flusso di lavoro

Quando si pubblica una specifica di modello dal proprio computer usando l'interfaccia della riga di comando di Azure, si usa un comando simile a quello seguente:

az ts create \
  --name StorageWithoutSAS \
  --location westus3 \
  --display-name "Storage account with SAS disabled" \
  --description "This template spec creates a storage account, which is preconfigured to disable SAS authentication." \
  --version 1 \
  --template-file main.bicep

È possibile convertire questo comando dell'interfaccia della riga di comando di Azure in un passaggio di GitHub Actions:

- name: Publish template spec
  uses: azure/cli@v1
  with:
    inlineScript: |
      az ts create \
        --name StorageWithoutSAS \
        --location westus3 \
        --display-name "Storage account with SAS disabled" \
        --description "This template spec creates a storage account, which is preconfigured to disable SAS authentication." \
        --version 1 \
        --template-file main.bicep

Per pubblicare la specifica di modello, il flusso di lavoro usa lo stesso processo che userebbe l'utente.

Allo stesso modo, quando si pubblica un modulo Bicep dal proprio computer usando l'interfaccia della riga di comando di Azure, si usa un comando simile a quello seguente:

az bicep publish \
   --file module.bicep \
   --target 'br:toycompany.azurecr.io/mymodules/myqueue:2'

È anche possibile convertire questo comando dell'interfaccia della riga di comando di Azure in un passaggio di GitHub Actions:

- name: Publish Bicep module
  uses: azure/cli@v1
  with:
    inlineScript: |
      az bicep publish \
        --file module.bicep \
        --target 'br:toycompany.azurecr.io/mymodules/myqueue:2'

Suggerimento

In questo esempio, il nome host del registro Bicep (toycompany.azurecr.io) viene incorporato nella definizione del passaggio del flusso di lavoro. Questo non è tuttavia consigliabile. È possibile usare le variabili di ambiente per definire le impostazioni di configurazione come questa. Tale funzionamento verrà illustrato più avanti in questo modulo di formazione di Microsoft Learn.

Tra poco, si illustrerà come pubblicare una specifica di modello da un flusso di lavoro usando i passaggi descritti in questa unità.

Usare un modulo o una specifica di modello

Nei moduli di training di Microsoft Learn precedenti si è appreso come distribuire le risorse definite nelle specifiche di modello e come usare i moduli Bicep archiviati nei registri. L'uso e la distribuzione dei moduli e delle specifiche di modello avviene nello stesso modo, indipendentemente dal fatto che loro pubblicazione sia avvenuta manualmente o da un flusso di lavoro di distribuzione.

È possibile ad esempio distribuire una specifica di modello o un file Bicep in un gruppo di risorse usando il comando dell'interfaccia della riga di comando di Azure az deployment group create o il cmdlet New-AzResourceGroupDeployment con Azure PowerShell.