¿Marionetas todo o no?


10

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.


Aconsejaría que no intente "Puppetize" ninguno de sus sistemas Windows. Ah, y leyendo nuestras preguntas frecuentes sobre qué tipo de preguntas debe hacer aquí.
HopelessN00b

77
La cantidad de cosas que títeres, y la cantidad de cosas de títeres que deben tener debe ser directamente proporcional a la cantidad que le importa la tarea que se realiza por usted. Comience con poco, simplemente marioneta la configuración ntp o rsyslog. Luego construya desde allí si lo necesita y cuando lo necesite.
Sirex

1
Como ya tiene muchos servidores en mi lugar, mi sugerencia es que comience de forma simple con los bits que son comunes en cada sistema, luego comience a entrar en cosas detalladas más específicas a medida que tenga tiempo.
Zoredache

1
El soporte de Windows ha mejorado dramáticamente en versiones recientes de Puppet. Administro cientos de nodos de Windows con Puppet. Puppet en los nodos POSIX es mucho más directo y poderoso, pero usar Puppet para al menos algunas cosas en Windows puede ser increíblemente útil.
czervik

Respuestas:


16

El grado en el que puede representar a títeres un entorno completo depende de varias variables:

  • La disposición del personal de automatización a escribir automatización para todos. pequeño. cosa.
  • El condicionamiento cultural que permite "Cambiaré esta única cosa, de todos modos es único" para convertirse en "Cambiaré esta única cosa en este manifiesto títere, y lo aplicaré ahora; es solo una sola vez ".
  • El grado de heterogeneidad en un entorno.

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.


13

PUPPET TODAS LAS COSAS

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 facteres 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.


6

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

  1. Instalar Apache
  2. Establecer configuraciones básicas
  3. Añadir vhosts a apache
  4. Configure cualquier configuración adicional
  5. Inicie Apache

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.

class role::web_cust1 {
  include apache
  apache::vhost {'www.domain.com': }
  apache::vhost {'www.domain2.com': priority => '99', }
  include php
  include php-fpm
  include mysql
}

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.


He estado usando la jerarquía de módulos de funciones y funciona bien. Facilita la creación de un entorno en el que puede tener muchos servidores que desempeñan muchos roles (es decir, algunos de los servidores web role :: pueden ser role :: storage también).
Andy Shinn

5

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.

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.