Ejecución de código remoto utilizando el módulo de comando Ansible

Ejecución de código remoto utilizando el módulo de comando Ansible
Para aquellos de ustedes que trabajan en el campo y en redes, trabajar en servidores debe ser parte de su rutina diaria.

Configurar diferentes servidores y aplicaciones manualmente puede ser una gran molestia si hay muchos sistemas. Afortunadamente, el software y los marcos de automatización hacen el trabajo mucho más fácilmente.

Al usar estas aplicaciones, puede automatizar completamente el proceso de administración y configuración utilizando solo unas pocas líneas de código. Cuando se trata de la automatización de cualquier tipo, Ansible hace el truco!

Ansible es una herramienta con una gran cantidad de características. Hablar sobre todos ellos en una sola guía sería injusto, ya que cada una de estas características merece una guía.

Esta guía es un tutorial detallado sobre el módulo de comando Ansible. Repasaremos los conceptos básicos del módulo, junto con la sintaxis y las características, con la ayuda de algunos ejemplos.

¿Cuál es el módulo de comando ansible??

Como su nombre indica, el módulo de comando hace posible que un servidor/host remoto pueda ejecutar diferentes comandos. Estos usuarios remotos se denominan nodos en una red.

El módulo de comandos Ansible le permite ejecutar múltiples comandos en estos nodos. Estos nodos pueden existir como servidores independientes o partes de un grupo. Dicho esto, hay algunas limitaciones que debes saber sobre.

Limitaciones del módulo de comando

El módulo de comando se puede usar para ejecutar comandos de referencia simples para el shell. La única limitación es que no se puede usar para ejecutar comandos más complejos.

El módulo de comando ansible no puede ejecutar múltiples comandos en una sola declaración. Comandos usando los símbolos, |, etc., no son compatibles con el módulo de comando. En tales casos, el módulo de shell es definitivamente una mejor opción.

El módulo de comando ansible tiene algunos requisitos que deben cumplirse antes de poder usarlo. Estos requisitos están cubiertos en la siguiente sección de esta guía.

Prerrequisitos del módulo de comando ansible

Para usar el módulo de comando Ansible, necesita lo siguiente:

  • Un sistema que tiene Ansible instalado.
  • Un par de anfitriones. En caso de que esté probando sus servidores, recomendamos usar máquinas virtuales. El software como Oracle Virtualbox, Vagrant y VMware Workstations son perfectas para el trabajo.

También le recomendamos que tenga algunos conocimientos básicos sobre cómo ejecutar comandos en la terminal para asegurarse de que sepa lo que está haciendo.

Una vez que se cumplen los requisitos previos, podemos proceder a aprender a usar el módulo de comando Ansible.

Usando el módulo de comando ansible

Si tiene alguna experiencia previa trabajando con scripts de shell, entonces usar el módulo de comando ansible debería ser un paseo por el parque. En caso de que no haya hecho eso, no se preocupe, ya que lo guiaremos sobre cómo usar el módulo de comando con la ayuda de diferentes ejemplos.

Lo primero que debe hacer es crear un archivo "ansible_hosts". Este archivo le permitirá agrupar sus hosts, lo que será útil para ejecutar comandos.

Para crear un grupo de hosts, escriba lo siguiente en el archivo "ansible_hosts"

$ Ansible TestServers --list -i ansible_hosts
Hosts (2):

En nuestro caso,

$ Ansible TestServers --list -i ansible_hosts
Hosts (2):
VM1
VM2

Estos hosts ahora deben agruparse bajo el alias "TestServers."Usemos este archivo como algunos ejemplos.

Uso del módulo de comando para encontrar el tiempo de ejecución del host

En este ejemplo, usaremos el módulo de comando ansible para averiguar cuánto tiempo se han ejecutado nuestros hosts.

Esto se puede hacer de dos formas. El primero es usar ad-hoc, una forma rápida de ejecutar funciones a través de un solo comando. El segundo es escribiendo un guión en el libro de jugadas.

Para encontrar el tiempo de ejecución usando ad-hoc, use el siguiente comando:

$ ansible testServers -m command -A tiempo de actividad -i ansible_hosts

Esto debería proporcionarle la salida en la siguiente sintaxis:

| Cambiado | RC = 0 >>

Para ejecutar el comando como un libro de jugadas, escriba lo siguiente:

Para ejecutar el comando como un libro de jugadas, escriba lo siguiente:
- nombre:
Hospedadores:
tareas:
- nombre:
Registrarse: EttimeOutput
Comando: "tiempo de actividad"
- depurar:
Var: ErttimeOutput.stdout_lines

En nuestro caso, el guión debe verse de la siguiente manera:

- Nombre: Encuentra cuánto tiempo han estado funcionando los hosts.
Hosts: TestServers
tareas:
- Nombre: Comando para encontrar el tiempo de actividad usando el módulo de comando
Registrarse: EttimeOutput
Comando: "tiempo de actividad"
- depurar:
Var: ErttimeOutput.stdout_lines

Con eso, puede ejecutar este libro de jugadas ejecutando el siguiente comando en el terminal de Linux:

Ansible-Playbook Testbook.YML

La salida debe ser similar a la del comando ad-hoc.

Uso del módulo de comando para encontrar el uso del disco

El comando $ DF -H se usa para encontrar el uso de disco en un sistema. El mismo comando puede integrarse con el módulo de comando Ansible para encontrar el uso de disco de sus hosts.

Para encontrar el uso del disco con AD-HOC, use este comando:

$ ansible testServers -m command -a "df -h" -i ansible_hosts

Para encontrar el uso del disco usando el libro de jugadas, ejecute el siguiente script:

Nombre: Uso de disco de los servidores
Hosts: TestServers
tareas:
- Nombre: ejecute el comando $ df -h.
Registrarse: DFOUT
Comando: "DF -H"
- depurar:
var: dfout.stdout_lines

Uso del módulo de comando para reiniciar el servidor

El módulo de comando ansible se puede usar para reiniciar un solo servidor. El parámetro -limit se usa para limitar esta ejecución.

Para ejecutar el comando usando ad-hoc, escriba lo siguiente,

$ ansible testServers -m command -a "httpd -k reiniciar" -i ansible_hosts -b --limit vm1

Para ejecutar el comando usando el libro de playbook, ejecute el siguiente script:

---
- Nombre: Reinicie el servidor web
Hosts: TestServers
tareas:
- Nombre: reiniciarWebServer
Registrarse: httpdresout
convertirse en: si
Comando: "httpd -k reiniciar"
Cuándo: ansible_hostname == "vm1"
- depurar:
Var: httpdresout.stdout_lines

Esto debería reiniciar su servidor. Debería ser evidente que VM2 ha sido omitido.

Además de los ejemplos como se mencionó anteriormente, hay muchos comandos que se pueden ejecutar utilizando el módulo de comando Ansible. La documentación de estos comandos y opciones se puede encontrar en la documentación oficial de Ansible en línea.

Conclusión

Esperamos que esta guía lo ayude a aprender sobre el módulo de comando Ansible. Cubrimos los conceptos básicos del módulo, sus requisitos previos y algunos ejemplos de cómo usarlo. Con esto, esperamos que tenga una experiencia agradable trabajando en Ansible.