Distribuire modelli di ARM usando GitHub Actions
GitHub Actions è una suite di funzionalità in GitHub che serve ad automatizzare i flussi di lavoro dello sviluppo di software nella stessa posizione in cui si archivia il codice, ed a collaborare ai problemi e alle richieste pull.
Usare l'azione Deploy Azure Resource Manager Template Action (Distribuisci modello di Azure Resource Manager) per automatizzare la distribuzione di un modello di Azure Resource Manager (modello di ARM) in Azure.
Prerequisiti
Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
Un account GitHub. Se non è disponibile, iscriversi per riceverne uno gratuito.
- Un repository GitHub per archiviare i modelli di Resource Manager e i file del flusso di lavoro. Per crearne uno, vedere Creazione di un nuovo repository.
Panoramica dei file del flusso di lavoro
Un flusso di lavoro viene definito da un file YAML (con estensione yml) nel percorso /.github/workflows/
del repository. Questa definizione contiene i vari passaggi e i parametri che costituiscono il flusso di lavoro.
Il file è costituito da due sezioni:
Sezione | Attività |
---|---|
Autenticazione | 1. Generare le credenziali per la distribuzione. |
Distribuzione | 1. Distribuire il modello di Resource Manager. |
Generare le credenziali per la distribuzione
Per usare l'azione di accesso di Azure con OIDC, è necessario configurare una credenziale di identità federata in un'applicazione Microsoft Entra o in un'identità gestita assegnata dall'utente.
Opzione 1: Applicazione Microsoft Entra
- Creare un'applicazione Microsoft Entra con un'entità servizio portale di Azure, l'interfaccia della riga di comando di Azure o Azure PowerShell.
- Copiare i valori per ID client, ID sottoscrizione e ID directory (tenant) da usare più avanti nel flusso di lavoro di GitHub Actions.
- Assegnare un ruolo appropriato all'entità servizio portale di Azure, l'interfaccia della riga di comando di Azure o Azure PowerShell.
- Configurare una credenziale di identità federata in un'applicazione Microsoft Entra per considerare attendibili i token rilasciati da GitHub Actions nel repository GitHub.
Opzione 2: Identità gestita assegnata dall'utente
- Creare un'identità gestita assegnata dall'utente.
- Copiare i valori per ID client, ID sottoscrizione e ID directory (tenant) da usare più avanti nel flusso di lavoro di GitHub Actions.
- Assegnare un ruolo appropriato all'identità gestita assegnata dall'utente.
- Configurare una credenziale di identità federata in un'identità gestita assegnata dall'utente per considerare attendibili i token emessi da GitHub Actions nel repository GitHub.
Configurare i segreti GitHub
È necessario specificare l'ID client, l'ID directory (tenant) e l'ID sottoscrizione dell'applicazione all'azione di accesso. Questi valori possono essere forniti direttamente nel flusso di lavoro oppure possono essere archiviati nei segreti gitHub e riportati nel flusso di lavoro. Salvare i valori come segreti GitHub è l'opzione più sicura.
In GitHub, andare al proprio repository.
Selezionare Sicurezza > Segreti e variabili > Azioni.
Selezionare Nuovo segreto repository.
Nota
Per migliorare la sicurezza del flusso di lavoro nei repository pubblici, usare i segreti dell'ambiente anziché i segreti del repository. Se l'ambiente richiede l'approvazione, un processo non può accedere ai segreti dell'ambiente finché uno dei revisori necessari non lo approva.
Creare segreti per
AZURE_CLIENT_ID
,AZURE_TENANT_ID
eAZURE_SUBSCRIPTION_ID
. Copiare questi valori dall'applicazione Microsoft Entra o dall'identità gestita assegnata dall'utente per i segreti GitHub:Segreto GitHub Applicazione Microsoft Entra o identità gestita assegnata dall'utente AZURE_CLIENT_ID ID client AZURE_SUBSCRIPTION_ID ID sottoscrizione AZURE_TENANT_ID ID della directory (tenant) Nota
Per motivi di sicurezza, è consigliabile usare i segreti di GitHub anziché passare i valori direttamente al flusso di lavoro.
Aggiungere un modello di Resource Manager
Aggiungere un modello di Resource Manager al repository GitHub. Questo modello crea un account di archiviazione.
https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
È possibile inserire il file in un punto qualsiasi del repository. L'esempio di flusso di lavoro illustrato nella sezione successiva presuppone che il file di modello sia denominato azuredeploy.json e sia archiviato alla radice del repository.
Creare un flusso di lavoro
Il file del flusso di lavoro deve essere archiviato nella cartella .github/workflow alla radice del repository. Il file del flusso di lavoro può avere estensione .yml o .yaml.
- Dal repository GitHub, selezionare Actions dal menu in alto.
- Selezionare Nuovo flusso di lavoro.
- Selezionare Set up a workflow yourself (Configurare manualmente un flusso di lavoro).
- Se si preferisce un nome diverso da main.yml, rinominare il file del flusso di lavoro. Ad esempio: deployStorageAccount.yml.
- Sostituire il contenuto del file .yml con quanto segue:
on: [push]
name: Azure ARM
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# Checkout code
- uses: actions/checkout@main
# Log into Azure
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
# Deploy ARM template
- name: Run ARM deploy
uses: azure/arm-deploy@v1
with:
subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }}
resourceGroupName: ${{ secrets.AZURE_RG }}
template: ./azuredeploy.json
parameters: storageAccountType=Standard_LRS
# output containerName variable from template
- run: echo ${{ steps.deploy.outputs.containerName }}
Nota
È possibile invece specificare un file di parametri in formato JSON nell'azione Distribuire ARM (ad esempio: .azuredeploy.parameters.json
).
La prima sezione del file del flusso di lavoro include:
- name: il nome del flusso di lavoro.
- on: il nome degli eventi GitHub che attivano il flusso di lavoro. Il flusso di lavoro viene attivato quando si verifica un evento push nel ramo principale che modifica almeno uno dei due file specificati. I due file sono il file del flusso di lavoro e il file di modello.
- Selezionare Start commit (Avvia commit).
- Selezionare Commit directly to the main branch (Esegui il commit direttamente nel ramo principale).
- Selezionare Commit new file (Commit nuovo file) (o Commit modifiche).
Dato che il flusso di lavoro è configurato per essere attivato dal file del flusso di lavoro o dal file di modello da aggiornare, il flusso di lavoro viene avviato subito dopo il commit delle modifiche.
Controllare lo stato del flusso di lavoro
- Selezionare la scheda Actions. Viene visualizzato un flusso di lavoro Crea deployStorageAccount.yml elencato. L'esecuzione del flusso di lavoro richiede 1-2 minuti.
- Selezionare il flusso di lavoro per aprirlo.
- Seleziona Esegui distribuzione ARM dal menu per verificare la distribuzione.
Pulire le risorse
Quando il gruppo di risorse e il repository non sono più necessari, pulire le risorse distribuite eliminando il gruppo di risorse e il repository GitHub.