Satu set templat terraform yang digunakan untuk menyediakan tumpukan aplikasi web di AWS ECS Fargate.
Catatan : Kami sarankan menjauh dari template ini ke versi modular baru kami. Repo ini masih akan menerima pembaruan untuk mempertahankan kompatibilitas saat Terraform dan penyedia AWS berkembang, tetapi sebagian besar fitur yang lebih baru akan diimplementasikan dalam modul. Anda dapat menemukan modul di sini: https://github.com/warnermedia/terraform-ecs-fargate-module

Template dirancang untuk disesuaikan. Komponen opsional dapat dihapus dengan hanya menghapus file .tf .
Templat digunakan untuk mengelola masalah infrastruktur dan, dengan demikian, templat menggunakan gambar Docker backend default. Kami merekomendasikan menggunakan Fargate CLI untuk mengelola masalah aplikasi seperti menggunakan gambar aplikasi dan variabel lingkungan Anda yang sebenarnya di atas infrastruktur ini. Fargate CLI dapat digunakan untuk menggunakan aplikasi dari laptop Anda atau dalam pipa CI/CD.
Komponen -komponen ini dibagikan oleh semua lingkungan.
| Nama | Keterangan | Opsional |
|---|---|---|
| Main.tf | Penyedia AWS, output | |
| state.tf | S3 Bucket Backend untuk Menyimpan Negara Jauh Terraform Terraform | |
| ecr.tf | Repositori ECR untuk aplikasi (semua lingkungan berbagi) |
Komponen -komponen ini untuk lingkungan tertentu. Harus ada direktori yang sesuai untuk setiap lingkungan yang dibutuhkan.
| Nama | Keterangan | Opsional |
|---|---|---|
| Main.tf | Status Remote Terrform, Penyedia AWS, Output | |
| ecs.tf | ECS Cluster, Layanan, Definisi Tugas, EcstaskexecutionRole, CloudWatch Log Group | |
| lb.tf | Alb, grup target, ember S3 untuk log akses | |
| nsg.tf | NSG untuk ALB dan tugas | |
| lb-http.tf | Pendengar HTTP, aturan NSG. Hapus jika https saja | Ya |
| lb-https.tf | HTTPS Listener, aturan NSG. Hapus jika http saja | Ya |
| dashboard.tf | Dasbor CloudWatch: CPU, Memori, dan Metrik Terkait HTTP | Ya |
| peran.tf | Peran aplikasi untuk wadah | Ya |
| cicd.tf | Pengguna IAM yang dapat digunakan oleh sistem CI/CD | Ya |
| Autoscale-Perf.tf | Penskalaan otomatis berbasis kinerja | Ya |
| Autoscale-time.tf | Penskalaan otomatis berbasis waktu | Ya |
| Logs-gogzio.tf | Log Kontainer Kapal ke Logz.io | Ya |
| SecretsManager.tf | Tambahkan Rahasia Manajer Rahasia dengan kunci CMK KMS. Juga memberikan peran aplikasi dan ECS Definisi Tugas Akses Peran untuk Membaca Rahasia dari Manajer Rahasia | Ya |
| Secrets-decar.tf | Menambahkan konfigurasi definisi tugas untuk menggunakan aplikasi Anda bersama dengan wadah sespan yang menulis rahasia manajer rahasia Anda ke file. Perhatikan bahwa ini bergantung pada memilih ke secretsmanager.tf . | Ya |
| ssm-parameters.tf | Tambahkan tombol CMK KMS untuk digunakan dengan SSM Parameter Store. Juga memberikan ECS Tugas Definisi Akses Peran untuk Membaca Rahasia dari Parameter Store. | Ya |
| ecs-event-stream.tf | Tambahkan Dasbor Log Event ECS | Ya |
Biasanya, terraform dasar hanya perlu dijalankan sekali, dan kemudian hanya perlu perubahan sangat jarang. Setelah pangkalan dibangun, setiap lingkungan dapat dibangun.
# 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 ) Basis yang dihasilkan .tfstate tidak disimpan dalam bucket S3 negara bagian jarak jauh. Pastikan basis .tfstate diperiksa ke repo infrastruktur Anda. Terraform default .gitignore yang dihasilkan oleh GitHub akan mengabaikan semua file .tfstate ; Anda harus memodifikasi ini!
Atau Anda dapat menggunakan Fargate-Create CLI untuk meremukkan proyek baru berdasarkan templat ini.
memasang
curl -s get-fargate-create.turnerlabs.io | sh Buat file input vars ( 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.tfvarsBASE REACEME
Lingkungan dev ReadMe
Pasang kait pra-komit yang memeriksa kode terraform untuk memformat
ln -s ../../pre-commit.sh .git/hooks/pre-commit