Pubblicare il codice Bicep da una pipeline di distribuzione
Quando si automatizza il processo di pubblicazione per una specifica di modello o un modulo Bicep, è necessario assicurarsi che tutte le operazioni svolte normalmente manualmente possano essere automatizzate ed eseguite all'interno della pipeline. In questa unità si applicano i principi appresi in precedenza per quanto riguarda la pubblicazione delle specifiche di modello e dei moduli Bicep da una pipeline 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 una pipeline
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 distribuisce quindi le risorse specificate. Di conseguenza, 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 una pipeline 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 decidere se includere le fasi della pipeline per la distribuzione e il test dei moduli e delle specifiche di modello. Questo modulo 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 Azure Pipelines per altre informazioni su come testare i file Bicep in una pipeline automatizzata.
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 una pipeline di distribuzione automatizzata, si applicano gli stessi principi. Tuttavia, poiché la distribuzione viene eseguita da un altro utente, è necessario assicurarsi che l'entità servizio della pipeline 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'entità servizio che esegue la distribuzione probabilmente non necessita di un gran numero di autorizzazioni. Quando il registro usa l'autorizzazione di Microsoft Entra, l'entità servizio necessita solo dell'autorizzazione AcrPush nel registro.
Prendere in considerazione l'uso del principio di sicurezza dei privilegi minimi. Fornire all'entità servizio della pipeline accesso solo al registro contenitori e non a un gruppo di risorse o una sottoscrizione.
Pubblicare i moduli e le specifiche di modello da una pipeline
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 \
--resource-group MyResourceGroup \
--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 una fase della pipeline:
- task: AzureCLI@2
name: Publish
displayName: Publish template spec
inputs:
azureSubscription: $(ServiceConnectionName)
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
az ts create \
--name StorageWithoutSAS \
--resource-group MyResourceGroup \
--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, la pipeline usa lo stesso processo che impiegherebbe l'utente.
Allo stesso modo, quando si pubblica un modulo Bicep dal proprio computer usando l'interfaccia della riga di comando di Azure, usare 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 una fase della pipeline:
- task: AzureCLI@2
name: Publish
displayName: Publish Bicep module
inputs:
azureSubscription: $(ServiceConnectionName)
scriptType: 'bash'
scriptLocation: 'inlineScript'
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 della fase della pipeline. 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 Microsoft Learn.
In questa unità viene descritto come pubblicare una specifica di modello da una pipeline.
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 avvengono nello stesso modo, indipendentemente dal fatto che loro pubblicazione sia avvenuta manualmente o da una pipeline 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.