Introducción
Ansible, una herramienta de automatización de TI ampliamente adoptada, ofrece un módulo versátil llamado "local_action" que te permite ejecutar tareas en el nodo de control en lugar de en los hosts remotos. En este tutorial, exploraremos cómo utilizar de manera efectiva el módulo "local_action" para mejorar tus flujos de trabajo impulsados por Ansible.
Comprender el módulo local_action
El módulo local_action en Ansible es una herramienta poderosa que te permite ejecutar tareas en el nodo de control (la máquina que ejecuta el playbook de Ansible) en lugar de en los hosts remotos. Este módulo es especialmente útil cuando necesitas realizar acciones específicas del nodo de control, como interactuar con archivos locales, servicios o APIs.
¿Qué es el módulo local_action?
El módulo local_action es un tipo especial de módulo de Ansible que ejecuta la tarea especificada en el nodo de control, en lugar de en los hosts remotos. Esto es diferente del comportamiento predeterminado de Ansible, donde las tareas se ejecutan en los hosts remotos.
¿Cuándo usar el módulo local_action?
El módulo local_action es útil en los siguientes escenarios:
- Operaciones de archivos locales: Cuando necesitas interactuar con archivos o directorios en el nodo de control, como crear, modificar o eliminar archivos.
- Gestión de servicios locales: Cuando necesitas gestionar servicios o demonios que se ejecutan en el nodo de control, como iniciar, detener o reiniciar un servicio.
- Interacciones con API: Cuando necesitas interactuar con APIs que solo son accesibles desde el nodo de control, como consultar una base de datos local o llamar a un servicio web.
- Comprobaciones del entorno local: Cuando necesitas realizar comprobaciones o recopilar información sobre el nodo de control, como comprobar el espacio de disco disponible o la conectividad de red.
¿Cómo usar el módulo local_action?
Para usar el módulo local_action, puedes incluirlo en tu playbook de Ansible como cualquier otro módulo. Aquí tienes un ejemplo:
- name: Create a local file
local_action:
module: file
path: /tmp/local_file.txt
state: touch
En este ejemplo, se utiliza el módulo local_action para crear un archivo llamado local_file.txt en el directorio /tmp del nodo de control.
También puedes usar el módulo local_action en combinación con otros módulos para realizar tareas más complejas en el nodo de control.
- name: Check available disk space on the control node
local_action:
module: command
args:
cmd: df -h
register: disk_space
- debug:
var: disk_space.stdout_lines
En este ejemplo, se utiliza el módulo local_action para ejecutar el comando df -h en el nodo de control, y la salida se almacena en la variable disk_space, que luego se imprime utilizando el módulo debug.
Al comprender las capacidades y casos de uso del módulo local_action, puedes aprovecharlo de manera efectiva en tus playbooks de Ansible para realizar tareas específicas del nodo de control.
Aprovechando local_action para la ejecución de tareas
El módulo local_action en Ansible ofrece una forma flexible de ejecutar tareas en el nodo de control, lo que te permite aprovechar sus capacidades para una amplia gama de casos de uso. En esta sección, exploraremos cómo utilizar de manera efectiva el módulo local_action para ejecutar tareas en el nodo de control.
Ejecutando comandos locales
Uno de los principales casos de uso del módulo local_action es ejecutar comandos en el nodo de control. Esto puede ser especialmente útil cuando necesitas realizar tareas a nivel de sistema o interactuar con recursos locales que no son accesibles desde los hosts remotos.
- name: Execute a local command
local_action:
module: command
args:
cmd: ls -l /tmp
register: local_command_output
- debug:
var: local_command_output.stdout_lines
En este ejemplo, se utiliza el módulo local_action para ejecutar el comando ls -l /tmp en el nodo de control, y la salida se almacena en la variable local_command_output, que luego se imprime utilizando el módulo debug.
Interactuando con archivos y directorios locales
El módulo local_action también se puede utilizar para interactuar con archivos y directorios en el nodo de control. Esto puede ser útil para tareas como crear, modificar o eliminar archivos, así como para gestionar estructuras de directorios.
- name: Create a local directory
local_action:
module: file
path: /tmp/local_directory
state: directory
- name: Create a local file
local_action:
module: file
path: /tmp/local_directory/local_file.txt
state: touch
En este ejemplo, se utiliza el módulo local_action para crear un directorio llamado local_directory en el directorio /tmp del nodo de control, y luego crear un archivo llamado local_file.txt dentro de ese directorio.
Llamando a APIs y servicios locales
El módulo local_action también se puede utilizar para interactuar con APIs y servicios locales, como consultar una base de datos local o llamar a un servicio web que solo es accesible desde el nodo de control.
- name: Call a local API
local_action:
module: uri
url: http://localhost:8080/api/data
register: api_response
- debug:
var: api_response.json
En este ejemplo, se utiliza el módulo local_action para llamar a una API local que se ejecuta en el nodo de control, y la respuesta se almacena en la variable api_response, que luego se imprime utilizando el módulo debug.
Al entender cómo aprovechar el módulo local_action para la ejecución de tareas, puedes mejorar la flexibilidad y el poder de tus playbooks de Ansible, lo que te permite realizar una amplia gama de tareas en el nodo de control.
Ejemplos prácticos de uso de local_action
En esta sección, exploraremos algunos ejemplos prácticos de cómo utilizar el módulo local_action en tus playbooks de Ansible. Estos ejemplos cubrirán una variedad de casos de uso y demostrarán la versatilidad de este poderoso módulo.
Realizar copias de seguridad de archivos locales
Un caso de uso común del módulo local_action es realizar copias de seguridad de archivos y directorios en el nodo de control. Esto puede ser especialmente útil cuando necesitas preservar configuraciones o datos locales antes de realizar cambios.
- name: Backup local configuration files
local_action:
module: archive
path:
- /etc/nginx/conf.d
- /etc/mysql/my.cnf
dest: /tmp/local_backup.zip
format: zip
En este ejemplo, se utiliza el módulo local_action para crear un archivo ZIP con los directorios /etc/nginx/conf.d y /etc/mysql/my.cnf en el nodo de control, y el archivo se guarda en /tmp/local_backup.zip.
Generar certificados SSL
Otro caso de uso práctico del módulo local_action es generar certificados SSL en el nodo de control. Esto puede ser útil cuando necesitas crear certificados autofirmados para fines de prueba o desarrollo.
- name: Generate a self-signed SSL certificate
local_action:
module: openssl_certificate
path: /etc/ssl/certs/local_cert.pem
privatekey_path: /etc/ssl/private/local_key.pem
state: present
organization_name: LabEx
country_name: US
email_address: admin@example.com
En este ejemplo, se utiliza el módulo local_action para generar un certificado SSL autofirmado y una clave privada en el nodo de control. El certificado se almacena en el archivo /etc/ssl/certs/local_cert.pem, mientras que la clave privada se guarda en /etc/ssl/private/local_key.pem.
Interactuar con una base de datos local
El módulo local_action también se puede utilizar para interactuar con una base de datos local en el nodo de control. Esto puede ser útil para tareas como ejecutar consultas SQL o realizar copias de seguridad de la base de datos.
- name: Query a local MySQL database
local_action:
module: mysql_query
login_user: root
login_password: password
query: SELECT * FROM users
register: database_query
- debug:
var: database_query.results
En este ejemplo, se utiliza el módulo local_action para ejecutar una consulta SQL en una base de datos MySQL local en el nodo de control. Los resultados se almacenan en la variable database_query, que luego se imprime utilizando el módulo debug.
Al explorar estos ejemplos prácticos, puedes adquirir una mejor comprensión de cómo utilizar de manera efectiva el módulo local_action en tus playbooks de Ansible para realizar una amplia gama de tareas en el nodo de control.
Resumen
Al final de esta guía, tendrás una comprensión integral del módulo local_action en Ansible, incluyendo sus beneficios, casos de uso prácticos y las mejores prácticas para una integración perfecta en tus procesos de automatización. Desbloquea todo el potencial de Ansible y optimiza la gestión de tu infraestructura con las ideas proporcionadas en este tutorial.


