Mise en place d'une chaîne d'outils CI à l'aide de Terraform

Avec ce tutoriel, vous pouvez utiliser le modèle de chaîne d'outils pour l'intégration continue (CI) dans DevSecOps pour Infrastructure as Code ( IaC ) Terraform. Il est préconfiguré pour le déploiement continu (CD) avec intégration de l'inventaire, gestion des changements avec Git Repos and Issue Tracking, collecte des preuves et déploiement de l'infrastructure sur IBM Cloud.

Avant de commencer

Effectuez les étapes suivantes avant de commencer ce tutoriel.

  1. Terminez La mise en place des prérequis. Pour plus d'informations, voir l'importance de l'IC pour IaC.
  2. Voir la vidéo suivante :

Démarrage de la configuration de la chaîne d'outils CI

Le service Continuous Delivery fournit des modèles qui vous guident dans la configuration de la chaîne d'outils et créent des processus dans un ordre logique. Un indicateur de progression indique les étapes à suivre pour terminer la configuration. Suivez les étapes pour accéder au modèle de la chaîne d'outils CI.

  1. Dans la console 'IBM Cloud, cliquez sur l'icône 'Menu 'Icône de menu > 'Automatisation de la plate-forme > 'Chaînes d'outils.
  2. Sur la page Chaînes d'outils, cliquez sur Créer une chaîne d'outils.
  3. Vérifier l'infrastructure en tant que code.
  4. Cliquez sur CI - Développer une infrastructure sécurisée en tant que code avec les pratiques DevSecOps tuile.

Configurer les paramètres de la chaîne d'outils CI

La page Bienvenue résume l'objectif de la chaîne d'outils et propose des liens vers la documentation et le matériel connexe.

  1. Cliquez sur Start.

  2. Saisissez un Nom de la chaîne d'outils dans votre chaîne d'outils pour la même région et le même groupe de ressources dans le IBM Cloud.

  3. Sélectionnez une région dans la liste déroulante.

  4. Sélectionnez un groupe de ressources dans la liste déroulante.

  5. Cliquez sur Continu.

    Vous ne pouvez passer à l'étape suivante que si la configuration de l'étape en cours est terminée et valide. Vous pouvez toujours cliquer sur Retour pour afficher les étapes précédentes de l'installation guidée. Tous les paramètres de configuration définis au cours des étapes successives sont conservés dans le programme d'installation de la chaîne d'outils.

    Certaines étapes comprennent un bouton bascule vers la configuration avancée. Ces étapes vous présentent par défaut la configuration minimale. Toutefois, les utilisateurs avancés qui ont besoin d'un contrôle plus fin peuvent cliquer sur le bouton Basculer vers la configuration avancée pour faire apparaître les options de l'intégration sous-jacente.

Mise en place d'intégrations d'outils de CI

Passez en revue les paramètres par défaut et fournissez les configurations définies par l'utilisateur lorsque cela est nécessaire pour mettre en place l'intégration de l'outil CI. Configurer plusieurs référentiels lors de l'installation. Vous pouvez cloner les référentiels d'exemples ou utiliser les vôtres, mais la chaîne d'outils ne prend en charge que les référentiels Git Repos and Issue Tracking.

Code d'infrastructure

Le référentiel de code de l'infrastructure est le projet ou le module que la chaîne d'outils et le pipeline d'IC construisent, testent et livrent l'artefact cible. Le dépôt de code de l'infrastructure est hébergé sur GitHub Enterprise. Par souci de cohérence, ce tutoriel fait référence à Git Repos and Issue Tracking.

Examinez les informations par défaut pour le code d'infrastructure :

  1. Accepter Utiliser l'échantillon par défaut. Si vous souhaitez lier un référentiel IaC existant pour la chaîne d'outils, sélectionnez Apportez votre propre code d'infrastructure et indiquez-le dans le champ Référentiel URL. La chaîne d'outils n'accepte actuellement que les liens vers les dépôts Git Repos and Issue Tracking existants. Pour plus d'informations, voir Apporter son propre code d'infrastructure à DevSecOps.
  2. Entrez un nom pour Nouveau nom du référentiel.
  3. Cliquez sur Continu.

Inventaire Ansible

Le référentiel d'inventaire enregistre les détails des artefacts créés par les chaînes d'outils de CI.

  1. Vous pouvez accepter la configuration par défaut fournie dans le modèle.
  2. Cliquez sur Continu.

Problèmes

Le référentiel de problèmes enregistre les problèmes détectés lors de l'exécution du pipeline d'EC.

  1. Vous pouvez accepter la configuration par défaut fournie dans le modèle.
  2. Cliquez sur Continuer

