Usando GitLab CI/CD para implantar o Terraform, o AWS CDK e modelos CloudFormation - AWS Orientação prescritiva

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usando GitLab CI/CD para implantar o Terraform, o AWS CDK e modelos CloudFormation

O DPA contém modelos de GitLab CI/CD que você usa como blocos de construção para implantar o código Terraform e IaC. AWS Cloud Development Kit (AWS CDK) CloudFormation Esta seção descreve o seguinte para esse caso de uso:

  • Estrutura de tubulação padronizada

  • Estágios e trabalhos reutilizáveis

  • Regras de estrutura de tubulação

  • Ferramentas integradas para escaneamentos de segurança

Pré-requisitos

  • Um ativo Conta da AWS

  • Permissões para provisionar recursos usando modelos de IaC

  • GitLab conta com qualquer tipo de versão sem licença, premium ou corporativa que suporte GitLab recursos de CI/CD

  • GitLab executores necessários configurados para executar trabalhos com imagens específicas do Docker

Ferramentas

  • cdk_nag é uma ferramenta de código aberto que usa uma combinação de pacotes de regras para verificar se os AWS CDK aplicativos estão aderindo às melhores práticas.

  • AWS CloudFormation Linter (cfn-lint) é um linter que verifica os modelos CloudFormation YAML ou JSON em relação à especificação do recurso.AWS CloudFormation Ele também executa outras verificações, como a verificação de valores válidos para as propriedades dos recursos e a adesão às práticas recomendadas.

  • cfn_nag é uma ferramenta de código aberto que identifica possíveis problemas de segurança em CloudFormation modelos pesquisando padrões.

  • O Checkov é uma ferramenta estática de análise de código que verifica o IaC em busca de configurações incorretas de segurança e conformidade.

  • Keeping Infrastructure as Code Secure (KICS) é uma ferramenta de código aberto que identifica vulnerabilidades de segurança, problemas de conformidade e configurações incorretas de infraestrutura no início do ciclo de desenvolvimento.

  • O tfsec é uma ferramenta estática de análise de código que verifica o código do Terraform em busca de possíveis configurações incorretas.

Instruções

  1. Copie o gitlab-ci diretório e hospede-o no grupo GitLab da sua organização.

  2. Certifique-se de que os aplicativos possam acessar o grupo GitLab organizacional que contém os modelos do DPA.

  3. Para o aplicativo, inclua o ponto de entrada específico do DPA para o pipeline da seguinte forma:

    • 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
  4. Para o aplicativo, defina as seguintes variáveis para permitir a implantação em DEV INTEGRATION ambientes.

    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