Applicare un flusso di lavoro automatizzato

Completato

In questa unità vengono descritti gli strumenti per flussi di lavoro automatizzati e la loro integrazione con Terraform e Azure.

Informazioni su GitHub Actions

Per il responsabile dell'infrastruttura è necessario che i flussi di lavoro di compilazione e distribuzione usino lo stesso controllo della versione del progetto.

Usando GitHub Actions è possibile eseguire un processo di integrazione continua e recapito continuo (CI/CD) collegato ai repository GitHub.

Con GitHub Actions è possibile compilare, testare e distribuire il codice direttamente da GitHub. È anche possibile assegnare le revisioni del codice, gestire i rami e valutare i problemi.

Componenti di GitHub Actions

Di seguito sono descritti i diversi componenti di GitHub Actions, illustrati nel diagramma seguente:

Diagramma che mostra la relazione dei flussi di lavoro di GitHub Actions con i processi, i passaggi e le azioni dei componenti.

  • Flusso di lavoro: attivato da determinati eventi o attività, un flusso di lavoro è una raccolta di processi e passaggi che automatizzano le attività del ciclo di vita dello sviluppo del software.
  • Processo: insieme di passaggi eseguiti in uno strumento di esecuzione.
  • Passaggio: attività in grado di eseguire uno o più comandi o azioni. Ogni passaggio è costituito da singole azioni eseguite dopo un evento specifico, ad esempio una richiesta pull.
  • Azioni: comandi autonomi che possono essere combinati in passaggi. È possibile combinare più passaggi per creare un processo. Le singole azioni sono script inseriti in un pacchetto che automatizzano le attività di sviluppo di software. Per creare un flusso di lavoro, si aggiungono le azioni in un file YAML nella directory .github/workflows del repository GitHub.

Azione GitHub di Terraform

L'azione hashicorp/setup-terraform configura l'interfaccia della riga di comando di Terraform nel flusso di lavoro di GitHub Actions:

  • Scaricando una versione specifica dell'interfaccia della riga di comando di Terraform e aggiungendola a PATH.
  • Configurando il file di configurazione dell'interfaccia della riga di comando di Terraform con un nome host di Terraform Cloud o Enterprise e un token API.
  • Installando uno script wrapper per eseguire il wrapping delle chiamate successive del binario terraform ed esporre le relative STDOUT, STDERR e il codice di uscita come output denominati rispettivamente stdout, stderr e exitcode.

Autenticare GitHub Actions con Azure

Terraform supporta diverse opzioni per l'autenticazione con Azure:

  • Quando si usa Terraform in modo interattivo, è consigliabile eseguire l'autenticazione tramite un account Microsoft.
  • Quando si usa Terraform dal codice o tramite l'automazione, è consigliabile eseguire l'autenticazione tramite un'entità servizio di Azure.

Un'entità servizio è un'identità creata per l'uso con applicazioni, servizi ospitati e strumenti automatizzati per accedere alle risorse di Azure.

Passaggi successivi

Nell'unità successiva verrà configurato un progetto di esempio e verrà usato GitHub Actions con Terraform per distribuirlo in Azure.

Concetti chiave per il nuovo Azure Pipelines

Di seguito sono descritti i componenti che costituiscono una pipeline di Azure.

Diagramma dei concetti chiave e dei componenti principali della pipeline di Azure.

  • Un trigger attiva l'esecuzione di una pipeline.
  • Una pipeline è costituita da una o più fasi. Una pipeline può essere distribuita in uno o più ambienti.
  • Una fase è un modo per organizzare il processo in una pipeline e ogni fase può avere uno o più processi.
  • Ogni processo viene eseguito in un unico agente. Un processo può essere anche senza agente.
  • Ogni agente esegue un processo che contiene uno o più passaggi.
  • Un passaggio può essere un'attività o uno script ed è il blocco predefinito minimo di una pipeline.
  • Un'attività è uno script preconfezionato che esegue un'azione, ad esempio la chiamata di un'API REST o la pubblicazione di un artefatto della compilazione.
  • Un artefatto è una raccolta di file o pacchetti pubblicati da un'esecuzione.

Suggerimento

Per informazioni più dettagliate sui diversi componenti della pipeline e su come usarli, vedere i collegamenti disponibili nella sezione Riepilogo.

Attività di Terraform per Azure Pipelines

Quando si eseguono comandi che interagiscono con Azure, ad esempio plan, apply e destroy, l'attività userà una Connessione al servizio di Azure per autorizzare le operazioni nella sottoscrizione di destinazione. La soluzione consigliata per connettersi ad Azure consiste nell'associare la connessione al servizio a un'entità servizio di Azure. Un'entità servizio di Azure è un'identità creata per l'uso di strumenti automatizzati per accedere alle risorse di Azure.

Il frammento di codice YAML seguente usa il provider azurermdi Terraform per la pipeline di Azure. Per specificare una connessione al servizio, si deve immettere environmentServiceNameAzureRM:

- task: TerraformTaskV1@0
  inputs:
    provider: 'azurerm'
    command: 'apply'
    workingDirectory: $(Build.Repository.LocalPath)/terraform
    backendAzureRmContainerName: 'tfstate'
    backendAzureRmKey: 'tf/terraform.tfstate'
    environmentServiceNameAzureRM: $(serviceConnection)

Suggerimento

Se si usa azurerm come provider di Terraform per la pipeline di Azure, è necessario anche specificare una connessione al servizio e un contenitore di archiviazione da usare con lo stato del back-end di Terraform.

Passaggio di parametri

Sono disponibili più metodi per passare i parametri ai comandi di Terraform. Le variabili offrono un modo pratico per ottenere i bit di dati chiave in varie parti della pipeline.

È possibile impostare una variabile per una pipeline di compilazione seguendo questa procedura:

  1. Passare alla pagina Pipeline, selezionare la pipeline appropriata e quindi Modifica.
  2. Individuare le Variabili per la pipeline.
  3. Aggiungere o aggiornare la variabile.
  4. Per contrassegnare la variabile come segreto, selezionare Mantieni segreto questo valore.
  5. Salvare la pipeline.

Output di Terraform nelle variabili della pipeline

L'attività TerraformCLI supporta l'esecuzione del comando output di Terraform. Quando viene eseguita l'interfaccia della riga di comando, vengono create variabili della pipeline da ogni variabile di output generata dal comando terraform output.

Passaggi successivi

Nell'unità successiva verrà configurato un progetto di esempio e verrà usato Azure Pipelines con Terraform per distribuirlo in Azure.