Secrets

Spécifiez les intégrations du coffre-fort secret à ajouter à votre chaîne d'outils en utilisant les boutons, comme expliqué dans Gestion des IBM Cloud secrets.

  1. Ce tutoriel utilise IBM Cloud® Secrets Manager comme coffre pour les secrets. Les zones Région, Groupe de ressources et Nom du service sont automatiquement renseignées en fonction des choix disponibles. Cliquez sur les indicateurs déroulants pour voir les autres choix.
  2. Saisissez votre Secrets Manager nom d'instance.
  3. Sélectionnez le type d'autorisation dans la liste déroulante.
  4. Cliquez sur Continu.

Stockage des preuves

Le casier de preuves stocke toutes les preuves et tous les artefacts générés par le pipeline de CI DevSecOps.

  1. Faites basculer le curseur du seau IBM Cloud Object Storage pour stocker toutes les preuves dans le seau IBM Cloud Object Storage qui peut être configuré à la page suivante.
  2. Accepter les paramètres par défaut.
  3. Cliquez sur Continu.

Compartiment cloud Object Storage

Vous devez disposer d'une instance d' IBM Cloud Object Storage et d'un compartiment servant de coffre-fort pour les preuves de conformité.

  1. Les champs Cloud Object Storage instance, Nom du panier, et Cloud Object Storage endpoint sont automatiquement remplis.
  2. Saisissez votre clé API Service ID.
    • Préféré : Une clé existante peut être importée à partir d'un coffre-fort secret en cliquant sur l'icône de la clé.
    • Une clé existante peut être copiée et collée.
  3. Cliquez sur Continu.

Le champ "endpoint" n'est pas obligatoire. Vous pouvez sélectionner ou fournir le point final pendant la configuration de la chaîne d'outils ou pendant l'exécution du pipeline.

Déployer

Configurer l'espace de travail cible Schematics où les états Terraform sont maintenus. Si le nom de l'espace de travail n'est pas fourni, la chaîne d'outils crée un espace de travail par défaut Schematics avec le ToolchainName-ToolchainId-PipelineID.

  1. Saisissez votre clé API IBM Cloud. Si la clé API dispose d'un accès suffisant. L'espace de travail Schematics, Git repositories, et Resource group sont automatiquement renseignés. Vous pouvez modifier n'importe lequel de ces champs pour l'adapter à votre configuration.

    • Préféré : Une clé existante peut être importée à partir d'un coffre-fort secret en cliquant sur l'icône de la clé.
    • Une clé existante peut être copiée et collée.
    • Une nouvelle clé peut être créée à partir d'ici en cliquant sur le bouton Nouveau +.

    La clé API nouvellement générée peut être immédiatement sauvegardée dans un coffre-fort secret.

  2. Saisissez le Nom de l'espace de travail schématique.

  3. Cliquez sur Continu.

Signature

Les artefacts créés par la chaîne d'outils et enregistrés dans l'inventaire doivent être signés avant d'être déployés en production.

  1. Saisissez la GnuPG Private Key. Vous pouvez également créer une nouvelle clé GPG en cliquant sur NEW. Pour plus d'informations, voir Génération d'une clé GPG.
  2. Cliquez sur Continu.

Outils facultatifs

Slack

Configurez le Slack pour recevoir des notifications sur vos pull requests, ou les événements du pipeline CI. Vous pouvez également ajouter l'outil Slack après la création de la chaîne d'outils.

  1. Saisissez votre webhook Slack. Pour plus d'informations, voir Slack webhook.
  2. Saisissez votre canal Slack pour poster un message.
  3. Saisissez le Nom de l'équipe adverse. Par exemple, si votre équipe URL est https://team.slack.com, le nom de l'équipe est team.
  4. Choisir Notifications Slack automatisées pour les événements pour lesquels vous souhaitez recevoir des notifications.
  5. Cliquez sur Continu.

En option, vous pouvez activer l'envoi de notifications avec la propriété d'environnement slack-notifications dans votre pipeline CD en utilisant 0 = off, and 1 = on.

Création de la chaîne d'outils CI

  1. Dans la page Récapitulatif, cliquez sur Créer une chaîne d'outils.

  2. Attendez la création de la chaîne d'outils.

    D'autres intégrations de la chaîne d'outils peuvent être configurées après la création du pipeline.

Exploration de la chaîne d'outils CI

