2012-08-16 40 views
75

Estamos planeando utilizar instancias de AMI EC2 que no están "precocidas". Es decir. cuando se hilan, son instalaciones simples de AWS Linux. Nuestro proceso de arranque atraerá las diversas instalaciones que necesitamos, p. python, tomcat. Tendremos un mínimo de 3 instancias y un máximo de 8.¿Por qué las personas usan Puppet/Chef con Amazon Cloud Formation en lugar de usar CloudInit?

Teniendo en cuenta estos requisitos, ¿sería útil utilizar Puppet/Chef en lugar de usar Amazon Cloud Formation (CloudInit)?

Lo mejor que puedo ver es que si usáramos Puppet, entonces tendríamos una programación declarativa que es más fácil de auditar para ver qué está sucediendo frente a un script. También CloudInit tiene un límite de tamaño de script de 16k con el que podemos o no encontrarnos.

¿Alguien se mudó de CloudInit a Puppet o Chef por alguna razón específica que pueden brindar aquí en respuesta a mi pregunta?

+1

Algunas personas (como yo) usan scripts simples de datos de usuario (compatibles con cloud-init) con CloudFormation. Los scripts más largos pueden descargarse desde S3 y ejecutarse mediante el script de datos de usuario inicial. –

+0

cloud-init es independiente, y varios proveedores de la nube lo usan. Se puede ejecutar en AWS, google cloud platform y microsoft Azure. (https://cloud-init.io/) Considerando que AWS :: CloudFormation :: Init no es agnóstico. Es específico de Amazon. –

Respuesta

73

¿Existe una ventaja sobre CloudInit? Sí, absolutamente, muchos de ellos!

Claro, puede escribir de arriba a abajo ejecutar una vez los scripts CloudInit para aprovisionar un servidor. Pero, ¿qué sucede cuando necesita cambiar un archivo de configuración, agregar un usuario, actualizar un paquete o instalar un nuevo paquete? Terminará ingresando en servidores o escribiendo scripts para hacerlo, e inevitablemente un estado incongruente de servidores.

CloudInit no es gestión de configuración. Si opta por comenzar a usar el software de gestión de configuración, use cloud init para una sola tarea: reiniciar Puppet/Chef/otro agente.

Puppet no solo lo ayuda a automatizar la instalación de paquetes, la configuración de claves ssh o la sintonización de su pila Tomcat. Asegura el estado de las cosas. Cuando un desarrollador esté solucionando una aplicación Java a las 3am y cambie su configuración de Tomcat, Puppet la cambiará de nuevo. Puede cambiar rápidamente la versión de Python para todos o grupos de nodos, y si alguien instala una versión diferente, Puppet la cambiará de nuevo.

Cuando su pila de aplicaciones cambia y comienza a utilizar, digamos RabbitMQ, o Jetty, o un nuevo RDBMS, puede probar e implementar fácilmente los cambios en decenas o miles de servidores.

Existen muchas otras razones para usar el software de gestión de configuración, como informes de back-end, auditoría y cumplimiento de seguridad.

+14

Depende. Para servicios de larga ejecución (generalmente AD, DBs), puede ser necesaria la administración de configuraciones. Pero para otros servidores replacables, en realidad no; servidores web gestionados bajo ASG, nodos de clúster en hadoop o elasticsearch. Si tuviera que cambiar la configuración, simplemente descartaría el servidor y arrancaría uno nuevo. –

59

Todo el objetivo de la administración de la configuración es hacer girar las máquinas de forma predecible y consistente. CloudFormation y cloudinit son geniales cuando está limitado exclusivamente a AWS (aunque la depuración de las plantillas de CloudFormation es miserable experience), pero ¿qué ocurre con las aplicaciones que utilizan recursos de centros de datos y AWS, o entornos de pruebas locales, o máquinas de desarrollo?

Si existes puramente en AWS, supongo que podrías salirte con Cloudinit y nada más, pero no estoy seguro de que sea realista para aplicaciones de cualquier escala (Netflix, por ejemplo, prepara sus AMI utilizando tecnologías OSS). han escrito y lanzado al mundo, considere this video para más detalles). Las aplicaciones de alta disponibilidad son transregionales, a menudo se basan en VPC, tienden a realizar copias de seguridad en centros de datos a través de VPN, y esto ni siquiera afecta a los entornos de demostración, puesta en escena, prueba o desarrollo. Como alguien que ha cargado con máquinas de aprovisionamiento, las últimas cosas que quiero hacer son repetir el trabajo o quedar atrapado depurando múltiples métodos de aprovisionamiento.

De ahí Chef o Marioneta. Funcionan tan bien para AWS como lo hacen para mi centro de datos, y tan bien para mi máquina de desarrollo que ejecuta Vagrant como lo hacen para los entornos de demostración que de vez en cuando necesito sobre la marcha.Prefiero lanzar Chef o Puppet desde cloudinit que mantener tanto cloudinit como Chef o Puppet.

+1

@ U0001: solucionado el enlace de video – Christopher

5

Para servidores desechables, digamos corriendo detrás de un grupo de autoescala, diría que cloudinit es probablemente suficiente. Las secuencias de comandos de shell de Linux o las secuencias de comandos de PowerShell de Windows deberían funcionar.

Si se trata de un servidor de larga ejecución que planea administrar, tal vez chef, marioneta o acoplador podría darle una ventaja como se menciona en la respuesta aceptada. Si no puede ver la ventaja después de usarlos, entonces probablemente no necesite la herramienta.

+0

Estoy totalmente de acuerdo. Puppet y Chef son complejos y si puede reemplazar un servidor simplemente eliminando y mostrando uno nuevo, entonces realmente desaconsejaría usarlos. Hay ciertos escenarios de títeres/chef que son geniales, pero es necesario tener en cuenta la complejidad adicional de usarlos en cada situación. – bobmarksie

0

En mi experiencia, hay cosas sencillas que se realizan fácilmente con las herramientas de GUI listas para usar que proporciona AWS, pero a medida que se adentra en cosas más complejas, comienza a descubrir que hay limitaciones para lo que puede hacer solo con sus herramientas.

En ese punto, puede detenerse, o puede encontrar otras herramientas (como Chef o Títere) que pueden ayudarlo a lograr esos objetivos más complejos, así como a hacer las cosas más simples.

Su elección.

Cuestiones relacionadas