En Ansible, si queremos emitir algunos comandos para realizar cambios o actualizar cualquier cosa en el host remoto de destino, usaremos el módulo de comando. El módulo ad-hoc ansible es el módulo predeterminado cuando estamos utilizando el módulo "Comando" en la herramienta Ansible. Los únicos ejecutables que el módulo de comando puede ejecutar son los que están en hosts distantes de destino. El objetivo principal del módulo de comando en Ansible es esquivar la terminal local.
Hay algunas restricciones en Ansible, por ejemplo, variables como $ hostname o $ home no son accesibles y operaciones como "&" y "<" etc are not functional in the command module. Any other Ansible module can be used if you wish to utilize these parameters. The command module in Ansible is unaffected by the remote host environment, which is why its outcomes are regarded as being more dependable and secure. On the target remote hosts or servers, that are specified as independent servers or hosting groups, the Command module is largely used to carry out standard Ubuntu instructions.
Prerrequisitos para utilizar el módulo de comando en Ansible
Este tutorial incluye demostraciones prácticas de Ansible. Para usar el módulo de comando Ansible, suponemos que tiene los requisitos enumerados a continuación:
Explore la premisa del módulo de comando con mayor detalle y examinemos cómo Ansible implementa esto arrojando varios escenarios a la práctica.
Ejemplo 01: Verificar el tiempo de actividad de un host remoto de destino utilizando el módulo de comando de Ansible
Cada operador profesional o poderoso de cada potencial, como un controlador ansible, debe poseer un conocimiento firme de algunos comandos que se encuentran en la herramienta de configuración Ansible. Vamos a usar uno de los comandos más importantes del módulo de comando que es el comando "tiempo de actividad" en Ansible. El tiempo de actividad del comando muestra la hora actual, el número de hosts activos, la carga típica del servidor en los 1, 5 y 15 minutos anteriores, así como la cantidad de tiempo que su dispositivo ha estado funcionando. Siguiendo las opciones que especifica, también puede restringir el contenido relevante al mismo tiempo.
Comencemos creando el libro de jugadas donde escribiremos el comando de tiempo de actividad para verificar el tiempo de actividad del host remoto. El comando que usaremos para crear el libro de jugadas en la herramienta Ansible es el siguiente:
[root@maestro ansible]# nano command_module.YML
Después de escribir el comando anterior, el command_module.YML Playbook se creará y se lanzará a un nuevo editor con el nombre del libro de jugadas que es "Command_Module". En este editor, primero proporcionamos los hosts remotos a los que queremos apuntar. Aquí, hemos apuntado a "todos" a los hosts remotos. Para obtener la información relacionada con los hosts remotos específicos, utilizaremos Ansible "Recopilando Datos", Módulo. Los datos recopilados generalmente se denominan "hechos" o "variables" en la herramienta Ansible.
En la herramienta Ansible, podemos recopilar los datos de hosts remotos individualmente utilizando el comando específico que es "configuración". Pero en realidad, la variable de hechos de recopilación se realiza llamando a este módulo de configuración de forma predeterminada en Ansible Playbooks. Para recopilar los datos, pasaremos el valor "verdadero" o "falso". Como se muestra, hemos pasado "falso" porque no queremos obtener la información del host de destino.
A continuación, enumeremos las tareas que queremos hacer en el libro de jugadas Command_Module. Comenzaremos nombrando la tarea. Luego, utilizamos el parámetro "Registro" para que podamos rastrear y almacenar la salida en este parámetro Ansible. Ahora, pasaremos el comando que queremos realizar, que es "tiempo de actividad". Luego, utilizamos el comando "depuración" para imprimir la salida de la variable.
- Hospedadores:
- todo
gather_facts: falso
tareas:
- Nombre: Ejecutar el comando de tiempo de actividad a través del módulo de comando
Registrarse: EttimeOutput
Comando: "tiempo de actividad"
- depurar:
Var: ErttimeOutput.stdout_lines
Golpear ctrl+x terminará el editor de libros de jugadas. Ahora, crearemos el archivo de inventario, que contendrá los detalles sobre el host remoto de destino. El comando que utilizaremos para crear el archivo de inventario en Ansible se menciona a continuación:
[root@master ansible]# nano host.YML
Se abrirá un editor diferente llamado "Host" con el archivo de inventario. Dado que los anfitriones "Todos" fueron mencionados en el libro de jugadas, ahora revisaremos cada anfitrión individualmente. Solo usamos un host en el archivo de inventario, al que nos referiremos como "host1", e incluiremos sus detalles allí. Comenzaremos proporcionando la dirección IP, luego la identidad del host, la credencial de la herramienta Ansible, el nombre de la conexión que se formó entre el controlador y el host, y finalmente el número de puerto.
Todo:
Hospedadores:
Anfitrión1:
ansible_host: 192.168.3.229
ansible_user: ansible
ansible_password: *******
ansible_connection: ssh
ansible_port: 22
Ahora lanzaremos el libro de jugadas y el archivo de inventario que se crearon después de ser escritos por el comando que se enumera a continuación:
[root@maestro ansible]# ansible-playbook command_module.yml -i anfitrión.YML
Aquí está la salida después de ejecutar correctamente donde tenemos la información de Host1. Tenemos el tiempo, los días, los datos de los usuarios totales y el promedio de carga del host1.
Ejemplo 02: Utilizando el comando Uname para obtener el nombre de host y la versión del host remoto
Aquí está el segundo ejemplo de un módulo de comando en Ansible donde vamos a usar el comando "desanimado". Estamos utilizando "desanimado" para obtener la información del host remoto de Ansible como queremos obtener el nombre del host remoto y qué versión de la herramienta Ansible. Primero, ingresaremos el libro de jugadas recientemente creado que es command_module.YML y luego modifique las tareas y comandos. Para abrir el command_module.YML Playbook, usaremos el comando "nano":
[root@maestro ansible]# nano command_module.YML
En el libro de jugadas, hemos alterado las tareas que se muestran a continuación en el fragmento de código. Como se muestra en la variable de comando, hemos pasado el comando "desanimado" junto con la opción "-a" para que podamos obtener la información de todos los hosts.
- Hospedadores:
- todo
gather_facts: falso
tareas:
- Nombre: Ejecución de la instrucción desacuerdo
Registrarse: UnameOut
Comando: "Uname -A"
- depurar:
Var: UnameOut.stdout_lines
Guardaremos las modificaciones y cerraremos el libro de jugadas. Ahora, ejecutaremos el libro de jugadas para obtener la salida del comando "desanimado" y veremos lo que obtenemos. Para ejecutar el libro de jugadas, a continuación se encuentra el comando que utilizaremos:
[root@maestro ansible]# ansible-playbook command_module.yml -i anfitrión.YML
El resultado de realizar con éxito el comando mencionado anteriormente se muestra a continuación. El nombre de host y la versión se muestran en Green Font.
Conclusión
Hemos aprendido uno de los módulos de Ansible, que es el módulo de comando. Hemos discutido cómo funciona en Ansible. Además, hemos aprendido los dos escenarios básicos del módulo de comando implementando los ejemplos.