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 el llamado "uno -to-many” remoto como en PowerShell para Windows?
Para desglosarlo en lo básico, diría:
Mi opinión sobre Linux:
- Puedo acceder 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 con Windows:
-
Escribo mi comando y con "invoke-command" puedo "enviar" esto a un grupo de servidores (quizás desde un archivo de texto) para ejecutarlo simultáneamente y recuperar el resultado (como un objeto para seguir trabajando).
-
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 según lo necesite.
(Escuché sobre chef, títere, etc. ¿Es esto algo así?)
Update 2019:
Después de probar mucho, sugiero Rex (vea este comentario a continuación):fácil configuración (efectivamente, solo necesita ssh, nada más) y uso (si sabe un poco de perl es incluso mejor, pero es opcional)
Con Rex(ify) puedes hacer adhoc comando y avance a una verdadera gestión de configuración (... lo que significa:es un CM en primer lugar, pero también es bueno para tareas ad hoc)
El sitio web parece desactualizado, pero actualmente (a partir del 01/2019) está en desarrollo activo y el IRC-Channel también está activo .
Con el nuevo Opensh de Windows hay aún más posibilidades
puedes probar:rex -u user -p password -H 192.168.1.3 -e 'say run "hostname"'
Respuesta aceptada:
Resumen
- Ansible es una herramienta DevOps que reemplaza poderosamente a PowerShell
- RunDeck como interfaz gráfica es útil
- Algunas personas ejecutan RunDeck+Ansible juntos
grupossh
Para enviar comandos remotos a varios servidores, para un principiante, recomendaría clusterssh
Para instalar clusterssh
en Debian:
apt-get install clusterssh
Otro tutorial de clusterssh:
ClusterSSH es un contenedor Tk/Perl de herramientas estándar de Linux como XTerm
y SSH. Como tal, se ejecutará en casi cualquier sistema operativo compatible con POSIX donde
existan las bibliotecas; lo he ejecutado en Linux, Solaris y Mac OS X.
Requiere las bibliotecas Perl Tk ( perl-tk en Debian o Ubuntu) y
X11::Protocol (libx11-protocol-perl en Debian o Ubuntu), además
de xterm y OpenSSH.
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 ágil y no necesita agentes remotos dedicados ya que funciona sobre SSH (también lo ha comprado RedHat)
Los Playbooks son más elaborados que las opciones de la línea de comandos.
Sin embargo, para comenzar a usar 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:
ansible all -m command -a "uptime"
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 consultarla más tarde.
Relacionado:¿Cómo condensar subdirectorios?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 vuelva más grande. Como tal, hará mucho más que PowerShell.
Como ejemplo, un Playbook muy simple para actualizar servidores Linux que escribí:
---
- hosts: all
become: yes
gather_facts: False
tasks:
- name: updates a server
apt: update_cache=yes
- name: upgrade a server
apt: upgrade=full
También tiene muchos módulos definidos que le permiten escribir fácilmente políticas integrales.
Índice de módulos:documentación de Ansible
También tiene un interesante hub oficial/red “social” de repositorios para buscar políticas de ansible ya creadas por la comunidad. Galaxia ansible
Ansible también se usa ampliamente, y encontrará muchos proyectos en github, como este de mí mismo 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 paga, Ansible Tower, aunque la licencia es bastante costosa.
Actualmente, luego de que RedHat lo comprara, 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 (routers, switches 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
Cubierta
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 multiusuario/de inicio de sesión muy poderosa en la que puede automatizar gran parte de sus tareas cotidianas comunes e incluso brindar vistas diluidas a los operadores del sistema o al personal del servicio de asistencia.
Al ejecutar los comandos, también le brinda ventanas con la salida desglosada por servidor/tarea.
Puede ejecutar varios 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 interfaz web; no todos los casos son apropiados para eso.
También es evidente que el uso de Ansible y/o RunDeck puede interpretarse como una forma o parte de la documentación de la infraestructura y, con el tiempo, permite replicar y mejorar las acciones/recetas/libros de jugadas.
Por último, hablando de un servidor de comando central, crearía uno justo para la tarea. En realidad, el término técnico es una caja de salto. Las "cajas de salto" mejoran la seguridad, si las configuras correctamente.