

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
<a name="using-gitlab-cicd"></a>

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
<a name="prerequisites-gitlab-cicd"></a>
+ 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
<a name="tools-gitlab-cicd"></a>
+ [cdk\$1nag](https://github.com/cdklabs/cdk-nag#readme) é 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](https://github.com/aws-cloudformation/cfn-lint) [que verifica os modelos CloudFormation YAML ou JSON em relação à especificação do recurso.AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-resource-specification.html) 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\$1nag](https://github.com/stelligent/cfn_nag) é uma ferramenta de código aberto que identifica possíveis problemas de segurança em CloudFormation modelos pesquisando padrões.
+ O [Checkov](https://www.checkov.io/1.Welcome/What%20is%20Checkov.html) é 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)](https://github.com/Checkmarx/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](https://github.com/aquasecurity/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
<a name="instructions-gitlab-cicd"></a>

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

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

1. 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
     ```

1. 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
   ```