Какие аналоги Ansible для управления конфигурацией ты знаешь?

«Какие аналоги Ansible для управления конфигурацией ты знаешь?» — вопрос из категории Ansible, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В моей практике основными альтернативами для управления инфраструктурой как код были:

  • Terraform: Я использовал его для provisioning облачных ресурсов (AWS, GCP) перед их конфигурацией. Его декларативный HCL отлично подходит для описания целевого состояния инфраструктуры.

    resource "aws_instance" "app_server" {
      ami           = "ami-0c55b159cbfafe1f0"
      instance_type = "t2.micro"
      tags = {
        Name = "ExampleAppServerInstance"
      }
    }
  • Puppet: Работал с ним в агентной модели на крупных, стабильных стендах. Его манифесты на DSL позволяют чётко декларировать конфигурацию, а централизованный Puppet Master упрощает управление тысячами нод.

    package { 'nginx':
      ensure => 'latest',
    }
    service { 'nginx':
      ensure => running,
      enable => true,
      require => Package['nginx'],
    }
  • Chef: Применял в проектах, где инфраструктурная команда была сильна в Ruby. Рецепты Chef дают большую гибкость за счёт императивного программирования.

  • Pulumi: Экспериментировал с ним для описания инфраструктуры на Python, что позволяло использовать все возможности языка (циклы, условия, модули) вместо ограниченного DSL.

Ключевое отличие Ansible — его агентless-архитектура через SSH/WinRM, что делает его проще для старта, особенно для ад-хок задач и оркестрации.