Ejecutando un Comando con Sustitución de Variables
En este paso, profundizarás tu comprensión del módulo de acción local incorporando la sustitución de variables. Esto te permitirá cambiar dinámicamente el comando que se está ejecutando en función de las variables definidas en tu playbook.
Primero, complete el archivo /home/labex/project/execute_command_with_variable_substitution.yml
.
Agregue el siguiente contenido al archivo de playbook:
- name: Ejecutando un Comando con Sustitución de Variables
gather_facts: false
hosts: localhost
vars:
message: "Hello, Ansible!"
tasks:
- name: Imprimir un mensaje con sustitución de variables
local_action:
module: command
cmd: echo "{{ message }}"
register: result
- name: Depurar la salida
debug:
var: result.stdout
vars
: Esta sección se utiliza para definir variables. En este playbook, define una variable llamada message
con el valor "Hello, Ansible!"
.
local_action
: Esto indica que la acción debe realizarse localmente en la máquina de control donde se está ejecutando Ansible.
module
: Esto especifica el módulo de Ansible que se utilizará para la acción. En este caso, es el módulo command
.
cmd
: Este es el comando real que se ejecutará. En este caso, es el comando de shell echo "{{ message }}"
, donde {{ message }}
se reemplaza con el valor de la variable message
definida anteriormente.
register
: Esto registra la salida del comando en la variable result
para su posterior uso en el playbook.
debug
: Este es el módulo de Ansible utilizado para imprimir información de depuración.
var
: Este es un parámetro del módulo debug
que especifica la variable que se va a depurar. En este caso, es result.stdout
, que contiene la salida estándar del comando ejecutado en la tarea anterior.
En resumen, este playbook ejecuta el comando echo "{{ message }}"
localmente en la máquina de control, donde {{ message }}
se reemplaza con el valor de la variable message
definida en la sección vars. Registra la salida del comando y luego imprime la salida utilizando el módulo debug
.
Luego, muestre la salida del comando en el playbook de Ansible.
ansible-playbook /home/labex/project/execute_command_with_variable_substitution.yml
Salida de ejemplo:
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'
PLAY [Local Action Module Challenge] *******************************************
TASK [Print a message with variable substitution] ******************************
changed: [localhost]
TASK [Debug the output] ********************************************************
ok: [localhost] => {
"result.stdout": "Hello, Ansible!"
}
PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Aquí "result.stdout": "Hello, Ansible!"
es la salida del comando echo "{{ message }}"
.