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.
Wird CodePipeline zur Bereitstellung von Terraform und Vorlagen verwendet CloudFormation
Notice (Hinweis)
AWS CodeCommit ist für Neukunden nicht mehr verfügbar. Bestandskunden von AWS CodeCommit können den Service weiterhin wie gewohnt nutzen. Weitere Informationen
In der DPA verwenden Sie Bausteine für die AWS CodePipeline Erstellung von Beschleunigern für Terraform und IaC. CloudFormation In diesem Abschnitt wird Folgendes für diesen Anwendungsfall beschrieben:
-
Standardisierte Pipeline-Struktur
-
Wiederverwendbare Stufen und Jobs
-
Integrierte Tools für Sicherheitsscans
Das DPA-Repository enthält Ordner für Terraform
-
Pipeline-Module — Dieser Ordner enthält den Code für die Bereitstellung der standardisierten Pipeline-Struktur.
-
shared — Dieser Ordner enthält ready-to-use Buildspec-Dateien für die DPA-Phasen und -Jobs.
Voraussetzungen
-
Ein aktiver AWS-Konto
-
Berechtigungen zur Bereitstellung von Ressourcen mithilfe von IaC-Vorlagen
-
Berechtigungen zum Erstellen von AWS CodeCommit Repositorys und Komponenten CodePipeline
Tools
-
cfn-lint
ist ein Linter, der CloudFormation YAML- oder JSON-Vorlagen anhand der Ressourcenspezifikation überprüft.AWS CloudFormation 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_nag
ist ein Open-Source-Tool, das potenzielle Sicherheitsprobleme in CloudFormation Vorlagen identifiziert, indem es nach Mustern sucht. -
Checkov
ist ein statisches Codeanalyse-Tool, das IaC auf Sicherheits- und Compliance-Fehlkonfigurationen überprüft. -
TFLint
ist ein Linter, der den Terraform-Code auf mögliche Fehler und die Einhaltung von Best Practices überprüft. -
tfsec
ist ein statisches Codeanalyse-Tool, das Terraform-Code auf mögliche Fehlkonfigurationen überprüft.
Anweisungen
CodeCommit Repositorys erstellen
-
Erstellen Sie zwei separate CodeCommit Repositorys wie folgt:
-
common-repo
— Dieses Repository enthält die gemeinsam genutzten Bibliotheken, Buildspec-Dateien und Abhängigkeiten. -
app-repo
— Dieses Repository enthält die Terraform oder die CloudFormation Vorlagen für die Bereitstellung Ihrer Infrastruktur.
Anweisungen finden Sie unter Erstellen eines AWS CodeCommit Repositorys.
-
-
Erstellen Sie im
common-repo
Repo einen Ordner mit dem Namenshared
. Kopieren Sie die Buildspec-Dateien aus dem Terraform- oder CloudFormation Shared-Ordner im GitHub DPA-Repo in den neuen Ordner. Anweisungen finden Sie unter Erstellen oder Hinzufügen einer Datei zu einem Repository. AWS CodeCommit -
Erstellen Sie im
app-repo
Repository einen Ordner mit dem Namenentrypoint
. Kopieren Sie die Datei aus dem Terraform- oder CloudFormation Entrypoint-Ordner im GitHub DPA-Repo in den neuen Ordner. Weitere Informationen zu diesen Dateien finden Sie unter. Grundlegendes zur JSON-Datei für den Einstiegspunkt -
Sehen Sie sich das Verzeichnis Terraform
oder die CloudFormation Beispiele an und strukturieren Sie Ihren app-repo
Ordner dann entsprechend diesen Beispielen. Diese Verzeichnisse enthalten Beispiele für die Bereitstellung einer Amazon Elastic Compute Cloud (Amazon EC2) -Instance oder eines Amazon Simple Storage Service (Amazon S3) -Buckets. -
Fahren Sie mit einem der folgenden beiden Abschnitte fort:
Erstellen Sie die Pipeline und definieren Sie Phasen (Terraform)
-
Klonen Sie das DevOps Pipeline Accelerator (DPA) -Repository
von GitHub Ihrer lokalen Workstation. -
Navigieren Sie im geklonten Repository zu dem
aws-codepipeline/terraform/pipeline-modules
Ordner. -
Aktualisieren und validieren Sie in der Datei terraform.tfvars den Terraform-Status und die rollenspezifischen Variablen (IAM). AWS Identity and Access Management
-
Erstellen Sie ein Docker-Image. Anweisungen finden Sie unter Docker-Image-Erstellung für die Verwendung von in CodeBuild
()GitHub. -
Aktualisieren Sie die
builder_image
Variable, die in der Datei terraform.tfvars definiert ist. -
Geben Sie die folgenden Befehle ein. Dadurch wird die Infrastruktur über Terraform initialisiert, in der Vorschau angezeigt und bereitgestellt.
terraform init terraform plan terraform apply
-
Melden Sie AWS-Konto sich bei der an. Vergewissern Sie sich in der CodePipeline Konsole
, dass die neue Pipeline erstellt wurde. Hinweis: Wenn sich der erste Lauf in einem
failed
Status befindet, wiederholen Sie den vorherigen Schritt. -
Wenn die neue CodePipeline Pipeline erstellt wird, AWS CodeBuild wird automatisch eine neue IAM-Rolle für erstellt. Der Name dieser automatisch erstellten Rolle endet auf
-codebuild-role
. Aktualisieren Sie diese Rolle mit den Berechtigungen, die für die Bereitstellung Ihrer Infrastruktur erforderlich sind.
Erstellen Sie die Pipeline und definieren Sie die Phasen (CloudFormation)
-
Klonen Sie das DevOps Pipeline Accelerator (DPA) -Repository
von GitHub Ihrer lokalen Workstation. -
Navigieren Sie im geklonten Repository zu dem
aws-codepipeline/cloudformation/pipeline-modules
Ordner. -
Stellen Sie die Vorlage CloudFormation pipeline-cft.yaml bereit. Im Folgenden sind die erforderlichen Parameter aufgeführt, die Sie an den Stack übergeben müssen.
-
ArtifactsBucket
— Name des Repos, das die zu aktualisierenden Pipeline-Artefakte enthält -
EcrDockerRepository
— Uniform Resource Identifier (URI) des Amazon ECR-Repositorys mit dem Tagimage
-
CodeCommitAppRepo
— Name des CodeCommit Repositorys, das die Vorlagen enthält -
CodeCommitBaseRepo
— Name des CodeCommit Repositorys, das die gemeinsam genutzten Dateien enthält -
CodeCommitRepoBranch
— Name des CodeCommit Repository-Zweigs -
SNSMailAddress
— E-Mail-Adresse, an die Amazon Simple Notification Service (Amazon SNS) Benachrichtigungen über den Pipeline-Status gesendet werden
Anweisungen finden Sie in der Dokumentation unter Arbeiten mit Stacks. CloudFormation
-
-
Melden Sie sich beim AWS-Konto an. Vergewissern Sie sich in der CodePipeline Konsole
, dass die neue Pipeline erstellt wurde. -
Wenn die neue CodePipeline Pipeline erstellt wird, AWS CodeBuild wird automatisch eine neue IAM-Rolle für erstellt. Der Name dieser automatisch erstellten Rolle endet auf
-codebuild-role
. Aktualisieren Sie diese Rolle mit den Berechtigungen, die für die Bereitstellung Ihrer Infrastruktur erforderlich sind.
Grundlegendes zur JSON-Datei für den Einstiegspunkt
Terraform-Einstiegspunktdatei
Dies ist die Hauptkonfigurationsdatei. In dieser Datei können Sie eine Phase anpassen und aktivieren oder deaktivieren. Wenn Sie eine Phase deaktivieren, wird die Phase dadurch nicht gelöscht oder aus der Pipeline entfernt. Stattdessen wird die Phase während der Laufzeit übersprungen.
{ "build_stage_required" : "true", "test_stage_required" : "true", "predeploy_stage_required": "true", "deploy_stage_required": "true", "postdeploy_stage_required": "true", "destroy_stage_required": "true", "bucket":"tf-state-dpa", # S3 bucket used for Terraform backend "key":"terraform_test.tfstate", # S3 key to be used "region":"us-east-1", "dynamodb_table":"tf-state-dpa" # DynamoDB Table for Terraform backend }
CloudFormation Einstiegspunkt-Datei
Dies ist die Hauptkonfigurationsdatei. In dieser Datei passen Sie Stufen an und aktivieren oder deaktivieren sie. Wenn Sie eine Phase deaktivieren, wird die Phase dadurch nicht gelöscht oder aus der Pipeline entfernt. Stattdessen überspringt die Pipeline die Phase während der Laufzeit.
{ "init_stage_required" : "true", "test_stage_required" : "true", "createinfra_stage_required": "true", "envType" : "cloudformation", "stage_required" : "true", "cft_s3_bucket" : "pipeline-bucket", #S3 bucket from the destination account to keep CFT templates "stack_name" : "aws-cft-poc", #CloudFormation stack name "account" : "************", #Destination AWS account to deploy stack "roleName" : "codestack-poc-cross-account-role", #Cross-account IAM role name "region" : "us-east-1", "destroy_stack" : "false" #To destroy the provisioned stack, set this value to "true" }