TToolBox
💻
💻 dev
10 апреля 2026 г.7 мин чтения

Как автоматизировать развёртывание с DevOps, Terraform и Ansible

Как автоматизировать развёртывание с 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 — работает онлайн, без регистрации.
Поделиться:

Теги

#azure-devops#terraform#ansible#ci-cd#deployment