Pipeline d'intégration continue pour Infrastructure as Code

Le pipeline d'intégration continue pour Infrastructure as Code ( IaC ) construit la configuration déployable à partir des IaC référentiels (contenu Terraform).

Avant de générer des artefacts, le pipeline vérifie que le code est analysé et testé, comme pour le traitement des demandes d'extraction. Les artefacts construits sont également analysés pour détecter les vulnérabilités et signés dans le pipeline avant d'être marqués comme prêts à être publiés et déployés dans l'inventaire. Pour plus d'informations, voir Inventaire. Contrairement au pipeline de demande d'extraction, le pipeline d'intégration continue collecte des preuves et des artefacts de résultat à chaque étape de la génération, telle que le test, l'analyse et la signature. Ces données sont en corrélation avec les artefacts de génération et peuvent faire l'objet d'un suivi via le processus de déploiement et la gestion des changements.

Etapes et tâches

Intégration continue pour les étapes et les tâches de IaC
Tâche ou étape Brève description Personnalisable dans .pipeline-config.yaml
start Configure l'environnement du pipeline. Non
setup Configure votre environnement de construction et de test. Oui
test Exécute des tests d'unité sur la configuration, IaC. Oui
static-scan Exécute le code d'analyse statique sur IaC. Oui
compliance-checks Exécute des analyses Code Risk Analyzer et d'autres contrôles de conformité sur les dépôts d'applications. Oui
build-artifact Génère les artefacts correspondant à la configuration. Oui
sign-artifact Signe les artefacts générés. Oui
deploy Déploie la configuration, à l'aide des artefacts générés, dans l'environnement de développement. Oui
acceptance-test Exécute des tests d'acceptation et d'intégration sur la configuration déployée dans l'environnement de développement. Oui
release Ajoute les objets construits à l'inventaire. Oui
finish Collecte, crée et télécharge les fichiers journaux, les artefacts et les éléments de preuve dans l'armoire à preuves. Non

Pour plus d'informations sur la personnalisation des étapes à l'aide du fichier .pipeline-config.yaml, voir Scripts personnalisés. e) et des listes de paramètres de pipeline.

Paramètres de configuration du contexte et des variables Terraform

Pour les définitions Terraform qui définissent la source infrastructure-as-code, le contexte et les variables liées à l'analyse et aux vérifications liées à Terraform et Terraform peuvent être définis à l'aide des paramètres décrits dans le tableau 1.

Paramètres pour configurer le contexte et les variables Terraform
Propriété Valeur par défaut Description
tf-dir . Emplacement ou chemin dans le référentiel source où se trouve main.tf.
TF_VAR_<XXXX> Propriété de pipeline ou de déclencheur (sécurisée ou non sécurisée) qui fournit la valeur de la variable Terraform <XXXX>
tfvars-repository Référentiel Git du code source de l'infrastructure. Référentiel Git qui contient les fichiers tfavars. Le référentiel doit être déclaré dans la chaîne d'outils.
tfvars-branch main Branche du référentiel Git qui contient les fichiers tfvars.
tfvars-files Fichiers contenant des valeurs de variables Terraform.
terraform-version 1.2.9 Version de l'outil d'interface de ligne de commande Terraform à installer si elle n'est pas présente dans l'image utilisée pour les étapes stages.You pouvez également fournir des versions telles que 1.5.0-1. Voici la [liste des versions de Terraform]. (https://releases.hashicorp.com/terraform/)

Les mêmes paramètres s'appliquent aux scripts utilisés dans un processus de déploiement CD IaC. Etant donné que le processus CD peut traiter plusieurs entrées d'inventaire, vous pouvez définir la portée d'un paramètre pour une entrée d'inventaire. Pour spécifier le contexte Terraform et les variables d'une portée (entrée d'inventaire), préfixez la propriété avec le nom de l'entrée d'inventaire, par exemple: <inventory_entry>_. Ce préfixe s'applique aux entrées d'environnement tf-dir, TF_VAR_<XXXX>, tfvars-repository, tfvars-branch et tfvars-files.

Exemple :

hello-iac-sample_TF_VAR_resource_group : Default

Analyses et vérifications dans l'analyse du code statique

