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