Impostazione di una catena di strumenti CI utilizzando Terraform

Con questo tutorial è possibile utilizzare il modello di toolchain per l'integrazione continua (CI) in DevSecOps per Infrastructure as Code ( IaC ) Terraform. È preconfigurato per la distribuzione continua (CD) con l'integrazione dell'inventario, la gestione delle modifiche con Git Repos and Issue Tracking, la raccolta delle prove e la distribuzione dell'infrastruttura su IBM Cloud.

Prima di iniziare

Prima di iniziare l'esercitazione, completare i seguenti passaggi.

  1. Completate Impostazione dei prerequisiti. Per ulteriori informazioni, consultare la sezione importanza dell'IC per IaC.
  2. Guardate il seguente video:

Avviare l'impostazione della toolchain CI

Il servizio Continuous Delivery fornisce modelli che guidano l'utente attraverso la configurazione della catena di strumenti e creano processi in un ordine logico. Un indicatore di avanzamento mostra le procedure per completare la configurazione. Seguire i passaggi per accedere al modello della catena di strumenti CI.

  1. Nella console IBM Cloud, fare clic sull'icona Menu Icona Menu > Automazione piattaforma > Toolchains.
  2. Nella pagina Catene di strumenti, fare clic su Crea catena di strumenti.
  3. Controllare l'Infrastruttura come Codice.
  4. Fate clic sulla piastrella CI - Sviluppare un'infrastruttura sicura come codice con le pratiche DevSecOps.

Impostare le impostazioni della catena di strumenti CI

La pagina Benvenuto riassume lo scopo della toolchain e rimanda alla documentazione e ai materiali correlati.

  1. Fai clic su Start.

  2. Inserire un nome della catena di strumenti all'interno della catena di strumenti per la stessa regione e gruppo di risorse nel IBM Cloud.

  3. Selezionare una regione dall'elenco a discesa.

  4. Selezionare un gruppo di risorse dall'elenco a discesa.

  5. Fai clic su Continue.

    È possibile passare al passo successivo solo quando la configurazione per il passo corrente è completa e valida. È sempre possibile fare clic su Indietro per visualizzare i passaggi precedenti del programma di installazione guidata. Il programma di installazione della toolchain conserva tutte le impostazioni di configurazione dai passaggi successivi.

    Alcuni passaggi includono un pulsante Passa alla configurazione avanzata. Per impostazione predefinita, questi passaggi presentano la configurazione minima. Tuttavia, gli utenti avanzati che necessitano di un controllo a grana più fine possono fare clic sulla levetta Passa alla configurazione avanzata per visualizzare le opzioni dell'integrazione sottostante.

Configura integrazioni dello strumento IC

Esaminare le impostazioni predefinite e fornire le configurazioni definite dall'utente, ove necessario, per impostare l'integrazione dello strumento CI. Configurare più repository durante la configurazione. Puoi clonare i repository di esempio o utilizzarne uno tuo, ma la toolchain supporta solo repository Git Repos and Issue Tracking.

Codice infrastruttura

Il repository di codice dell'infrastruttura è il progetto o il modulo che la catena di strumenti e la pipeline CI costruiscono, testano e consegnano l'artefatto di destinazione. Il repository del codice dell'infrastruttura è ospitato su GitHub Enterprise. Per coerenza, questa esercitazione fa riferimento a Git Repos and Issue Tracking.

Esaminare le informazioni predefinite per il codice dell'infrastruttura:

  1. Accettare Utilizzare il campione predefinito. Se si desidera collegare un repository IaC e esistente per la toolchain, selezionare Bring your own infrastructure code e fornire come input al campo Repository URL. La toolchain attualmente supporta il collegamento solo a repository Git Repos and Issue Tracking esistenti. Per ulteriori informazioni, vedere Bringing your own infrastructure code(Portare il proprio codice infrastrutturale)su DevSecOps.
  2. Inserire un nome per il nome del nuovo repository.
  3. Fai clic su Continue.

Inventario

Il repository dell'inventario registra i dettagli degli artefatti creati dalle catene di strumenti CI.

  1. È possibile accettare la configurazione predefinita fornita nel modello.
  2. Fai clic su Continue.

Problemi

Il repository dei problemi registra i problemi rilevati durante l'esecuzione della pipeline CI.

  1. È possibile accettare la configurazione predefinita fornita nel modello.
  2. Fai clic su Continue

