Eine Reihe von Terraformvorlagen, die zur Bereitstellung von Webanwendungsstapeln auf AWS -ECS -Fargate verwendet werden.
Hinweis : Wir empfehlen, von dieser Vorlage in unsere neuere modulare Version zu wandern. Dieses Repo erhält weiterhin Aktualisierungen, um die Kompatibilität zu erhalten, während die Terraform und die AWS -Anbieter sich weiterentwickeln. Die meisten neueren Funktionen werden jedoch im Modul implementiert. Hier finden Sie das Modul: https://github.com/warnermedia/terraform-ecs-

Die Vorlagen sollen angepasst werden. Die optionalen Komponenten können entfernt werden, indem einfach die .tf -Datei gelöscht wird.
Die Vorlagen werden zur Verwaltung von Infrastrukturproblemen verwendet, und als solche stellen die Vorlagen ein Standard -Backend -Docker -Image ein. Wir empfehlen, die Fargate CLI für die Verwaltung von Anwendungsbedenken wie die Bereitstellung Ihrer tatsächlichen Anwendungsbilder und Umgebungsvariablen über diese Infrastruktur zu verwalten. Die Fargate -CLI kann verwendet werden, um Anwendungen aus Ihrem Laptop oder in CI/CD -Pipelines bereitzustellen.
Diese Komponenten werden von allen Umgebungen geteilt.
| Name | Beschreibung | Optional |
|---|---|---|
| Main.tf | AWS -Anbieter, Ausgabe | |
| State.tf | S3 Bucket Backend für die Aufbewahrung von Terraform Remote State | |
| ecr.tf | ECR -Repository für die Anwendung (alle Umgebungen teilen) |
Diese Komponenten sind für eine bestimmte Umgebung. Es sollte ein entsprechendes Verzeichnis für jede Umgebung geben, die benötigt wird.
| Name | Beschreibung | Optional |
|---|---|---|
| Main.tf | Terrform Remote State, AWS -Anbieter, Ausgabe | |
| ecs.tf | ECS -Cluster, Dienst, Aufgabendefinition, ecstaskexecutionrole, CloudWatch -Protokollgruppe | |
| lb.tf | ALB, Zielgruppe, S3 -Bucket für Zugriffsprotokolle | |
| nsg.tf | NSG für ALB und Aufgabe | |
| lb-http.tf | HTTP -Hörer, NSG -Regel. Löschen Sie nur, wenn nur https | Ja |
| lb-https.tf | HTTPS -Hörer, NSG -Regel. Löschen Sie nur, wenn nur HTTP | Ja |
| Dashboard.tf | CloudWatch-Dashboard: CPU-, Speicher- und HTTP-bezogene Metriken | Ja |
| Rolle.tf | Anwendungsrolle für Container | Ja |
| cicd.tf | IAM -Benutzer, der von CI/CD -Systemen verwendet werden kann | Ja |
| Autoscale-perf.tf | Leistungsbasierte automatische Skalierung | Ja |
| autoscale-time.tf | Zeitbasierte Autoskalierung | Ja |
| logs-logzio.tf | Versenden Sie Containerprotokolle in logz.io | Ja |
| SecretsManager.tf | Fügen Sie einen Secrets -Manager -Geheimnis mit einem CMK -KMS -Schlüssel hinzu. Gibt auch App -Rollen- und ECS -Aufgabendefinitionsrolle zu Zugriff auf das Lesen von Geheimnissen von Secrets Manager | Ja |
| Secrets-Sidecar.tf | Fügt eine Task -Definition -Konfiguration für die Bereitstellung Ihrer App zusammen mit einem Sidecar -Container hinzu, der Ihr Geheimnis von Secrets Manager für eine Datei schreibt. Beachten Sie, dass dies davon abhängt, sich für secretsmanager.tf zu entscheiden. | Ja |
| ssm-parameters.tf | Fügen Sie einen CMK -KMS -Schlüssel für die Verwendung mit dem SSM -Parameterspeicher hinzu. Gibt auch ECS -Aufgabendefinitionsrolle zu Zugriff auf Lesegeheimnisse aus dem Parameterspeicher. | Ja |
| ECS-Event-Stream.tf | Fügen Sie ein ECS -Event -Protokoll -Dashboard hinzu | Ja |
In der Regel muss die Basis -Terraform nur einmal ausgeführt werden und sollte dann nur sehr selten Änderungen benötigen. Nach dem Bau der Basis kann jede Umgebung gebaut werden.
# Move into the base directory
$ cd base
# Sets up Terraform to run
$ terraform init
# Executes the Terraform run
$ terraform apply
# Now, move into the dev environment
$ cd ../env/dev
# Sets up Terraform to run
$ terraform init
# Executes the Terraform run
$ terraform apply
terraform apply ) Die generierte Basis .tfstate wird nicht im Remote -Status S3 -Eimer gespeichert. Stellen Sie sicher, dass die Basis .tfstate in Ihr Infrastruktur -Repo untersucht wird. .tfstate von GitHub generierte Standardteraform .gitignore Sie müssen dies ändern!
Alternativ können Sie die Fargate-Create-CLI verwenden, um neue Projekte basierend auf dieser Vorlage zu sammeln.
installieren
curl -s get-fargate-create.turnerlabs.io | sh Erstellen Sie eine Eingabe -VARS -Datei ( terraform.tfvars )
# app/env to scaffold
app = " my-app "
environment = " dev "
internal = true
container_port = " 8080 "
replicas = " 1 "
health_check = " /health "
region = " us-east-1 "
aws_profile = " default "
saml_role = " admin "
vpc = " vpc-123 "
private_subnets = " subnet-123,subnet-456 "
public_subnets = " subnet-789,subnet-012 "
tags = {
application = " my-app "
environment = " dev "
team = " my-team "
customer = " my-customer "
contact-email = " [email protected] "
}$ fargate-create -f terraform.tfvarsBasisreadme
Environment dev Readme
Installieren Sie Pre-Commit-Haken, der den Terraformcode auf Formatierung überprüft
ln -s ../../pre-commit.sh .git/hooks/pre-commit