La chaîne d'outils CI contient pr-pipeline et ci-pipeline. Ces pipelines se déclenchent lorsqu'une nouvelle demande de fusion est soumise ou fusionnée à la branche principale dans le dépôt de code de l'infrastructure.

Suivez les étapes pour accéder à votre chaîne d'outils :

  1. Dans la console 'IBM Cloud, cliquez sur l'icône 'Menu 'Icône de menu > 'Automatisation de la plate-forme > 'Chaînes d'outils.

  2. Sur la page Chaînes d'outils, cliquez sur Créer une chaîne d'outils.

  3. Cliquez sur votre chaîne d'outils pour afficher la sortie comme indiqué dans la capture d'écran.

    L'exemple utilisé dans ce tutoriel nécessite un resource_group pour créer l'instance Key Protect. Le nom resource_group par défaut est Default. Si la valeur par défaut ne convient pas à votre compte, remplacez la variable par défaut resource_group dans le fichier variables.tf. Sinon, spécifiez la variable resource_group en définissant la propriété d'environnement TF_VAR_resource_group dans le pipeline PR et le pipeline CI avec le nom du groupe de ressources approprié.

    Chaîne d'outilsDevSecOps IaC CI
    Chaîne d'outils DevSecOps CI

Exécuter le pipeline pr

Pour lancer le site pr-pipeline, créez une demande de fusion dans votre référentiel d'application :

  1. Sur la page de la chaîne d'outils CI, cliquez sur la tuile du référentiel d'applications. Par défaut, il est créé sous le nom compliance-app-<timestamp>.

  2. Créez une branche à partir de la branche principale.

  3. Mettez à jour certains codes dans l'application ou ajoutez un fichier readme et enregistrez les modifications.

  4. Soumettre une demande de fusion.

  5. Sur la page de la chaîne d'outils CI, cliquez sur la tuile pr-pipeline. Vérifier que le pipeline PR est déclenché par la création de la demande de fusion.

  6. Attendez la fin de l'exécution du programme pr-pipeline. La demande de fusion correspondante qui se trouve dans le référentiel de votre application est dans l'état Pending jusqu'à ce que toutes les étapes du pipeline PR se terminent avec succès.

  7. Lorsque l'exécution du pipeline PR est réussie, cliquez sur le pipeline pour découvrir les nombreuses étapes réalisées et pour afficher la page comme indiqué dans la capture d'écran.

    caption-side=bottom"
    DevSecOps IaC Succès du pipeline de relations publiques DevSecOps Succès du pipeline de relations publiques

  8. Retournez à la demande de fusion.

  9. Fusionnez la demande pour que vos modifications soient copiées dans la branche principale du référentiel de votre application. Veillez à ce que votre pipeline CI soit automatiquement déclenché.

Exécution du pipeline CI

Démarrez le pipeline d'EC de l'une des manières suivantes:

  • Automatiquement : après un PR pipeline réussi, en approuvant et en fusionnant le PR à la branche principale.
  • Manuellement : pour déclencher manuellement le pipeline CI, sélectionnez la carte Delivery Pipeline, cliquez sur Run Pipeline et sélectionnez Manual Trigger.

Dans ce tutoriel, le pipeline CI a été déclenché après que vous ayez fusionné vos modifications de code dans la branche master du référentiel de votre application.

  1. Sur la page de la chaîne d'outils CI, cliquez sur la tuile ci-pipeline.

  2. Cliquez sur Run en regard du nom de votre pipeline. Observer le fonctionnement d'un pipeline. Attendez la fin de l'exécution du pipeline.

  3. Une fois que l'exécution du pipeline CI est réussie, cliquez sur le pipeline pour explorer les étapes réalisées et afficher la page comme indiqué dans la capture d'écran.

    caption-side=bottom"
    DevSecOps IaC Pipeline CI réussi Pipeline CI DevSecOps

Les éléments de preuve provenant de tous les contrôles de conformité dans le pipeline de l'IC sont téléchargés dans le référentiel du casier à preuves, mais aussi dans le seau IBM Cloud Object Storage.

Pour déterminer si votre pipeline a connu des échecs, vérifiez l'étape finale de votre pipeline.

Personnalisation du pipeline

Pour plus d'informations sur la personnalisation du pipeline, voir Comment un utilisateur peut-il personnaliser le pipeline ?

Etapes suivantes

Vous avez créé avec succès une DevSecOps pour Terraform, modifié le code dans le référentiel de code de l'infrastructure, exécuté ci-pipeline pour construire, tester et déployer vos modifications dans l'environnement de développement.

Maintenant, passez à Mise en place d'une chaîne d'outils CD pour Terraform.