it-swarm-es.com

Automatización de la implementación del servidor

Encuentro que constantemente estoy configurando servidores y VPS casi idénticos para varios de mis clientes y puede llevar mucho tiempo. A menudo, lo único que cambia entre cada implementación es el sitio web diferente que se va a servir. ¿Existe una manera fácil de automatizar todo esto y tomar la aburrida monotonía de configurar 56 servidores idénticos?

Los servidores que he implementado hasta ahora solo han sido Ubuntu, pero es posible que comience a usar otros sistemas operativos Linux o incluso Windows. Hasta ahora he analizado Capistrano, pero parece estar centrado en escribir pequeños programas Ruby para hacer el trabajo, y no tengo ningún conocimiento

27
Josh Hunt

Puppet suena perfecto para lo que estás intentando hacer, con la salvedad de que, a partir de este momento, no hay soporte para Windows.

En su caso, definiría un nodo de servidor en términos de todos los paquetes que son idénticos en las máquinas. Luego, define los hosts individuales como nodos que heredan del servidor y configura las cosas únicas específicas para él.

Puppet es declarativo: le permite describir sus cajas en términos de los recursos que debe tener cada caja. Entonces, si quiere ssh - escribe una clase para ese recurso - y dentro de la clase puede incluir lógica sobre cómo ssh se llama ligeramente diferente en FreeBSD vs Ubuntu. También sabe usar yum dentro de Redhat y apt-get dentro de las distribuciones basadas en Debian, y ports en los BSD. Ahora, en su nodo Servidor, solo tendrá una línea como include ssh - y puppet hará lo correcto y pondrá SSH en la máquina sin que tenga que recordar si es Ubuntu o Redhat o FreeBSD.

Lo bueno es que todas las cosas del servidor viven en un solo lugar, y si en algún momento agrega a la definición del nodo del servidor, TODAS las máquinas actualizarían su configuración en consecuencia.

En este momento, solo estoy administrando tres cajas con Puppet, pero ya ha valido la pena. Después de pasar una semana configurando una caja que usaremos para la presentación de estímulos en un experimento, resultó que el controlador de la tarjeta gráfica era demasiado antiguo en la versión de Ubuntu que le puse (8.04). Tuve que instalar el último Ubuntu (9.04), pero después de eso solo tuve que apt-get and run puppet, y todo lo que había pasado una semana configurando fue restaurado.

El títere tiene una pequeña curva de aprendizaje, pero he evitado con éxito el aprendizaje Ruby - Sé que lo estoy usando, ya que eso es en lo que está escrito el títere, pero hasta ahora yo ' Hemos tenido éxito en modificar el ejemplos en la documentación y las recetas en la wiki . Otra desventaja es que el títere tarda un poco más en hacer las cosas la primera vez. La ventaja es que todo lo que cambias todas sus máquinas están almacenadas en un solo lugar; es una práctica estándar mantener la configuración de su títere en un sistema de control de versiones, para que siempre pueda mirar hacia atrás y ver cómo ha configurado los servidores en el pasado, o revertir algunos cambios fallidos .

Finalmente, aquí hay un video rápido que hace una demostración de títeres simple que me ayudó a comenzar rápidamente.

19
Paul Ivanov

We usamos Cobbler y Puppet para la automatización de la construcción y configuración de máquinas reales y virtuales.

Cobbler une DHCP, PXE boot y Kickstart para que la implementación no sea más que agregar un perfil de máquina y presionar el botón de encendido. Para las VM, el comando koan hace (en nuestro caso) la magia de Xen para iniciar la instalación, en el dom0 Solo escribo:

koan --system vps.fqdn --server cobbler --no-gfx

luego virsh console para ver un edificio VPS sin ninguna interacción.

Usamos RHEL y tenemos un montón de perfiles configurados para particionar discos, configurar redes e instalar paquetes base para diferentes clases de servidores. Cobbler es compatible con las razas Debian y Ubuntu, pero nunca lo he probado. Un aparte: otros usos interesantes para Cobbler incluyen ejecutar memtest ISOs y firmware HP actualizaciones.

Una vez que nuestros sistemas están construidos con Cobbler Puppet se encarga de configurar las aplicaciones, los demonios del sistema, registrar la caja con RHN, etc. Puppet se ejecuta como un demonio que comprueba periódicamente que la configuración del sistema coincide con los manifiestos definidos; usted sabe que sus actualizaciones se han ido a todos los servidores. También es una excelente manera de asegurarse de que una caja que ha estado fuera de servicio por mantenimiento tenga la configuración correcta antes de devolverla al servicio en vivo.

