Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utilisation de GitLab CI/CD pour déployer Terraform et des modèles AWS CDK CloudFormation
DPAcontient des modèles GitLab CI/CD que vous utilisez comme éléments de base pour déployer Terraform et le code AWS Cloud Development Kit (AWS CDK) IaC. CloudFormation Cette section décrit les éléments suivants pour ce cas d'utilisation :
-
Structure de pipeline normalisée
-
Stages et travaux réutilisables
-
Règles relatives à la structure du pipeline
-
Outils intégrés pour les scans de sécurité
Prérequis
-
Un actif Compte AWS
-
Autorisations de mise à disposition de ressources à l'aide de modèles IaC
-
GitLab compte avec tout type de version sans licence, premium ou d'entreprise prenant en charge GitLab les fonctionnalités CI/CD
-
GitLab exécuteurs requis configurés pour exécuter des tâches avec des images Docker spécifiques
Outils
-
cdk_nag
est un outil open source qui utilise une combinaison de packs de règles pour vérifier que les AWS CDK applications respectent les meilleures pratiques. -
AWS CloudFormation Linter (cfn-lint) est un linter
qui vérifie les JSON modèles par rapport à la spécification des CloudFormation YAML ressources.AWS CloudFormation Il effectue également d'autres contrôles, tels que la vérification de la validité des valeurs des propriétés des ressources et le respect des meilleures pratiques. -
cfn_nag
est un outil open source qui identifie les problèmes de sécurité potentiels dans les CloudFormation modèles en recherchant des modèles. -
Checkov
est un outil d'analyse de code statique qui vérifie les erreurs de configuration liées à la sécurité et à la conformité dans iAc. -
Keeping Infrastructure as Code Secure (KICS)
est un outil open source qui identifie les vulnérabilités de sécurité, les problèmes de conformité et les erreurs de configuration de l'infrastructure au début du cycle de développement. -
tfsec
est un outil d'analyse de code statique qui vérifie le code Terraform pour détecter d'éventuelles erreurs de configuration.
Instructions
-
Copiez le
gitlab-ci
répertoire et hébergez-le dans votre groupe GitLab organisationnel. -
Assurez-vous que les applications peuvent accéder au groupe GitLab organisationnel qui contient les DPA modèles.
-
Pour l'application, incluez le point d'entrée DPA spécifique pour le pipeline comme suit :
-
Terraform
include: - project: <GITLAB_GROUP_PATH/<REPOSITORY_NAME> ref: main # best practise to create release tag and use the same file: gitlab-ci/entrypoints/gitlab/terraform-infrastructure.yml
-
AWS CDK
include: - project: <GITLAB_GROUP_PATH/<REPOSITORY_NAME> ref: main # best practise to create release tag and use the same file: gitlab-ci/entrypoints/gitlab/cdk-infrastructure.yml
-
CloudFormation
include: - project: <GITLAB_GROUP_PATH/<REPOSITORY_NAME> ref: main # best practise to create release tag and use the same file: gitlab-ci/entrypoints/gitlab/cf-infrastructure.yml
-
-
Pour l'application, définissez les variables suivantes afin de permettre le déploiement sur
DEV
etINTEGRATION
les environnements.AWS_REGION: us-east-2 # region where deployment should happen DEV_AWS_ACCOUNT: 123456789012 # Dev environment AWS account number DEV_ARN_ROLE: arn:aws:iam::123456789012:role/dpa-gitlab-access-role # IAM role ARN that will be used to provision resources in Dev DEV_DEPLOY: "true" # true / false to enable deployment to DEV environment DEV_ENV: "dev" # Dev environment name INT_AWS_ACCOUNT: 123456789012 # Integration environment AWS account number INT_ARN_ROLE: arn:aws:iam::123456789012:role/dpa-gitlab-access-role # IAM role ARN that will be used to provision resources in Integration INT_DEPLOY: "true" # true / false to enable deployment to Integration environment INT_ENV: "int" # Integration environment name