Как автоматизировать развёртывание с DevOps, Terraform и Ansible
Полное развёртывание приложения можно автоматизировать за 30‑45 минут, используя Azure DevOps, Terraform и Ansible – всё в едином пайплайне.
Автоматизировать полное развёртывание приложения за 30‑45 минут реально, если связать Azure DevOps, Terraform и Ansible в едином CI/CD‑конвейере. При этом вы получаете повторяемый процесс, масштабируемый на любые среды, и экономите до 70% ручного труда.
Как настроить репозиторий в Azure DevOps для инфраструктурного кода?
Сначала создайте Git‑репозиторий в Azure DevOps и разместите в нём файлы Terraform и Ansible. Это обеспечит версионирование и возможность отката.
- 1. Перейдите в проект Azure DevOps → Repos → New repository.
- 2. Выберите тип «Git», задайте имя, например
infra‑code. - 3. Клонируйте репозиторий локально:
git clone https://dev.azure.com/yourorg/yourproject/_git/infra-code. - 4. Добавьте директории
terraform/иansible/, разместите в них манифесты. - 5. Закоммитьте и запушьте изменения:
git add . && git commit -m "Initial infra code" && git push.
Почему Terraform подходит для провижининга облачной инфраструктуры в 2026 году?
Terraform остаётся лидером в управлении облачной инфраструктурой благодаря декларативному подходу и поддержке более 150 провайдеров, включая Azure, AWS и GCP.
В 2026 году Microsoft выпустила Terraform Provider v3.12, который ускорил планирование ресурсов на 30% и добавил новые типы ресурсов, такие как Azure Container Apps.
- Поддержка Azure Resource Manager (ARM) шаблонов.
- Встроенный механизм state locking через Azure Storage, что исключает конфликты.
- Автоматическое импортирование существующих ресурсов через
terraform import.
Что делает Ansible в процессе деплоя и почему он лучше скриптов?
Ansible отвечает за конфигурацию серверов и развертывание приложений, используя идемпотентные playbook, которые гарантируют одинаковый результат при каждом запуске.
В отличие от Bash‑скриптов, Ansible предоставляет:
- Читаемый YAML‑синтаксис.
- Модульную структуру (roles, tasks, handlers).
- Поддержку inventory из Azure VM Scale Sets.
- Встроенный механизм rollback через tags.
Как построить CI/CD‑конвейер в Azure DevOps, объединяющий Terraform и Ansible?
Создайте пайплайн, который последовательно выполнит terraform init, terraform apply и затем запустит Ansible‑playbook для конфигурации.
- 1. В Azure DevOps откройте Pipelines → New pipeline.
- 2. Выберите «YAML» и укажите путь к файлу
.azure-pipelines.ymlв корне репозитория. - 3. Пример YAML:
trigger: - main stages: - stage: Terraform jobs: - job: InitApply pool: vmImage: 'ubuntu-latest' steps: - script: | terraform init -backend-config="storage_account_name=devopsstate" terraform plan -out=tfplan terraform apply -auto-approve tfplan displayName: 'Run Terraform' - stage: Ansible dependsOn: Terraform jobs: - job: Deploy pool: vmImage: 'ubuntu-latest' steps: - script: | ansible-playbook -i inventory/azure.ini playbooks/deploy.yml --extra-vars "env=prod" displayName: 'Run Ansible' - 4. Добавьте переменные среды (Azure Service Connection, SSH‑ключи) в раздел Library → Variable groups.
- 5. Включите approvals перед продакшн‑деплоем, чтобы контролировать изменения.
Что делать, если Terraform не может создать ресурс из‑за ограничения квоты в Azure?
Если планирование падает с ошибкой «Quota exceeded», сначала проверьте текущие лимиты в Azure Portal, а затем запросите увеличение.
- 1. Откройте Azure Portal → Subscription → Usage + quotas.
- 2. Найдите нужный ресурс (например, «Standard_D2s_v3»).
- 3. Нажмите «Request increase», укажите причину (например, «Развёртывание CI/CD в 2026‑м году»).
- 4. После одобрения повторите
terraform apply. - 5. Чтобы избежать повторных задержек, добавьте в Terraform‑манифест
lifecycle { create_before_destroy = true }и используйтеprevent_destroyдля критичных ресурсов.
Воспользуйтесь бесплатным инструментом Terraform Plan Viewer на toolbox-online.ru — работает онлайн, без регистрации.
Теги