Condividi tramite


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

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

Opzione 2: Identità gestita assegnata dall'utente

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.

  1. In GitHub, andare al proprio repository.

  2. Selezionare Sicurezza > Segreti e variabili > Azioni.

    Screenshot dell'aggiunta di un segreto

  3. 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.

  4. Creare segreti per AZURE_CLIENT_ID, AZURE_TENANT_IDe AZURE_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.

  1. Dal repository GitHub, selezionare Actions dal menu in alto.
  2. Selezionare Nuovo flusso di lavoro.
  3. Selezionare Set up a workflow yourself (Configurare manualmente un flusso di lavoro).
  4. Se si preferisce un nome diverso da main.yml, rinominare il file del flusso di lavoro. Ad esempio: deployStorageAccount.yml.
  5. 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.
  1. Selezionare Start commit (Avvia commit).
  2. Selezionare Commit directly to the main branch (Esegui il commit direttamente nel ramo principale).
  3. 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

  1. Selezionare la scheda Actions. Viene visualizzato un flusso di lavoro Crea deployStorageAccount.yml elencato. L'esecuzione del flusso di lavoro richiede 1-2 minuti.
  2. Selezionare il flusso di lavoro per aprirlo.
  3. 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.

Passaggi successivi