L'étape d'analyse de code statique exécute un certain nombre d'outils d'analyse de code statique sur les référentiels IaC spécifiés. Les référentiels qui sont fournis par la commande pipelinectl save_repo et le référentiel d'application par défaut sont analysés.

Vous pouvez utiliser l'une des méthodes définies pour le scannage de code statique configurable pour le pipeline d'intégration continue des relations d'application.

Le pipeline d'intégration continue IaC définit des outils supplémentaires qui sont activés à l'aide des paramètres opt-in-* du tableau 2 défini sur 1.

Analyse ou vérification Description Activation
tflint Exécute tflint $tflint_args --format=json à partir de tflint pour signaler les syntaxes dépréciées, les déclarations inutilisées et appliquer les meilleures pratiques, les conventions de nommage. opt-in-tflint fixé à 1
fmt Exécute terraform fmt -check à partir de fmt pour réécrire les fichiers de configuration Terraform dans un format et un style canoniques. opt-in-terraform-fmtvalidate fixé à 1
IaC Paramètres des outils d'analyse statique
Nom Type Par défaut Description Obligatoire ou facultatif
opt-in-terraform-fmt-validate text Exécute les commandes terraform fmt et terraform validate dans l'étape static-scan. facultatif
opt-in-tflint text Exécute la commande tflint dans l'étape static-scan. facultatif
tflint-version text v0.53.0 Indiquez la version tflint à installer si elle n'est pas fournie dans l'image utilisée pour l'exécution de l'étape static-scan. facultatif
tflint-config text Fichier de configuration à utiliser pour tflint. facultatif
tflint-args text Arguments de commande transmis à tflint lors de l'appel de l'outil. facultatif

Analyses et vérifications de conformité

Les vérifications de conformité définies pour le pipeline d'intégration continue lié à l'application sont également effectuées pour le pipeline d'intégration continue IaC.

Le pipeline IaC CI effectue des vérifications supplémentaires qui sont activées à l'aide des fonctions opt-in-.

Le pipeline d'EC IaC définit des outils supplémentaires qui sont activés à l'aide des paramètres opt-in- définis sur 1.

