Lea esto en otros idiomas:
Inglés, 日本語, Portugués de Brasil, Francés, Español.
Extendiendo nuestros playbooks del Ejercicio 1.3, el enfoque se centra en la creación y uso de variables en Ansible. Aprenderás la sintaxis para definir y usar variables, una habilidad esencial para crear playbooks dinámicos y adaptables.
Las variables en Ansible son herramientas poderosas para hacer tus playbooks flexibles y reutilizables. Te permiten almacenar y reutilizar valores, haciendo tus playbooks más dinámicos y adaptables.
Una variable en Ansible es una representación nombrada de algún dato. Las variables pueden contener valores simples como cadenas y números, o datos más complejos como listas y diccionarios.
La creación y uso de variables involucra una sintaxis específica:
vars
de un playbook o en archivos separados para proyectos más grandes.""
. Esta sintaxis indica a Ansible que la reemplace con el valor de la variable en tiempo de ejecución.Actualiza el playbook system_setup.yml
para incluir y usar una variable:
---
- name: Basic System Setup
hosts: node1
become: true
vars:
user_name: 'Roger'
tasks:
- name: Update all security-related packages
ansible.builtin.dnf:
name: '*'
state: latest
security: true
- name: Create a new user
ansible.builtin.user:
name: ""
state: present
create_home: true
Ejecuta este playbook con ansible-navigator
.
Ejecuta el playbook actualizado:
[student@ansible-1 lab_inventory]$ ansible-navigator run system_setup.yml -m stdout
PLAY [Basic System Setup] ******************************************************
TASK [Gathering Facts] *********************************************************
ok: [node1]
TASK [Update all security-related packages] ************************************
ok: [node1]
TASK [Create a new user] *******************************************************
changed: [node1]
PLAY RECAP *********************************************************************
node1 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Observa cómo el playbook actualizado muestra un estado de “cambiado” en la tarea de Crear un nuevo usuario. El usuario, ‘Roger’, especificado en la sección vars ha sido creado.
Verifica la creación del usuario mediante:
[student@ansible-1 lab_inventory]$ ssh node1 id Roger
Mejora el playbook system_checks.yml
para verificar la existencia del usuario ‘Roger’ en el sistema utilizando la variable register
y la declaración condicional when
.
La palabra clave register
en Ansible se utiliza para capturar la salida de una tarea y guardarla como una variable.
Actualiza el playbook system_checks.yml
:
---
- name: System Configuration Checks
hosts: node1
become: true
vars:
user_name: 'Roger'
tasks:
- name: Check user existence
ansible.builtin.command:
cmd: "id "
register: user_check
- name: Report user status
ansible.builtin.debug:
msg: "El usuario existe."
when: user_check.rc == 0
Detalles del Playbook:
register: user_check:
Esto captura la salida del comando id en la variable user_check.when: user_check.rc == 0:
Esta línea es una declaración condicional. Verifica si el código de retorno (rc) de la tarea anterior (almacenado en user_check) es 0, lo que indica éxito. El mensaje de depuración solo se mostrará si se cumple esta condición.Esta configuración proporciona un ejemplo práctico de cómo se pueden usar las variables para controlar el flujo de tareas basado en los resultados de pasos anteriores.
Ejecuta el playbook de verificaciones:
[student@ansible-1 lab_inventory]$ ansible-navigator run system_checks.yml -m stdout
Salida:
PLAY [System Configuration Checks] *********************************************
TASK [Gathering Facts] *********************************************************
ok: [node1]
TASK [Check user existence] ****************************************************
changed: [node1]
TASK [Report user status] ******************************************************
ok: [node1] => {
"msg": "El usuario Roger existe."
}
PLAY RECAP *********************************************************************
node1 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Navegación
Ejercicio Anterior - Siguiente Ejercicio
Haz clic aquí para volver al Taller de Ansible para Red Hat Enterprise Linux”