

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Verwendung von GitLab CI/CD zur Bereitstellung von Terraform, AWS CDK und Vorlagen CloudFormation
<a name="using-gitlab-cicd"></a>

DPA enthält GitLab CI/CD-Vorlagen, die Sie als Bausteine für die Bereitstellung von Terraform- und IaC-Code verwenden. AWS Cloud Development Kit (AWS CDK) CloudFormation In diesem Abschnitt wird Folgendes für diesen Anwendungsfall beschrieben:
+ Standardisierte Pipeline-Struktur
+ Wiederverwendbare Stufen und Jobs
+ Regeln für die Pipeline-Struktur
+ Integrierte Tools für Sicherheitsscans

## Voraussetzungen
<a name="prerequisites-gitlab-cicd"></a>
+ Ein aktiver AWS-Konto
+ Berechtigungen zur Bereitstellung von Ressourcen mithilfe von IaC-Vorlagen
+ GitLab Konto mit jeder Art von lizenzfreier, Premium- oder Unternehmensversion, die CI/CD-Funktionen unterstützt GitLab 
+ GitLab erforderliche Runner, die für die Ausführung von Jobs mit bestimmten Docker-Images konfiguriert sind

## Tools
<a name="tools-gitlab-cicd"></a>
+ [cdk\$1nag](https://github.com/cdklabs/cdk-nag#readme) ist ein Open-Source-Tool, das eine Kombination von Regelpaketen verwendet, um AWS CDK Anwendungen auf Einhaltung von Best Practices zu überprüfen.
+ [AWS CloudFormation Linter (cfn-lint)](https://github.com/aws-cloudformation/cfn-lint) [ist ein Linter, der YAML- oder JSON-Vorlagen anhand der Ressourcenspezifikation überprüft CloudFormation .AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-resource-specification.html) Es führt auch andere Prüfungen durch, z. B. die Überprüfung auf gültige Werte für Ressourceneigenschaften und die Einhaltung von Best Practices.
+ [cfn\$1nag](https://github.com/stelligent/cfn_nag) ist ein Open-Source-Tool, das potenzielle Sicherheitsprobleme in CloudFormation Vorlagen identifiziert, indem es nach Mustern sucht.
+ [Checkov](https://www.checkov.io/1.Welcome/What%20is%20Checkov.html) ist ein statisches Codeanalyse-Tool, das IaC auf Sicherheits- und Compliance-Fehlkonfigurationen überprüft.
+ [Keeping Infrastructure as Code Secure (KICS)](https://github.com/Checkmarx/kics) ist ein Open-Source-Tool, das Sicherheitslücken, Compliance-Probleme und Fehlkonfigurationen der Infrastruktur früh im Entwicklungszyklus identifiziert.
+ [tfsec](https://github.com/aquasecurity/tfsec) ist ein statisches Codeanalyse-Tool, das Terraform-Code auf mögliche Fehlkonfigurationen überprüft.

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

1. Kopieren Sie das `gitlab-ci` Verzeichnis und hosten Sie es in Ihrer Organisationsgruppe. GitLab

1. Stellen Sie sicher, dass die Anwendungen auf die GitLab Organisationsgruppe zugreifen können, die die DPA-Vorlagen enthält.

1. Geben Sie für die Anwendung den DPA-spezifischen Einstiegspunkt für die Pipeline wie folgt an:
   + 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. Definieren Sie für die Anwendung die folgenden Variablen, um die Bereitstellung in Umgebungen zu ermöglichen. `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
   ```