¿Cuáles son las limitaciones de Puppet en comparación con Ansible?


16

Me gustaría entender las diferencias entre Puppet y Ansible, especialmente qué tipo de limitaciones de Puppet tiene en comparación con Ansible.

¿Hay alguna cosa que no puedas hacer en Puppet, pero sí en Ansible? En otras palabras, ¿por qué algunas personas se mudan de Puppet a Ansible?


Mantuve mi respuesta bien separada de esto, una de las razones puede ser todo el dinero que está invirtiendo en ella.
ᴳᵁᴵᴰᴼ

Respuestas:


19

Por supuesto, hay varios pros y contras para cada uno de Puppet, Ansible, Chef y agrega tu herramienta favorita aquí también. Así que intentaré alejarme de la opinión y compartir lo que es genial en Ansible de hecho.

La capacidad principal que coloca a Ansible por encima de los demás es no tener que depender de algún agente personalizado / adicional que se ejecute en los nodos de destino, sino que se basa solo en conexiones ssh. Sí, todavía requiere un servidor ssh, Python y un montón de bibliotecas de Python en los nodos, y si su distribución de elección (o, buena suerte, hay algunos nodos de Windows) no se envía con ellos, será un poco doloroso para el bootstrap. Pero eso es poco probable, y puede incluso hacerte pensar de nuevo en tu distribución.

Eso simplificará el monitoreo, no consumirá recursos adicionales, no forzará al sistema a ejecutar un demonio como root todo el tiempo, y en general se siente mejor dentro de la filosofía de UNIX. Chef tiene chef-solo, Puppet se puede ejecutar sin maestro, pero ambos trabajan "en la otra dirección", mediante la clonación y a través de ganchos, respectivamente. Mientras que con Ansible, una fusión en el repositorio de origen puede desencadenar la implementación de una manera con la que todos nos sentimos cómodos, ya sea en Jenkins, en el maestro git o en alguna otra herramienta como Rundeck, por ejemplo.


Vale la pena señalar que si ha estropeado su configuración ssh con ansible, está bloqueado fuera de su máquina, ese es el inconveniente del modelo push. Puppet o chef pueden trabajar en un trabajo crontab para que no afecten más al sistema que el código de Python ansible en absoluto
Tensibai

1
Una nota sobre los agentes: un equipo de seguridad que había rechazado Chef y Puppet, incluso en configuración sin master, me aprobó a bordo de Ansible en un HSE (entorno de alta seguridad). Sin agente es un factor ganador en algunos casos.
Woodland Hunter

2
Si interrumpe su configuración SSH, tiene problemas más allá de Ansible en cualquier caso. Es una buena práctica de DevOps probar cosas como los cambios de SSH en varios entornos antes de que lleguen a producción, y también es posible validar que la configuración de SSH sea correcta como parte de su escritura: el templatemódulo Ansible lo hace bastante fácil.
RichVel

Escuché que la gente argumentó que la arquitectura sin agente de Ansible lo hace más adecuado para administrar, por ejemplo, enrutadores, donde no se puede instalar un agente Puppet, por ejemplo. ¿Pero tales dispositivos vienen con intérpretes de Python? Quizás no, ¿entonces Python es realmente un requisito fuerte en cada componente administrado por Ansible?
Drux

9

No, las personas que se alejan de Puppet to Ansible (o viceversa) no tienen nada que ver con lo que se puede o no se puede lograr con ninguna de las herramientas. Marioneta / Chef / Ansible: es principalmente una cuestión de gustos.

Por ejemplo, Ansible se basa en Python, y los desarrolladores de Python generalmente se sienten más a gusto con él (no es necesario aprender un DSL) o Ruby (para Chef). Es más fácil para los desarrolladores de Python extender Ansible también.

Pero, en esencia, todos son muy similares en términos de lo que puedes lograr. Algunos tienen fortalezas relativas en algunas áreas y debilidades en otras, pero típicamente la elección entre ellos se realiza por estilo / cultura / preferencia del equipo.


7

Hasta Puppet 4.0 no había una manera fácil de organizar la aplicación distribuida en múltiples servidores o servicios, ya que era difícil ordenar acciones específicamente en Puppet, que era una opción de diseño . Ansible fue mejor orquestando y ordenando los pasos, especialmente en varios servidores. Esto fue especialmente significativo en aplicaciones donde el orden incorrecto de los pasos podría conducir a errores irrecuperables mediante la repetición de esos pasos hasta que se pudiera alcanzar una consistencia eventual.

Eso ya no es un problema y, por lo tanto, las distinciones se basan principalmente en las preferencias.


2
La elección del diseño de la marioneta fue una de las razones por las que Chef comenzó, y la principal que me mudé a Chef para nuestra infraestructura y sistema de CD hace unos años.
Tensibai

2
Puppet orchestration es una característica de Puppet Enterprise (comercial) solamente, mientras que la orquestación en Ansible está en la versión de código abierto. En general, Ansible es mucho más fácil de instalar y aprender que Puppet: después de hacer una evaluación de ambos, ahora uso Ansible. También hay otras diferencias, por lo que no es solo una cuestión de preferencia personal.
RichVel

1
Estoy usando Ansible tanto en mi trabajo anterior como actual, pero tiene sus propios problemas. Cuanto más uso Ansible, más me interesa aprender otra alternativa. Prefiero esta alternativa a no usar Python para el desarrollo de módulos y tener una comunidad activa de código abierto. Las solicitudes de extracción de Ansible tardan casi un año en revisarse. A este ritmo, podría ser también propietario.
Jiri Klouda

1
Muchas personas se quejan del agente de marionetas, pero cuando está en la nube y su grupo de autoescalado y no desea reconstruir la imagen de su máquina virtual, es bueno que vm se conecte con el maestro de marionetas, no veo ningún problema para Tener un pequeño agente.
c4f4t0r
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.