Terraform — мощный инструмент, но легко скатиться в хаос, когда одни и те же ресурсы повторяются в каждом проекте. Настало время структурировать всё по уму с помощью модулей.
Вот как модули помогут тебе:
🧩 Что такое модуль в Terraform?
Это переиспользуемый блок кода с входами (variables), выходами (outputs) и логикой, который можно вызывать из любого проекта. Примеры — VPC, ECS-сервис, ALB, CloudWatch-алерты.
📁 Структура модуля:
modules/
├── vpc/
│ ├── main.tf
│ ├── variables.tf
│ └── outputs.tf
🔄 Использование модуля:
module "vpc" {
source = "./modules/vpc"
cidr_block = "10.0.0.0/16"
region = "eu-west-1"
}
💡 Полезные практики:
- Держи модули в отдельном репозитории (или хотя бы папке)
- Дефолтные значения переменных — must-have
- Используй
terraform-docs для автогенерации документации- Добавляй
README.md с примером вызова- Всегда пиши
outputs.tf — он пригодится для связи между модулями🚨 Частые ошибки:
- Жестко закодированные значения (не делай так 🙅♂️)
- Отсутствие версионирования модулей
- Слишком "умные" модули (оставляй возможность переопределения)
🏁 Вывод:
Модули экономят время, упрощают сопровождение и помогают внедрять best practices по всей инфраструктуре. Один раз запилил модуль — используешь везде. Главное — не превращать модуль в монстра с сотней переменных.
📚 Полезное:
- Terraform Module Best Practices
#devops #terraform
Подпишись 👉@i_DevOps