Pregunta Propagación de cambios a múltiples servidores Linux con un comando


Entonces, tengo una docena de servidores CentOS Linux. En general, su configuración es casi la misma.

A veces necesito agregar un trabajo cron extra (archivo crontab por separado en /etc/cron.d/), y / o copiar sobre un nuevo script BASH / Perl a más de 10 servidores, o ejecutar la expresión sed para hacer cambios menores en un script que esencialmente está en cada uno de los más de 10 servidores.

Me he cansado muchísimo de hacerlo de una vez por cada anfitrión. Entonces, ¿cómo lidian con este desafío? ¿Algún truco en tus mangas? ¿Algún software que deba conocer (gratuito y probado para funcionar de manera confiable)?

Estoy buscando una manera de hacer esto a través de SSH, pero también tengo curiosidad acerca de otros enfoques.


3


origen




Respuestas:


Estás abriendo una enorme lata de gusanos aquí. :) Existe una gran cantidad de enfoques y soluciones para este problema (muy común). Puede ser algo tan básico como paralelo-ssh. Pero lo que realmente está buscando (pero aún no lo sabe) es un gestión de configuración sistema. Los 2 productos / proyectos competitivos cada vez más populares son: Marioneta y Cocinero. También hay muchos otros productos que finalmente le permiten realizar la misma tarea. Recientemente descubrí sobre Ansible y parece realmente prometedor Si se implementa correctamente, todas estas soluciones le permitirán administrar mucho mejor muchos sistemas más. Wikipedia tiene un artículo con una lista de dichos productos http://en.wikipedia.org/wiki/Comparison_of_open_source_configuration_management_software


10



Yo agregaría que Ansible es una alternativa increíble - ILIV


Necesita administración de configuración, como marioneta o cocinero. Hay una curva de aprendizaje bastante antigua (acostumbrarse al estilo idempotente imperativo lleva un poco de tiempo), pero una vez que hayas superado la barrera inicial, es maravilloso administrar muchos servidores configurados de forma similar y mantener su configuración actualizada.

También podrías mirar escribir guiones usando tela - un framework python que puede ejecutar comandos a través de ssh, así como también copiar archivos hacia y desde servidores. Y la variable de host puede tener una lista de hosts, haciéndolo más fácil. Bien vale la pena investigar.

Luego está sal - un motor de ejecución remota que se escala muy bien.

Pero elegiría las herramientas de administración de configuración y correría con ella.


1





Lo que yo haría sería crear una lista de servidores en los que los comandos deben ejecutarse. Configure los certificados ssh entre la máquina que ejecuta los comandos y los servidores en los que se ejecutan los comandos. A continuación, agregue los comandos que necesita para ejecutar en la secuencia de comandos y haga que la secuencia de comandos pase por la lista de servidores que ejecutan el comando. Es posible que desee pensar en un sistema de registro, sin embargo, los errores podrían causar un dolor de cabeza.

es decir:

lista de servidores:

10.0.0.1
10.0.0.2
10.0.0.3

script que ejecuta comandos

#!/bin/bash
for server in `cat servers.lst`
do
ssh server some-command >> log.txt
done

0



certificados ssh en mi humilde opinión sería el camino a seguir. pero podrías hacer lo mismo con un script esperado - steve


CFEngine ha existido por mucho tiempo exactamente para este propósito.

La mejor solución de gestión de configuración si necesita:

  • La solución más rápida y escalable
  • Para conocer el estado real de sus sistemas
  • La solución con el mejor historial de seguridad
  • Flexibilidad total y control granular
  • Una solución madura y lista para la empresa

0