Analyses et contrôles de conformité supplémentaires deIaC
Analyse ou vérification Description Activation
cra-tf Utilisez la commande ibmcloud cra terraform-validate de l'outil CRA d' IBM Cloud pour analyser un plan Terraform à des fins de conformité. opt-in-cra-tf-validate défini sur 1.
tfsec Utilisez l'outil TFsec pour détecter les erreurs de configuration potentielles et créer des problèmes de conformité. opt-in-tfsec défini sur 1
checkov Utilisez l'outil Checkov pour détecter les erreurs de configuration et créer des problèmes de conformité. opt-in-checkov défini sur 1
Analyse de la conformité à l'IaC et vérification des paramètres de configuration
Propriété Valeur par défaut Description
opt-in-cra-tf-validate Indicateur d'exécution des vérifications de conformité à l'aide de l'outil ibmcloud cra terraform-validate.
cra-tf-policy-file Chemin d'accès au fichier de profil de politique. Pour plus d'informations, voir Options de la commande Terraform.
cra-tf-ignore-rules Liste de règles séparées par des virgules à ignorer dans le rapport ibmcloud cra terraform-validate.
cra-tf-ignore-rules-file Chemin d'accès au fichier JSON qui contient la liste des règles à ignorer du rapport ibmcloud cra terraform-validate. Pour plus d'informations sur le format de fichier, voir Format for cra-tf-ignore-rules-file.
opt-in-tfsec Indicateur d'exécution des vérifications de conformité à l'aide de l'outil tfsec.
tfsec-version Version `v1.21.0`` The tfsec à utiliser.
tfsec-args Arguments de la commande tfsec.
opt-in-checkov Indicateur d'exécution des vérifications de conformité à l'aide de l'outil checkov.
checkov-version `` signifie la dernière version checkov à installer si elle n'est pas disponible dans l'environnement.
checkov-args Arguments de la commande checkov.

À compter du 15 décembre 2025, IBM Cloud Security and Compliance Center sera obsolète. Toutes les instances de service existantes sont hors service.

Ces scripts sont exécutés sur tous les dépôts dont le pipeline a connaissance. Pour ajouter des dépôts à ces analyses, utilisez l'interface pipelinectl fournie dans votre phase d'installation. Pour plus d'informations, voir pipelinectl.

Pour plus d'informations sur la sortie attendue à partir des étapes de script utilisateur, voir Scripts personnalisés.

Format pour cra-tf-ignore-rules-file

Format attendu pour le fichier défini par cra-tf-ignore-rules-file format. Le format est similaire au format (sans le champ scc_parameters ) qui figure dans l'exemple de fichier de profil classique V2 pour la commande terraform-validate.

Exemple de contenu pour le fichier cra-tf-ignore-rules-file:

{
    "scc_rules": [
        {
            "scc_rule_id": "rule-8cbd597c-7471-42bd-9c88-36b2696456e9"
        },
        {
            "scc_rule_id": "rule-c97259ee-336d-4c5f-b436-1868107a9558"
        }
    ]
}

Artefact de génération

Dans l'étape de construction des artefacts, vous pouvez construire vos propres artefacts. Pour le pipeline IaC CI, la fonction de génération par défaut crée un fichier Tar qui contient la configuration Terraform.

La fonction de génération par défaut peut être configurée à l'aide de paramètres spécifiques du tableau 5.

Paramètres de configuration de l'artefact de construction
Propriété Valeur par défaut Description
configuration-name Partie "humanish" du nom de référentiel Git. Le nom de la configuration IaC. Utilisé pour le nom de fichier d'artefact et l'entrée d'inventaire générés par le pipeline d'EC IaC.
build-ignore-file Chemin d'accès à un fichier de liste des éléments à ignorer (utilisé pour tar --exclude-from)

Pour plus d'informations sur l'accès aux paramètres et aux secrets au cours des étapes de script personnalisé, voir Scripts personnalisés.

Signe d'artefact

L'étape de signature d'artefact fournit un comportement par défaut permettant d'utiliser une clé GPG pour créer un fichier de signature détaché pour un ou plusieurs artefacts.

Clé GPG de l'artefact de construction
Propriété Description
signing-key Valeur de clé privée GPG utilisée pour la version ASCII des signatures détachées d'un ou de plusieurs artefacts

Pour utiliser un processus de signature différent, personnalisez cette étape à l'aide de la configuration .pipeline-config.yaml de votre projet.

Déployer dans le développement

L'étape de déploiement déploie l'artefact de configuration dans un environnement de développement. Vous pouvez fournir vos variables et données d'identification pour cette étape à partir de variables de l'interface utilisateur de pipeline et du contenu de webhook de déclencheur de pipeline.

Les scripts fournis dans le cadre de l'image de base commune peuvent vous aider à effectuer un déploiement à l'aide de l'interface de ligne de commande schematics ou Terraform. Les paramètres de configuration des scripts pour l'action de déploiement sont décrits dans les tableaux 8 et 9.

Paramètres de configuration permettant d'utiliser Schematics comme outil de déploiement

Paramètres de configuration pour utiliser Schematics comme outil de déploiement
Propriété Valeur par défaut Description
schematics-ibmcloud-api-key Remplace le ibmcloud-api-key utilisé pour les actions liées aux schémas (extraction / création d'espace de travail schematics, planification et application).
schematics-workspace-name <schematics-workspace-prefix><toolchain name>-<pipeline id> Espace de travail à utiliser ou à créer s'il n'existe pas. Si l'espace de travail existe, il doit s'agir d'un espace de travail créé sans lien vers un Git référentiel. Pour plus d'informations, consultez la section Schematics Création d'un espace de travail. Cette restriction s'explique par le fait que le script télécharge l'artefact IaC de configuration sous forme de tar fichier à l'aide de la fonctionnalité de téléchargement Schematics de l'espace de travail.
schematics-workspace-prefix Préfixe utilisé pour la création de l'espace de travail lorsqu'aucun espace de travail n'est spécifié pour l'action de déploiement.
schematics-workspace-resource-group Par défaut, il s'agit du groupe de ressources de la chaîne d'outils. Groupe de ressources à utiliser pour la création de l'espace de travail schematics.
schematics-workspace-region Par défaut, il s'agit de la région de la chaîne d'outils. Région à utiliser pour la création de l'espace de travail schematics.
schematics-workspace-netrc Calculé à partir de référentiels connus. Valeur de la configuration netrc de l'espace de travail schematics à créer. Pour plus d'informations, voir Prise en charge du téléchargement de modules à partir d'un hôte distant privé.
schematics-workspace-terraform-version Correspond par défaut à la version terraform de schematics extraite à l'aide de ibmcloud schematics version --output JSON Version Terraform utilisée pour l'espace de travail schematics à créer. Voir Présentation des images Schematics et des fournisseurs Terraform intégrés.

Pour configurer les scripts dans le processus de IaC déploiement du CD, définissez le paramètre qui s'applique à une entrée d'inventaire donnée. Pour spécifier les propriétés d'environnement associées à Schematics as deployment tool pour une portée donnée (entrée d'inventaire), préfixez la propriété avec le nom de l'entrée d'inventaire, par exemple: <inventory_entry>_. Ce préfixe s'applique à toutes les entrées d'environnement liées aux schémas (à l'exception de schematics-ibmcloud-api-key).

Exemple :

hello-iac-sample_schematics-workspace-name : workspace-for-deployment-of-hello-iac-sample

Configuration pour l'utilisation de l'interface de ligne de commande Terraform en tant qu'outil de déploiement

Configuration pour utiliser Terraform CLI comme outil de déploiement
Propriété Description
tf-backend-s3-bucket Nom du compartiment qui stocke l'état.
tf-backend-s3-key Nom à utiliser pour conserver l'état.
tf-backend-s3-region Région de l'instance Cloud Object Storage.
tf-backend-s3-endpoint Cloud Object Storage point final.
tf-backend-s3-access_key Sous-section HMAC access_key des données d'identification.
tf-backend-s3-secret_key Sous-section HMAC secret_key des données d'identification.

Notez ce qui suit :

  • Pour plus d'informations sur l'utilisation du noeud final ou du compartiment Cloud Object Storage pour stocker l'état Terraform, voir: Store Terraform states in Cloud Object Storage.
  • Pour configurer les scripts dans le processus de déploiement CD IaC, définissez le paramètre dont la portée est une entrée d'inventaire. Pour spécifier les propriétés d'environnement liées à Terraform CLI as deployment tool pour une portée (entrée d'inventaire), préfixez la propriété avec le nom de l'entrée d'inventaire, par exemple: <inventory_entry>_. Ce préfixe s'applique à toutes les entrées d'environnement liées à schematics.

Exemple :

hello-iac-sample_tf-backend-s3-bucket : bucket-to-store-tfstate-of-hello-iac-sample

Publication dans l'inventaire

Utilisez l'étape de script utilisateur de publication dans l'inventaire pour ajouter des artefacts à l'inventaire à l'aide de la commande CLI cocoa inventory add. Pour plus d'informations sur cocoa inventory add, voir cacao inventory add.

Vous pouvez utiliser l'interface pipelinectl pour accéder à vos dépôts et artefacts en utilisant les commandes list_repos, load_repo, list_artifacts, et load_artifact. Pour plus d'informations, voir pipelinectl.

Collecte de données de conformité sur la génération

Lorsque le pipeline s'exécute correctement, vous pouvez collecter des informations sur la génération.

Les preuves sont collectées pour tous les contrôles, scans, tests et signatures d'artefacts et sont placées dans l'armoire à preuves. Les fichiers journaux de pipeline sont également sauvegardés dans le casier, avec les données de pipeline proprement dites, contenant les définitions Tekton. Les données de conformité sur les évaluations par les pairs sont également collectées au cours de cette étape. Le pipeline utilise pipelinectl pour rechercher des référentiels contenant des demandes d'extraction qui ont été fusionnés depuis la dernière génération. Le pipeline vérifie également le statut de l'examen des RP, l'enregistre en tant qu'artefact et crée des preuves basées sur le résultat.

Le script final est un évaluateur, qui affecte la couleur verte ou rouge au statut du pipeline en fonction des statuts de preuve. En cas d'échec, l'exécution de l'intégration continue est marquée en rouge.