Ответ
Ansible и Puppet — инструменты для управления конфигурациями, но с разными подходами:
-
Архитектура
- Puppet использует клиент-серверную модель (агенты на нодах).
- Ansible — агент-фри, работает через SSH.
-
Язык конфигурации
- Puppet: декларативный DSL (напоминает Ruby).
- Ansible: YAML + Jinja2 (проще для чтения).
-
Идемпотентность
Оба поддерживают, но в Ansible она встроена в модули, а в Puppet — в язык. -
Оркестрация
Ansible удобнее для ad-hoc задач (черезansible ad-hoc), Puppet — для строгого контроля состояния.
Пример Ansible (playbook.yml):
- hosts: webservers
tasks:
- name: Install nginx
apt:
name: nginx
state: present
Пример Puppet (manifest.pp):
package { 'nginx':
ensure => installed,
}
Когда что выбрать:
- Ansible — для простоты и быстрого старта.
- Puppet — для сложных инфраструктур с жестким compliance.