

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Utilizzo di GitLab CI/CD per distribuire Terraform, AWS CDK e modelli CloudFormation
<a name="using-gitlab-cicd"></a>

DPA contiene modelli GitLab CI/CD da utilizzare come elementi costitutivi per la distribuzione di Terraform e codice IaC. AWS Cloud Development Kit (AWS CDK) CloudFormation Questa sezione descrive quanto segue per questo caso d'uso:
+ Struttura della tubazione standardizzata
+ Fasi e lavori riutilizzabili
+ Regole della struttura della pipeline
+ Strumenti integrati per le scansioni di sicurezza

## Prerequisiti
<a name="prerequisites-gitlab-cicd"></a>
+ Un attivo Account AWS
+ Autorizzazioni per fornire risorse utilizzando modelli IaC
+ GitLab account con qualsiasi tipo di versione senza licenza, premium o aziendale che supporti le funzionalità CI/CD GitLab 
+ GitLab runner richiesti configurati per eseguire lavori con immagini Docker specifiche

## Tools (Strumenti)
<a name="tools-gitlab-cicd"></a>
+ [cdk\$1nag](https://github.com/cdklabs/cdk-nag#readme) è uno strumento open source che utilizza una combinazione di pacchetti di regole per verificare la conformità delle AWS CDK applicazioni alle migliori pratiche.
+ [AWS CloudFormation Linter (cfn-lint)](https://github.com/aws-cloudformation/cfn-lint) [è un linter che confronta i modelli YAML o JSON con le specifiche delle risorse. CloudFormation AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-resource-specification.html) Esegue anche altri controlli, come la verifica di valori validi per le proprietà delle risorse e il rispetto delle migliori pratiche.
+ [cfn\$1nag](https://github.com/stelligent/cfn_nag) è uno strumento open source che identifica potenziali problemi di sicurezza nei CloudFormation modelli cercando modelli.
+ [Checkov è uno strumento statico di analisi del codice che verifica](https://www.checkov.io/1.Welcome/What%20is%20Checkov.html) la presenza di configurazioni errate di sicurezza e conformità in IaC.
+ [Keeping Infrastructure as Code Secure (KICS)](https://github.com/Checkmarx/kics) è uno strumento open source che identifica le vulnerabilità di sicurezza, i problemi di conformità e le configurazioni errate dell'infrastruttura nelle prime fasi del ciclo di sviluppo.
+ [tfsec](https://github.com/aquasecurity/tfsec) è uno strumento statico di analisi del codice che controlla il codice Terraform per potenziali errori di configurazione.

## Istruzioni
<a name="instructions-gitlab-cicd"></a>

1. Copia la `gitlab-ci` directory e ospitala nel tuo gruppo organizzativo. GitLab

1. Assicurati che le applicazioni possano accedere al gruppo GitLab organizzativo che contiene i modelli DPA.

1. Per l'applicazione, includete il punto di ingresso specifico del DPA per la pipeline come segue:
   + 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. Per l'applicazione, definite le seguenti variabili per consentire la distribuzione in ambienti e. `DEV` `INTEGRATION`

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