Cómo utilizar de manera efectiva el módulo local_action en Ansible

AnsibleAnsibleBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ansible(("Ansible")) -.-> ansible/AnsibleSetupandConfigurationGroup(["Ansible Setup and Configuration"]) ansible(("Ansible")) -.-> ansible/ModuleOperationsGroup(["Module Operations"]) ansible(("Ansible")) -.-> ansible/PlaybookEssentialsGroup(["Playbook Essentials"]) ansible/AnsibleSetupandConfigurationGroup -.-> ansible/local_action("Delegate Action Locally") ansible/ModuleOperationsGroup -.-> ansible/command("Execute Commands") ansible/ModuleOperationsGroup -.-> ansible/shell("Execute Shell Commands") ansible/PlaybookEssentialsGroup -.-> ansible/playbook("Execute Playbook") subgraph Lab Skills ansible/local_action -.-> lab-414868{{"Cómo utilizar de manera efectiva el módulo local_action en Ansible"}} ansible/command -.-> lab-414868{{"Cómo utilizar de manera efectiva el módulo local_action en Ansible"}} ansible/shell -.-> lab-414868{{"Cómo utilizar de manera efectiva el módulo local_action en Ansible"}} ansible/playbook -.-> lab-414868{{"Cómo utilizar de manera efectiva el módulo local_action en Ansible"}} end

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:

  1. Operaciones de archivos locales: Cuando necesitas interactuar con archivos o directorios en el nodo de control, como crear, modificar o eliminar archivos.
  2. 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.
  3. 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.
  4. 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: [email protected]

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.