Ответ
Основные инструменты в моем стеке IaC – Terraform и Ansible, которые я применяю на разных этапах жизненного цикла инфраструктуры.
Terraform (HashiCorp) – оркестратор инфраструктуры. Я использую его для декларативного описания и создания облачных ресурсов "с нуля".
- Что делаю: Объявляю VPC, подсети, security groups, managed Kubernetes кластеры (EKS), базы данных (RDS), очереди (SQS).
- Ключевая концепция – состояние (state): Файл
terraform.tfstateхранит текущее состояние инфраструктуры. Это позволяет Terraform понимать, что нужно создать, обновить или удалить. State файл всегда хранился удаленно в S3 с блокировкой через DynamoDB для командной работы. - Пример (создание VPC в AWS):
resource "aws_vpc" "main" { cidr_block = "10.0.0.0/16" enable_dns_hostnames = true tags = { Name = "Production-VPC" ManagedBy = "Terraform" } }
Ansible (Red Hat) – конфигурационный менеджер и инструмент деплоя. Я применяю его для настройки уже запущенных виртуальных машин или контейнеров.
- Что делаю: Устанавливаю пакеты (Docker, nginx), настраиваю системные параметры (sysctl, limits.conf), разворачиваю приложения из артефактов, управляю пользователями и правами.
- Ключевая концепция – идемпотентность: Плейбук можно запускать много раз, и результат будет одинаковым (если конфигурация уже применена, ничего не меняется).
- Пример (установка и запуск Docker):
- name: Ensure Docker is installed and running
hosts: docker_servers
become: yes
tasks:
- name: Install Docker packages
apt:
name:
- docker.io
- docker-compose state: present update_cache: yes
- name: Ensure Docker service is started and enabled
systemd:
name: docker
state: started
enabled: yes
- name: Install Docker packages
apt:
name:
Совместное использование: Типичный пайплайн: Terraform создает инстанс в AWS -> Ansible, запущенный через local-exec или отдельным пайплайном, настраивает на этом инстансе необходимое ПО. Для контейнеризованных сред Ansible часто используется для подготовки образов (в Dockerfile или Packer), а Terraform управляет оркестратором (Kubernetes), который эти образы запускает.