مجموعة من قوالب terraform المستخدمة لتوفير مداخن تطبيق الويب على AWS ECS Fargate.
ملاحظة : نقترح الابتعاد عن هذا القالب إلى الإصدار المعياري الأحدث. سيظل هذا الريبو يتلقى تحديثات للحفاظ على التوافق مع تطور Terraform ومقدمي AWS ، ولكن سيتم تنفيذ معظم الميزات الأحدث في الوحدة. يمكنك العثور على الوحدة هنا: https://github.com/warnermedia/terraform-ecs-fargate-module

تم تصميم القوالب لتخصيصها. يمكن إزالة المكونات الاختيارية ببساطة عن طريق حذف ملف .tf .
يتم استخدام القوالب لإدارة مخاوف البنية التحتية ، وبالتالي ، تنشر القوالب صورة Docker الافتراضية. نوصي باستخدام Fargate CLI لإدارة مخاوف التطبيق مثل نشر صور التطبيق الفعلية ومتغيرات البيئة أعلى هذه البنية التحتية. يمكن استخدام Fargate CLI لنشر التطبيقات من الكمبيوتر المحمول أو في خطوط أنابيب CI/CD.
تتم مشاركة هذه المكونات من قبل جميع البيئات.
| اسم | وصف | خياري |
|---|---|---|
| Main.tf | مزود AWS ، الإخراج | |
| State.tf | S3 دلو الخلفية لتخزين Terraform عن بعد الحالة النائية | |
| Ecr.tf | مستودع ECR للتطبيق (جميع البيئات مشاركة) |
هذه المكونات هي لبيئة محددة. يجب أن يكون هناك دليل مقابل لكل بيئة مطلوبة.
| اسم | وصف | خياري |
|---|---|---|
| Main.tf | الدولة النائية Terform ، مزود AWS ، الإخراج | |
| ECS.TF | مجموعة ECS ، الخدمة ، تعريف المهمة ، EcstaskexecutionRole ، مجموعة سجل CloudWatch | |
| LB.TF | ALB ، المجموعة المستهدفة ، دلو S3 لسجلات الوصول | |
| NSG.TF | NSG لـ ALB والمهمة | |
| LB-HTTP.TF | مستمع HTTP ، قاعدة NSG. حذف إذا كان HTTPS فقط | نعم |
| LB-HTTPS.TF | مستمع HTTPS ، قاعدة NSG. حذف إذا كان HTTP فقط | نعم |
| Dashboard.tf | لوحة معلومات CloudWatch: مقاييس وحدة المعالجة المركزية ، والذاكرة ، والمقاييس المتعلقة بـ HTTP | نعم |
| دور | دور التطبيق للحاوية | نعم |
| CICD.TF | مستخدم IAM يمكن استخدامه بواسطة أنظمة CI/CD | نعم |
| AutoScale-perf.tf | القياس التلقائي القائم على الأداء | نعم |
| الوقت التلقائي | تحجيم السيارات القائم على الوقت | نعم |
| سجلات logzio.tf | سجلات حاويات السفينة إلى logz.io | نعم |
| SecretsManager.tf | أضف Secret Manager Secret مع مفتاح CMK KMS. يعطي أيضًا دور التطبيق و ECS تعريف مهمة الوصول إلى الأسرار من Manager Secrets | نعم |
| أسرار sidecar.tf | يضيف تكوين تعريف المهمة لنشر التطبيق الخاص بك إلى جانب حاوية Sidecar التي تكتب Secret Manager Secret إلى ملف. لاحظ أن هذا يعتمد على اختيار في secretsmanager.tf . | نعم |
| SSM-parameters.tf | أضف مفتاح CMK KMS للاستخدام مع متجر المعلمات SSM. يعطي أيضًا دور المهمة ECS للوصول إلى أسرار قراءة من متجر المعلمات. | نعم |
| ECS-event-stream.tf | أضف لوحة معلومات سجل ECS | نعم |
عادة ، لن تحتاج إلى تشغيل terraform الأساسي مرة واحدة فقط ، ومن ثم يجب أن تحتاج فقط إلى تغييرات بشكل غير متكرر. بعد بناء القاعدة ، يمكن بناء كل بيئة.
# 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 الأولي) لا يتم تخزين قاعدة .tfstate التي تم إنشاؤها في دلو الحالة البعيدة S3. تأكد من فحص القاعدة .tfstate في ريبو البنية التحتية. سيتجاهل terraform .gitignore الذي تم إنشاؤه بواسطة Github جميع ملفات .tfstate ؛ ستحتاج إلى تعديل هذا!
بدلاً من ذلك ، يمكنك استخدام Fargate-Create CLI لسقالة مشاريع جديدة بناءً على هذا القالب.
ثَبَّتَ
curl -s get-fargate-create.turnerlabs.io | sh إنشاء ملف 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.tfvarsقاعدة readme
البيئة dev readme
قم بتثبيت خطاف ما قبل الالتزام الذي يتحقق من رمز terraform للتنسيق
ln -s ../../pre-commit.sh .git/hooks/pre-commit