Набор шаблонов Terraform, используемых для обеспечения стеков веб -приложений на AWS Fargate.
Примечание : мы предлагаем перейти от этого шаблона к нашей более новой модульной версии. Этот репо все еще будет получать обновления для поддержания совместимости по мере развития Terraform и поставщиков AWS, но большинство новых функций будут реализованы в модуле. Вы можете найти модуль здесь: https://github.com/warnermedia/terraform-ecs-fargate-module

Шаблоны предназначены для настройки. Необязательные компоненты могут быть удалены, просто удалив файл .tf .
Шаблоны используются для управления проблемами инфраструктуры, и, как таковые, шаблоны развертывают изображение Docker Backend по умолчанию. Мы рекомендуем использовать CLI Fargate для управления проблемами приложений, таких как развертывание ваших фактических изображений приложений и переменных среды поверх этой инфраструктуры. CLI Fargate может использоваться для развертывания приложений с вашего ноутбука или в трубопроводах CI/CD.
Эти компоненты передаются всеми средами.
| Имя | Описание | Необязательный |
|---|---|---|
| main.tf | AWS -провайдер, вывод | |
| state.tf | S3 Bucket Backend для хранения отдаленного штата Terraform | |
| ecr.tf | Репозиторий ECR для применения (все среды делятся) |
Эти компоненты предназначены для конкретной среды. Должен быть соответствующий каталог для каждой необходимой среды.
| Имя | Описание | Необязательный |
|---|---|---|
| main.tf | Terrform удаленное состояние, поставщик AWS, вывод | |
| ecs.tf | Кластер ECS, служба, определение задачи, EcstaskexeCutionrole, группа журналов CloudWatch | |
| lb.tf | Alb, Target Group, S3 Bucket для журналов доступа | |
| nsg.tf | NSG для ALB и задание | |
| lb-http.tf | Http слушатель, правило NSG. Удалить, если HTTPS | Да |
| lb-https.tf | HTTPS Слушатель, правило NSG. Удалить, если только HTTP | Да |
| Dashboard.tf | Dashboard CloudWatch: CPU, память и HTTP-метрики, связанные с HTTP | Да |
| ROLE.TF | Роль приложения для контейнера | Да |
| cicd.tf | IAM пользователь, который может использоваться системами CI/CD | Да |
| Autoscale-perf.tf | Автоматическое масштабирование на основе производительности | Да |
| AutoScale-Time.tf | Автоматическое масштабирование на основе времени | Да |
| logs-logzio.tf | Отдельные журналы контейнеров в logz.io | Да |
| Secretsmanager.tf | Добавьте секрет секретов с ключом CMK KMS. Также дает роли приложения и определение задачи ECS Доступ к секретам чтения от Secrets Manager | Да |
| Secrets-sidecar.tf | Добавляет конфигурацию определения задачи для развертывания вашего приложения вместе с контейнером по боковым целям, который записывает секрет вашего секрета в секрете файла. Обратите внимание, что это зависит от выбора в secretsmanager.tf . | Да |
| ssm-parameters.tf | Добавьте ключ CMK KMS для использования в хранилище параметров SSM. Также дает ECS определение задачи, доступ к роле, к секретам чтения из хранилища параметров. | Да |
| ECS-EVENT-stream.tf | Добавить панель мониторинга журнала событий ECS | Да |
Как правило, базовый терраформ должен быть запущен только один раз, а затем нуждаются только в изменениях очень редко. После того, как база построена, каждая среда может быть построена.
# 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 ; Вам нужно это изменить!
В качестве альтернативы вы можете использовать CLI Fargate-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