Segreti

Specificare le integrazioni del caveau segreto da aggiungere alla propria toolchain utilizzando le levette, come spiegato in Gestione dei IBM Cloud segreti.

  1. Questa esercitazione usa IBM Cloud® Secrets Manager come vault per i segreti. I campi Regione, Gruppo di risorse e Nome servizio vengono popolati automaticamente in base a scelte disponibili. Fare clic sugli indicatori a discesa per visualizzare le altre scelte.
  2. Digitate il vostro Secrets Manager nome istanza.
  3. Selezionare il tipo di autorizzazione dall'elenco a discesa.
  4. Fai clic su Continue.

Archiviazione prove

L'archivio delle prove memorizza tutte le prove e gli artefatti generati dalla pipeline DevSecOps CI.

  1. Attivare il cursore del secchio IBM Cloud Object Storage per memorizzare tutte le prove nel secchio IBM Cloud Object Storage che può essere configurato nella pagina successiva.
  2. Accettare le impostazioni predefinite.
  3. Fai clic su Continue.

Bucket Object Storage cloud

È necessario disporre dell 'istanza IBM Cloud Object Storage e di un bucket che funga da archivio delle prove di conformità.

  1. I campi Istanza Cloud Object Storage, Nome del bucket e Cloud Object Storage endpoint sono popolati automaticamente.
  2. Inserite la vostra chiave API ID servizio.
    • Preferibile: È possibile importare una chiave esistente da un caveau dei segreti facendo clic sull'icona della chiave.
    • È possibile copiare e incollare una chiave esistente.
  3. Fai clic su Continue.

Il campo endpoint non è obbligatorio. È possibile selezionare o fornire l'endpoint durante la configurazione della toolchain o durante l'esecuzione della pipeline.

Distribuisci

Configurare lo spazio di lavoro di destinazione Schematics dove vengono mantenuti gli stati di Terraform. Se il nome dell'area di lavoro non viene fornito, toolchain crea un'area di lavoro predefinita Schematics con il nome ToolchainName-ToolchainId-PipelineID.

  1. Digitare la propria IBM Cloud chiave API. Se la chiave API ha un accesso sufficiente. I dettagli Schematics dello spazio di lavoro, Git repository e Gruppo di risorse sono popolati automaticamente. È possibile modificare uno qualsiasi di questi campi per adattarlo alla propria configurazione.

    • Preferibile: È possibile importare una chiave esistente da un caveau dei segreti facendo clic sull'icona della chiave.
    • È possibile copiare e incollare una chiave esistente.
    • Da qui è possibile creare una nuova chiave facendo clic sul pulsante Nuovo +.

    La nuova chiave API generata può essere immediatamente salvata in un caveau dei segreti.

  2. Inserire il nome dell'area di lavoro schematica.

  3. Fai clic su Continue.

Firma

Gli artefatti creati dalla toolchain e registrati nell'inventario devono essere firmati prima di essere distribuiti in produzione.

  1. Immettere la chiave privata GnuPG. In alternativa, è possibile creare una nuova chiave GPG facendo clic su NEW. Per ulteriori informazioni, vedere Generazione di una chiave GPG.
  2. Fai clic su Continue.

Strumenti facoltativi

Slack

Configurare Slack per ricevere notifiche sulle richieste di pull o sugli eventi della pipeline CI. È possibile aggiungere lo strumento Slack anche dopo la creazione della catena di strumenti.

  1. Inserite il vostro webhook Slack. Per ulteriori informazioni, vedere Slack webhook.
  2. Inserire il proprio canale Slack per inviare il messaggio.
  3. Inserire il nome della squadra Slack. Ad esempio, se la squadra URL è https://team.slack.com, il nome della squadra è team.
  4. Scegliere Notifiche automatiche di Slack per gli eventi di cui si desidera ricevere le notifiche.
  5. Fai clic su Continue.

Facoltativamente, è possibile attivare l'invio di notifiche con la proprietà dell'ambiente slack-notifications nella pipeline CD, utilizzando 0 = off, and 1 = on.

Crea la toolchain CI

  1. Nella pagina di riepilogo, fare clic su Crea catena di strumenti.

  2. Attendere la creazione della catena di strumenti.

    È possibile configurare altre integrazioni della toolchain dopo la creazione della pipeline.

Esplora la toolchain CI

