Aviso: hay muchas preguntas teóricas.
Recientemente estoy leyendo sobre Puppet (y sistemas similares) que, como creo, pueden hacer que mi trabajo sea mucho más fácil. Pero intento, y desafortunadamente no puedo, entender lo que puedo "marionetar". Puedo imaginar "nubes" o clústeres HA, donde está la misma configuración en más servidores. ¿Pero qué pasa con las estaciones de trabajo? Tengo una PC (centos con kvm), una notebook (fedora) y un servidor personal, ¿pueden (o deberían) ser títeres? ¿Cuáles son las (des) ventajas? O en nuestra empresa tenemos cientos de servidores (principalmente con centos), pero cada uno de ellos es un poco diferente. No puedo decidir si es mejor tener muchas configuraciones en un solo lugar. (Des) ventajas? Estaré feliz por todas sus opiniones o enlaces con este tema.
Respuestas:
El grado en el que puede representar a títeres un entorno completo depende de varias variables:
Definitivamente es posible títere cada cosa que se puede títere, pero llegar allí requiere la cultura y el compromiso correctos de todos los que pueden tocar un dispositivo compatible con títeres. Algunos dispositivos son fundamentalmente difíciles de administrar de esa manera, como estaciones de trabajo, y Puppet es mejor como herramienta de preparación que como motor de administración de configuración.
Puppet es increíble cuando administras una flota de máquinas virtuales que hacen todo lo mismo. Victoria total, y no mucho esfuerzo para llegar allí.
En el otro extremo del espectro, tienes lo que tenía en mi último trabajo, que era más de 200 servidores que proporcionaban 130 servicios y solo un pequeño grupo de ellos lo hacía con más de una máquina. Hay absolutamente compañías (y universidades) que han hecho un títere de ese tipo de cosas, pero es un gran esfuerzo y requiere mucha aceptación. Requiere que el primer paso del proceso de implementación de su nueva máquina no sea "Instalar SO", sino "crear manifiestos".
En última instancia, es un problema cultural de esfuerzo versus eficiencia que tendrá que resolver entre todo su personal de TI.
fuente
Cualquier cosa que sea razonablemente similar en todos los sistemas (o un subconjunto de ellos), o que pueda basar una plantilla a partir de un hecho del que pueda salir
facter
es un juego justo.Cosas que son realmente únicas que probablemente no deberían molestarse, y solo deberían servir las configuraciones de un archivo.
Lo que se incluye en cualquiera de las categorías es una decisión que no podemos tomar sin conocer su entorno íntimamente, por lo que debe decidirlo.
fuente
Creo que otros han cubierto el por qué, así que voy a ver cómo. Creo que al comprender cómo alguien puede usar Puppet para hacer lo que usted quiere, tomará una decisión más clara.
Haz el caso básico primero
Su módulo Puppet para Apache no debería hacer mucho por defecto. Instale Apache, configúrelo con un estándar mínimo e inicie el servicio. Haga que esto funcione en todas las distribuciones que necesite admitir.
Agregue flexibilidad en segundo lugar
Necesitamos agregar vhosts. Terminará con un sistema que puede soltar archivos o eliminarlos de un conjunto de directorios conf.d o vhosts.d / según lo que necesite. Lo mismo con habilitar o configurar módulos.
Use clases de roles o grupos de host para unir sus bloques de construcción
Creo que la mejor manera de usar Puppet es asegurarse de que sea aditivo. Usando los ejemplos anteriores, deberíamos tener un módulo que
En lugar de sobrecargar nuestro módulo Apache predeterminado para hacer exactamente lo que necesitamos para un host o grupo en particular, debemos manejar esto es una clase de rol o grupo de host.
De nuevo aditivo.
Poner casos especiales en Hiera
Soy un gran admirador de dejar que Puppet's Hiera, piense en ello como una base de datos para Puppet, almacene los bits especiales. Si un determinado host o grupo de hosts necesita una configuración especial, primero ponga un valor predeterminado sensato en el módulo para que los usuarios normales no necesiten saberlo. Luego inserte datos para esos hosts especiales o grupos de hosts para que Hiera pueda consumirlos y pasarlos a Puppet según sea necesario.
Mi caso de uso es el puerto de escucha. Algunos servidores tienen un barniz o haproxy frente a ellos. Por defecto, el módulo Puppet tiene el puerto Apache 80, pero si Hiera encuentra datos, anulará ese valor predeterminado.
fuente
Actualmente estoy en la transición entre Puppetize y sistemas razonablemente similares a Puppetize Everything y estoy convencido de que a largo plazo, Puppetize Everything es un mejor enfoque.
Si controla la versión de sus manifiestos de Puppet (todos hacemos esto, correcto) obtendrá todos los beneficios del control de versión para su infraestructura. Su equipo se convierte en ingenieros de operaciones. Esto es tan importante para sistemas especiales únicos como las granjas de ganado homogéneas. Obtiene un registro de quién cambió algo, cuándo lo cambiaron, cuál fue el cambio exacto y la capacidad de revertir el cambio.
Personalmente, también encuentro que obligarme a hacer cada cambio a través de Puppet me hace pensar más cuidadosamente sobre el cambio. Mientras escribo manifiestos, estoy más atento a cada cambio de lo que normalmente estoy cortando la línea de comando.
Sus módulos de Puppet también serán mejores. ¿Tiene más de un módulo Nginx? Tal vez eso significa que su módulo Nginx no es tan bueno, y necesita hacerlo lo suficientemente flexible para manejar todas sus necesidades especiales. Al menos abstraiga las similitudes en un módulo central de Nginx que extienda para módulos "personalizados".
Además, ¿qué tan seguro está de que puede restaurar todos sus servidores con necesidades especiales a su estado actual (con respecto a la configuración) cuando ocurra el desastre? Si cada cambio necesario para obtener un servidor Ubuntu de fábrica en su wiki interno es Puppetized, puede reconstruir fácilmente el estado actual de su wiki, incluido el ajuste de memoria de Tomcat de ayer por Bob incluido.
Finalmente, esto puede ser realmente difícil. La administración de muchos servidores muy diferentes puede generar código hacktastic Puppet si no se toma el tiempo para hacer las cosas bien. Si no está utilizando Puppet Enterprise, considere hiera y / o una ENC como Foreman para ayudar a separar sus datos de sus manifiestos. Cada día marionetas algo más. Haga que un compañero de trabajo conduzca mientras explica cómo funciona esto en Puppet. Cada cambio será más fácil.
fuente