Puppet es realmente increíble. No es necesario que controle todos los aspectos de su configuración: comience por hacer que administre algo simple que debe configurar en cada caja (sudoers es el ejemplo canónico) y continúe desde allí . Asegúrese de que sus manifiestos de Puppet también estén versionados; nada es mejor que poder volver fácilmente a una configuración buena conocida sin tener que recordar qué ajustar.

8
markdrayton

Donde estoy trabajando en este momento, tenemos que administrar la parte de Linux de nuestra granja de servidores, que tiene poco más de 300 servidores Linux. Esto incluye principalmente HP Proliants, seguidos de IBM 3850, algunos blades IBM, VMware ESX y algunos KVM para nuestros servidores de administración internos.

zapatero

Miramos a Zapatero, pero el problema era que Zapatero es muy específico de RHEL/Red Hat. Necesitamos admitir RHEL y SLES como mínimo, y Ubuntu es el siguiente.

marioneta

Consideramos títeres, pero luego decidimos no hacerlo ya que depende de Ruby, lo que significa que una actualización de Ruby podría romper nuestro sistema de gestión.

alambre caliente

Hotwire es lo que usamos (desarrollado internamente, pero es de código abierto) y lo hemos hecho durante los últimos años. En primer lugar, realiza un inventario de los sistemas que se van a construir, lo que significa hacer un inventario del centro de datos, el bastidor, el hardware, el sistema operativo, la red, etc. y, en segundo lugar, realizar la construcción e implementación rápidas. Una vez que el sistema está construido, el inventario automático de Hotwire mantiene el inventario sincronizado, mientras que cfengine los mantiene. Hotwire conoce el hardware del servidor hablando con los datos SMBIOS/DMI en el Bios a través de python-dmidecode .

Los puntos de bonificación son que combina el inventario y el proceso de construcción en uno, por lo que hay menos que administrar, y la función de inventario en vivo es excelente, ya que sabemos si algo no está del todo bien.

Las desventajas son que la interfaz de usuario aún necesita pulirse y hay errores aquí y allá, pero el desarrollo aún está caliente y los errores informados se corrigen relativamente rápido.

cfengine

Usamos cfengine porque aparte de eso, y títere, no hay nada más. En realidad es una buena herramienta, pero "buena" solo en función de qué tan buenas son sus políticas - si establece políticas peligrosas, entonces un pequeño error puede causar mucho daño. Por ejemplo, por política, no "modificamos" archivos, los reemplazamos o no. Además, todos los archivos reemplazados tienen un encabezado que hace que cualquier persona que los edite sepa que se reemplazará la próxima vez que se ejecute (se ejecuta a través de cron cada hora).

La configuración y todos los archivos enviados por cfengine a los servidores también se guardan en un SCM, y usando ganchos posteriores a la confirmación, cuando es posible, verificamos la sintaxis y, si falla, la confirmación se rechaza. Esto es fácil para aplicaciones Nice como Apache, pero no tan fácil para la mayoría de aplicaciones empresariales.

6
Xerxes

He tenido éxito con Puppet . Chef es uno nuevo que surgirá. Para obtener una lista más larga de opciones y un cuadro de comparación, consulte el artículo de Wikipedia, Comparación de software de administración de configuración de código abierto.

4
Pete TerMaat

Para automatizar la instalación según el sistema de destino:

  • Debian/Ubuntu: preconfiguración FAI o d-i
  • RedHat/Fedora: Kickstart
  • Novell/openSuSE: AutoYaST
  • Solaris: Jumpstart
  • Windows: unattended.sourceforge.net

Para la gestión de la configuración, además de eso, sugiero usar puppet.

3
Michael Prokop

Otro voto para Puppet aquí. Lo usamos ampliamente para realizar toda la instalación y administración de la configuración del servidor y de las aplicaciones. Más de 200 nodos y contando. El soporte de Windows aparentemente está en desarrollo, aunque no estoy seguro en qué estado.

Todavía estamos investigando el sistema operativo inicial bootstrap lado de las cosas, pero como se mencionó anteriormente, Cobbler parece interesante. Actualmente estamos usando una combinación de arranque PXE con preconfiguración de Debian/Ubuntu, pero apenas óptimo.

2
Mike Pountney

Estoy teniendo mucho éxito con Puppet , pero tienes que escribir mucha configuración.

2
Dave Cheney