Módulo de “Depuración” de Ansible

El proceso de depuración es una parte muy crítica del desarrollo de un código de software. Los playbooks de Ansible no son una excepción a esto.

Para imprimir variables o mensajes en la salida del terminal durante la ejecución, Ansible proporciona un módulo llamado “depuración”. Es una utilidad muy beneficiosa para desarrollar un libro de jugadas. Para examplese puede usar con la directiva “cuando:” y durante la ejecución sin interrumpir el libro de jugadas.

¿Qué cubriremos?

En este tutorial, veremos sobre el “módulo de depuración” en Ansible. También aprenderemos sobre los diversos casos de uso. Comencemos ahora.

requisitos previos

Para realizar los ejemplos mostrados en este tutorial, necesitamos tener los siguientes requisitos:

1. Debe tener un Ansible instalado en el nodo del controlador ( Ubuntu 20.04 en nuestro caso).

2. Debe tener un conocimiento básico sobre cuál es el propósito de Ansible y cómo escribir un libro de jugadas (y, por supuesto, debe saber qué es un libro de jugadas).

Si es solo un principiante en el mundo de Ansible, le sugerimos que primero aprenda sobre Vagrant y cómo configurar un entorno de prueba local básico usando Vagrant. Una vez que configure un laboratorio básico de tener un nodo de controlador y dos nodos de destino, estará listo para realizar los ejemplos de esta guía.

Parámetros utilizados con el módulo de depuración

Hay varios parámetros que se utilizan con este módulo:

1. msg: Es un parámetro de tipo cadena que imprime un mensaje personalizado.

2. var: Especifica la variable a depurar: “msg” y “var” son mutuamente excluyentes.

3. verbosidad: Esto establece el número solo después del cual se ejecuta la operación de depuración. Para examplesi se establece en 2, la depuración se ejecuta solo cuando se especifica “-vv”.

Ejemplos de usos del módulo de depuración

1. Imprimir un extracto simple

En su uso más básico, el módulo de depuración se puede usar para imprimir una declaración en la salida. Cree un libro de jugadas “debug-demo.yml” con el siguiente contenido:

                      ---

- name: Ansible debug module basic example

hosts: web

tasks:

- name: Basic debug module message

debug:

msg: "LinuxHint Ansible"

                    

Para ejecutar este libro de jugadas y cualquier libro de jugadas subsiguiente, use el siguiente formato:

                      $ ansible-playbook example.yml -i /path/to/inventory/file

                    

2. Imprimiendo una Variable

Además de imprimir las declaraciones básicas en la terminal, también podemos usar el módulo de “depuración” para imprimir los valores de las variables. En el siguiente exampleconfiguramos una variable en el archivo “my_vars.yml” y generamos su valor usando el parámetro “msg” del módulo de depuración:

                      ---

- hosts: web

vars_files:

- demo_vars.yml

tasks:

# Display "Variable ‘demo_var1’ is set to ‘demo_val1’".

- debug: msg="Variable ‘demo_var1’ is set to {{ demo_var1 }}"

                    

El libro de jugadas anterior imprime el valor de la variable “demo_var1” junto con el mensaje especificado en el parámetro “msg”.

De manera similar, las variables declaradas dentro de un libro de jugadas también se pueden usar para imprimir en el terminal durante la ejecución de un libro de jugadas:

                      ---

- hosts: web

vars:

my_var2: my_val2

tasks:

# This task displays "Variable ‘my_var2’ is set to ‘my_val2’".

- debug: msg="Variable ‘my_var2’ is set to {{ my_var2 }}"

                    

En el libro de jugadas anterior, la variable “my_var2” se imprime durante la ejecución.

3. Uso del módulo de depuración con las variables de registro

En un enfoque similar al de los ejemplos anteriores, también podemos usar el módulo de depuración con las variables de registro. Ahora, vamos a crear otro libro de jugadas con el siguiente contenido:

                      ---

- hosts: all

gather_facts: no

become: false

tasks:

- name: Check the user name

ansible.builtin.shell: /usr/bin/whoami

register: login

- name: Display the user name using the output from previous task

debug: msg="Logged in as user {{ login.stdout }}"

                    

El libro de jugadas anterior tiene dos tareas. La primera tarea da el nombre del usuario desde el cual se ejecutó el comando de shell y almacena este valor en una variable de tipo registro “login”. La segunda tarea usa esta variable en la impresión del mensaje usando el parámetro “msg” del módulo de depuración.

4. Uso del módulo de depuración junto con el condicional “Cuándo”

En este caso, podemos establecer la condición para que el módulo de depuración se ejecute solo cuando se cumplan ciertas condiciones. Cree un nuevo libro de jugadas con los siguientes contenidos:

                       

---

- hosts: all

gather_facts: yes

become: true

tasks:

- name: Checking the release information of the servers

ansible.builtin.command: /usr/bin/lsb_release -a

register: info

- name: Print the release information

debug: msg="The System information is as follows {{ info.stdout }}"

when: ansible_facts['distribution']=="
                      
                        Debian
                      
                      "

                    

En el libro de jugadas anterior, usamos el comando “lsb_release -a” para imprimir la información de lanzamiento de un sistema. La declaración “cuando” establece una condición para imprimir esta información usando el módulo “depurar” solo cuando la distribución del sistema operativo es Debian.

Conclusión

En esta guía hemos visto cómo usar el módulo de “depuración” con algunos ejemplos. El módulo de “depuración” de Ansible es muy útil para la depuración activa de operaciones, como vimos en los ejemplos dados. Es igualmente útil para obtener una salida detallada de un libro de jugadas.

Related Posts