Viniendo de la administración de Windows, quiero profundizar en Linux (Debian). Una de mis preguntas candentes que no pude responder buscando en la web (no la encontré) es: ¿cómo puedo lograr la llamada comunicación remota "uno a muchos" como en PowerShell para Windows?
Para resumirlo en lo básico, diría:
Mi opinión sobre Linux:
- Puedo ingresar a un servidor y escribir mi comando
- Obtengo el resultado. Para un entorno de 10 servidores, ¿tendría que escribir un script (perl / python?) Enviando el comando para cada uno de ellos?
Mi experiencia de Windows:
Escribo mi comando y con "invoke-command" puedo "enviar" esto a un grupo de servidores (tal vez desde un archivo de texto) para ejecutarlo simultáneamente y recuperar el resultado (como un objeto para más trabajo).
Incluso puedo establecer varias sesiones, la conexión se mantiene en segundo plano y enviar comandos de forma selectiva a estas sesiones, y entrar y salir de forma remota como lo necesito.
(Escuché sobre chef, marionetas, etc. ¿Es algo así?)
Update 2019:
Después de probar un montón - Sugiero Rex (ver el comentario a continuación ) - Configuración fácil (efectivamente, sólo necesita ssh, nada más) y el uso (si usted sabe un poco de Perl es aún mejor, pero es opcional)
Con Rex (ify ) puede hacer un comando adhoc y avanzar a una administración de configuración real (... lo que significa: es un CM en primer lugar, pero también es bueno para tareas adhoc) El sitio web parece anticuado, pero actualmente (a partir del 01/2019) está en desarrollo activo y el canal IRC también está activo.
Con el nuevo openssh de Windows hay aún más posibilidades
puedes probar:
rex -u user -p password -H 192.168.1.3 -e 'say run "hostname"'
:setw synchronize-panes on
( unix.stackexchange.com/a/124800/161003 )Respuestas:
Resumen
clusterssh
Para enviar comandos remotos a varios servidores, para un principiante, recomendaría clusterssh
Para instalar
clusterssh
en Debian:Otro tutorial de clusterssh :
Ansible
En cuanto a un marco remoto para la administración de múltiples sistemas, Ansible es una alternativa muy interesante a Puppet. Es más delgado y no necesita agentes remotos dedicados, ya que funciona a través de SSH (también ha sido comprado por RedHat)
Los Playbooks son más elaborados que las opciones de línea de comandos.
Sin embargo, para comenzar a utilizar Ansible, necesita una instalación simple y configurar el archivo de texto de la lista de clientes.
Luego, para ejecutar un comando en todos los servidores, es tan simple como hacer:
La salida también está muy bien formateada y separada por regla / servidor, y mientras se ejecuta en segundo plano se puede redirigir a un archivo y consultar más tarde.
Puede comenzar con reglas simples, y el uso de Ansible se volverá más interesante a medida que crezca en Linux, y su infraestructura se agrande. Como tal, hará mucho más que PowerShell.
Como ejemplo, un libro de jugadas muy simple para actualizar servidores Linux que escribí:
También tiene muchos módulos definidos que le permiten escribir fácilmente políticas integrales.
Índice del Módulo - Documentación Ansible
También tiene un interesante centro oficial / red "social" de repositorios para buscar políticas ya formuladas por la comunidad. Galaxia ansible
Ansible también se usa ampliamente, y encontrará muchos proyectos en github, como este de mí para la configuración de FreeRadius .
Si bien Ansible es un marco de código abierto gratuito, también tiene una interfaz de panel web de pago, Ansible Tower, aunque la licencia es bastante cara.
Hoy en día, después de que RedHat lo compró, tower también tiene la versión de código abierto conocida como AWX .
Como beneficio adicional, Ansible también es capaz de administrar servidores Windows, aunque nunca lo he usado para eso.
También es capaz de administrar equipos de red (enrutadores, conmutadores y firewall), lo que lo convierte en una solución muy interesante como solución de automatización llave en mano.
Cómo instalar Ansible
Rundeck
Una vez más, para un marco remoto más fácil de usar, pero no tan potente como Ansible, recomiendo Rundeck .
Es una interfaz gráfica de inicio de sesión / multiusuario muy poderosa en la que puede automatizar gran parte de sus tareas cotidianas comunes e incluso ofrecer vistas diluidas a los sysops o al servicio de asistencia.
Cuando ejecuta los comandos, también le da ventanas con el resultado desglosado por servidor / tarea.
Puede ejecutar múltiples trabajos en segundo plano sin problemas y le permite ver el informe y la salida más adelante.
Cómo instalar RunDeck
Tenga en cuenta que hay personas que ejecutan Ansible + RunDeck como una interfaz web; no todos los casos son apropiados para eso.
Tampoco hace falta decir que el uso de Ansible y / o RunDeck puede interpretarse como una forma o parte de la documentación de infraestructura, y con el tiempo permite replicar y mejorar las acciones / recetas / Playbooks.
Por último, hablando de un servidor de comando central, crearía uno justo para la tarea. En realidad, el término técnico es un cuadro de salto. Las 'cajas de salto' mejoran la seguridad, si las configura correctamente .
fuente
Si desea hacerlo de forma interactiva, puede usar el
terminator
que permite transmitir un comando a múltiples terminales.Consulte: ¿Cómo ejecuto el mismo comando de Linux en más de una pestaña / shell simultáneamente?
fuente
tmux
y Crtl + b:set sync on
También puede usar
pssh
(oparallel-ssh
), que es un cliente SSH que se conecta a una lista de hosts y ejecuta el comando en todos los hosts en paralelo:fuente
Quizás pueda lograr su objetivo con una simple función zsh (bash). Supongamos que tiene servidores l61 l62 l63 y que a menudo necesita ejecutar un comando en ellos:
Entonces, en la línea de comando:
fuente
Si está utilizando KDE, aquí hay otro método.
- Abra una ventana de Konsole.
Para cada servidor con el que desea comunicarse:
- abra una pestaña
- establezca una conexión ssh con el servidor
En el menú "Editar", seleccione "copiar entrada" a "todas las pestañas"
Cada comando que ingrese en esa pestaña se copiará a todos los servidores.
Puede cambiar de una pestaña a otra para ver los diferentes resultados.
Nota: mis etiquetas de menú (entre comillas) pueden estar equivocadas ya que no uso una versión en inglés de KDE
fuente
GNU paralelo
Permite líneas simples con configuraciones guardadas, por lo que puede crear un perfil, "prod", que contendrá una lista de servidores y conmutadores comunes. Luego simplemente agregue el comando que desee y estará listo. También puede copiar archivos a el servidor y los elimina automáticamente al final, y es bastante conveniente para scripts aún más grandes. También es muy rápido.
El único problema es que tiene tantas opciones;) Pero la documentación también incluye muchos ejemplos, por lo que puede verlos al principio.
fuente
También quiero mencionar "Rex" aquí: https://www.rexify.org/
Es una herramienta increíble que utiliza perl + ssh (usuario / contraseña o autenticación de clave) y debido a que perl está instalado en todos los sistemas Linux (?!), Creo que parece más natural de usar (tiene algunas similitudes con Ansible & Co.)
puede ejecutar comandos adhoc en varios servidores a la vez (servidor1, servidor2, servidor ... - después de configurar la autenticación, o alternativamente usar los parámetros -p / -u y -s / -S para la ejecución de sudo del comando):
o cree un archivo donde especifique diferentes "tareas" y llame desde allí
Se puede instalar a través de repositorios o incluso con perls cpan (o
cpanm Rex
) y su configuración inicial es fácil, consulte:- https://www.rexify.org/ o
- https://www.rexify.org/docs/guides/ start_using__r__ex.html y
- http://www.admin-magazine.com/Archive/2014/21/First-steps-in-IT-automation-by-Rex
fuente