Cloud и provisioning
Тема дорожной карты · Ansible
Подготовка облачной инфраструктуры с помощью Ansible означает использование облачных модулей Ansible для создания и настройки ресурсов инфраструктуры — виртуальных машин, сетей, групп безопасности, хранилищ и DNS-записей — в рамках того же рабочего процесса playbook, который настраивает работающее на них программное обеспечение. В отличие от Terraform, управляющего состоянием извне, подготовка облачной инфраструктуры с помощью Ansible опирается на идемпотентность модулей: повторный запуск amazon.aws.ec2_instance с state: running создаст инстанс только в том случае, если он ещё не существует, что делает playbook безопасными для многократного применения. Типичный паттерн — подготовить инфраструктуру в первом play, зарегистрировать полученные IP-адреса в динамической in-memory группе inventory с помощью add_host, а затем настроить эти хосты во втором play — всё в рамках одного вызова ansible-playbook. Подготовка облачной инфраструктуры с помощью Ansible поддерживается для всех основных провайдеров через выделенные collection: amazon.aws, azure.azcollection, google.cloud и community collection для Yandex Cloud и OpenStack.
Как это работает
Cloud и provisioning использует cloud-специфичные модули для создания cloud-ресурсов (VM, сети, S3-бакеты, DNS). Модули для AWS (amazon.aws), Yandex Cloud (yandex.cloud), Azure (azure.azcollection), GCP (google.cloud), Kubernetes (kubernetes.core). Ansible может быть и IaC, и инструментом конфигурации ("provision и configure"). Сообщество обычно предпочитает Terraform для provisioning + Ansible для конфигурации — разделение ответственности.
Когда применять
Ansible для provisioning — только на маленьких + динамичных нагрузках, где Terraform тяжёл. В большинстве случаев Terraform создаёт VM + выводит inventory, потом Ansible конфигурирует (типичный pipeline). add_host — для добавления свежесозданных хостов в inventory посреди play. Dynamic inventory-плагины — вместо ручных списков для облака.
Типичные ошибки
Ловушки Cloud и provisioning: Ansible для provisioning без эквивалента state-файла (не видно, что существует — Terraform трекает); resource-drift между запусками (Ansible сводит, но не enforce "удалить то, чего быть не должно"); дыры в идемпотентности некоторых cloud-модулей (двойной запуск создаёт два ресурса из-за неверного lookup key).