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 XTermand 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.
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 centro 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 de 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.
Se trata de una interfaz gráfica multiusuario/de inicio de sesión muy potente en la que puede automatizar gran parte de sus tareas cotidianas comunes e incluso proporcionar vistas diluidas a los operadores del sistema o al personal del servicio de asistencia técnica.
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.
Si quieres hacerlo de forma interactiva, puedes usar terminator
que permite transmitir un comando a múltiples terminales.
Ver:¿Cómo ejecuto el mismo comando de Linux en más de una pestaña/shell simultáneamente?
También puedes usar pssh
(o parallel-ssh
), que es un cliente SSH que se conecta a una lista de hosts y ejecuta el comando en todos los hosts en paralelo:
$ parallel-ssh -i -H "host1 host2" uname -a
[1] 11:37:12 [SUCCESS] host2
Linux host2 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[2] 11:37:12 [SUCCESS] host1
Linux host1 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux