chef - pricing - cloudformation getting started
¿Por qué las personas usan Puppet/Chef con Amazon Cloud Formation en lugar de usar CloudInit? (4)
¿Hay una ventaja sobre CloudInit? Sí, absolutamente, muchos de ellos!
Claro, puede escribir de arriba a abajo 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 optimizació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 usar, digamos RabbitMQ, 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 software de administración de configuración, como informes de respaldo, auditoría y cumplimiento de seguridad.
Estamos planeando utilizar instancias de AMI EC2 que no estén "precocidas". Es decir, cuando se activan, son instalaciones simples de AWS Linux. Nuestro proceso de arranque atraerá las diversas instalaciones que necesitamos, por ejemplo, python, tomcat. Tendremos un mínimo de 3 instancias y un máximo de 8.
Dados 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é sucede 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 una razón específica que pueden brindar aquí en respuesta a mi pregunta?
El objetivo de la gestió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 plantillas de CloudFormation es una experiencia miserable ), pero ¿qué ocurre con las aplicaciones que utilizan recursos de centros de datos y AWS, o entornos de prueba 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 que han escrito y lanzado al mundo, considere este 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, lo último que quiero hacer es repetir el trabajo o quedarme atascado al depurar varios 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.
En mi experiencia, hay cosas sencillas que se realizan fácilmente con las herramientas de GUI listas para usar que AWS proporciona, pero a medida que se adentra en cosas más complejas, comienza a descubrir que existen limitaciones con respecto a lo que puede hacer con solo 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.
Tu elección.
Para los servidores desechables, digamos corriendo detrás de un grupo de escalado automático, 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.