La catena di strumenti CI contiene pr-pipeline e ci-pipeline. Queste pipeline si attivano quando una nuova richiesta di unione viene inviata o unita al ramo principale nel repository del codice dell'infrastruttura.

Seguire la procedura per accedere alla propria catena di strumenti:

  1. Nella console IBM Cloud, fare clic sull'icona Menu Icona Menu > Automazione piattaforma > Toolchains.

  2. Nella pagina Catene di strumenti, fare clic su Crea catena di strumenti.

  3. Fare clic sulla propria catena di strumenti per visualizzare l'output, come mostrato nella cattura dello schermo.

    Il campione utilizzato in questo tutorial prevede l'uso di resource_group per creare l'istanza Key Protect. Il nome resource_group predefinito è Default. Se il valore predefinito non è appropriato per il vostro account, sostituite la variabile predefinita resource_group nel file variables.tf. In alternativa, specificare la variabile resource_group impostando la proprietà d'ambiente TF_VAR_resource_group nella pipeline PR e nella pipeline CI al nome del gruppo di risorse appropriato.

    DevSecOps IaC toolchain
    DevSecOps CI toolchain

Esegui pipeline pr

Per avviare il pr-pipeline, creare una richiesta di unione nel repository dell'applicazione:

  1. Dalla pagina CI toolchain, fare clic sul riquadro del repository dell'applicazione. Per impostazione predefinita, viene creato con il nome compliance-app-<timestamp>.

  2. Creare un ramo dal ramo principale.

  3. Aggiornare il codice dell'applicazione o aggiungere un file readme e salvare le modifiche.

  4. Inviare Richiesta di fusione.

  5. Nella pagina della toolchain CI, fai clic sul tile pr - pipeline. Verificare che la pipeline PR sia attivata dalla creazione della richiesta di unione.

  6. Attendere il completamento dell'esecuzione di pr-pipeline. La richiesta di unione corrispondente, che si trova nel repository dell'applicazione, è nello stato Pending finché tutte le fasi della pipeline PR non si concludono con successo.

  7. Dopo che l'esecuzione della pipeline PR è andata a buon fine, fare clic sulla pipeline per esplorare i numerosi passaggi completati e visualizzare la pagina come mostrato nella cattura dello schermo.

    DevSecOps IaC PR pipeline successo
    DevSecOps PR pipeline successo

  8. Tornare alla richiesta di fusione.

  9. Unire la richiesta in modo che le modifiche vengano copiate nel ramo principale del repository dell'applicazione. Verificare che la pipeline CI venga attivata automaticamente.

Esegui la pipeline CI

Avviare la pipeline CI in uno dei seguenti modi:

  • Automaticamente: dopo una pipeline di PR di successo, approvando e unendo la PR alla filiale principale.
  • Manualmente: per attivare la pipeline CI manualmente, selezionare la scheda Delivery Pipeline e fare clic su Esegui pipeline e selezionare Attivazione manuale.

In questa esercitazione, la pipeline CI è stata attivata dopo l'unione delle modifiche al codice nel ramo master del repository dell'applicazione.

  1. Nella pagina CI toolchain, fai clic sul tile ci - pipeline.

  2. Fare clic su Esegui contro il nome della pipeline. Osservare l'esecuzione di una pipeline. Attendere il completamento dell'esecuzione della pipeline.

  3. Dopo che l'esecuzione della pipeline CI è andata a buon fine, fare clic sulla pipeline per esplorare i passaggi completati e visualizzare la pagina come mostrato nella cattura dello schermo.

    Pipeline CIDevSecOps IaC riuscita
    Pipeline CI DevSecOps

Le prove di tutti i controlli di conformità nella pipeline CI vengono caricate nel repository dell'archivio delle prove, ma anche nel bucket IBM Cloud Object Storage.

Per valutare se si sono verificati errori nell'esecuzione della pipeline, controllare il passaggio finale della pipeline.

Personalizzazione della pipeline

Per ulteriori informazioni sulla personalizzazione della pipeline, vedere Come fa un utente a personalizzare la pipeline?

Passi successivi

Si è creato con successo un DevSecOps CI toolchain per Terraform, si è modificato il codice nel repository di codice dell'infrastruttura, si è eseguito ci-pipeline per costruire, testare e distribuire le modifiche all'ambiente di sviluppo.

Passiamo ora a Impostare una catena di strumenti CD per Terraform.