GNU/Linux >> Tutoriales Linux >  >> Linux

RHCE Ansible Series #4:Variables, hechos y registros de Ansible

Siempre habrá muchas variaciones en sus sistemas administrados. Por este motivo, debe aprender a trabajar con variables de Ansible.

En este tutorial, aprenderá a definir y hacer referencia a variables de Ansible. También aprenderá a usar datos de Ansible para recuperar información en sus nodos administrados.

Además, también aprenderá a usar registros para capturar la salida de la tarea.

Si es su primera vez aquí, eche un vistazo a los capítulos anteriores de esta serie:

  • Ansible RHCE #1:Introducción e instalación
  • Ansible RHCE n.º 1:ejecución de comandos ad-hoc
  • Ansible RHCE n.º 1:comprensión de los manuales de estrategias

Parte 1:Trabajar con variables en Ansible

Comencemos primero con las variables. Ten en cuenta que todo esto está escrito en tu archivo YML.

Definir y referenciar variables

Puede utilizar las vars palabra clave para definir variables directamente dentro de un libro de jugadas.

Por ejemplo, puede definir un fav_color variable y establezca su valor en amarillo de la siguiente manera:

---
- name: Working with variables
  hosts: all
  vars:
    fav_color: yellow

Ahora, ¿cómo se usa (referencia) el fav_color ¿variable? Ansible utiliza el sistema de plantillas Jinja2 para trabajar con variables. Habrá un tutorial dedicado que trata sobre Jinja2 en esta serie, pero por ahora solo necesita conocer los conceptos básicos.

Para obtener el valor del fav_color variable; debe rodearlo con un par de corchetes de la siguiente manera:

My favorite color is {{ fav_color }}

Tenga en cuenta que si su variable es el primer elemento (o el único elemento) en la línea, entonces es obligatorio usar comillas de la siguiente manera:

"{{ fav_color }} is my favorite color."

Ahora escribamos un libro de jugadas llamado variables-playbook.yml que pone todo esto junto:

[[email protected] plays]$ cat variables-playbook.yml 
---
- name: Working with variables
  hosts: node1
  vars:
    fav_color: yellow
  tasks:
    - name: Show me fav_color value
      debug:
        msg: My favorite color is {{ fav_color }}.

He usado la depuración junto con el msg opción de módulo para imprimir el valor del fav_color variables.

Ahora ejecute el libro de jugadas y verá su color favorito mostrado de la siguiente manera:

[[email protected] plays]$ ansible-playbook variables-playbook.yml 

PLAY [Working with variables] **************************************************

TASK [Gathering Facts] *********************************************************
ok: [node1]

TASK [Show me fav_color value] *************************************************
ok: [node1] => {
    "msg": "My favorite color is yellow."
}

PLAY RECAP *********************************************************************
node1                      : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

Creando listas y diccionarios

También puede usar listas y diccionarios para definir variables multivaluadas. Por ejemplo, puede definir una lista llamada port_nums y establezca su valor de la siguiente manera:

  vars:
    port_nums: [21,22,23,25,80,443]

También podría haber utilizado la siguiente forma de definir port_nums que es equivalente:

vars:
    port_nums:
      - 21
      - 22
      - 23
      - 25
      - 80
      - 443

Puede imprimir todos los valores en port_nums de la siguiente manera:

All the ports {{ port_nums }}

También puede acceder a un elemento de lista específico:

First port is {{ port_nums[0] }}

Tenga en cuenta que utiliza un índice (posición) para acceder a los elementos de la lista.

También puede definir un diccionario llamado usuarios de la siguiente manera:

vars:
    users:
      bob:
        username: bob
        uid: 1122
        shell: /bin/bash
      lisa:
        username: lisa
        uid: 2233
        shell: /bin/sh

Hay dos formas diferentes que puede usar para acceder a los elementos del diccionario:

  • nombre_dict['clave'] -> usuarios['bob']['shell']
  • nombre_dict.key -> usuarios.bob.shell

Tenga en cuenta que utiliza una clave para acceder a los elementos del diccionario.

Ahora puede editar variables-playbook.yml playbook para mostrar listas y diccionarios en acción:

[[email protected] plays]$ cat variables-playbook.yml 
---
- name: Working with variables
  hosts: node1
  vars:
    port_nums: [21,22,23,25,80,443]
 
    users: 
      bob:
        username: bob
        uid: 1122
        shell: /bin/bash
      lisa:
        username: lisa
        uid: 2233
        shell: /bin/sh
  tasks:
    - name: Show 2nd item in port_nums
      debug:
        msg: SSH port is {{ port_nums[1] }}

    - name: Show the uid of bob
      debug:
        msg: UID of bob is {{ users.bob.uid }}

Ahora puede ejecutar el libro de jugadas para mostrar el segundo elemento en port_nums y muestra el uid de bob:

[[email protected] plays]$ ansible-playbook variables-playbook.yml 

PLAY [Working with variables] **************************************************

TASK [Show 2nd item in port_nums] **********************************************
ok: [node1] => {
    "msg": "SSH port is 22"
}

TASK [Show the uid of bob] *****************************************************
ok: [node1] => {
    "msg": "UID of bob is 1122"
}

Incluyendo variables externas

Al igual que puede importar (o incluir) tareas en un libro de jugadas. También puedes hacer lo mismo con las variables. Es decir, en un libro de jugadas, puede incluir variables definidas en un archivo externo.

Para demostrarlo, creemos un archivo llamado myvars.yml que contiene nuestros port_nums lista y usuarios diccionario:

[[email protected] plays]$ cat myvars.yml 
---
port_nums: [21,22,23,25,80,443]

users:
  bob:
    username: bob
    uid: 1122
    shell: /bin/bash
  lisa:
    username: lisa
    uid: 2233
    shell: /bin/sh

Lea la historia completa

El resto del artículo está disponible solo para miembros de LHB. Puede registrarse ahora GRATIS para leer el resto de este artículo junto con el acceso a todas las publicaciones exclusivas para miembros. También se suscribe a nuestro boletín quincenal de Linux.

Suscríbete¿Ya tienes una cuenta?Iniciar sesión
Linux
  1. Cómo pasar variables adicionales a un libro de jugadas de Ansible

  2. RHCE Ansible Series #8:Cifrado de contenido con Ansible Vault

  3. Serie RHCE Ansible n.º 7:Plantillas Jinja2

  4. RHCE Ansible Series #6:Toma de decisiones en Ansible

  5. Serie RHCE Ansible n.º 5:bucles Ansible

Archivos de inventario y configuración de Ansible

Una introducción a los hechos de Ansible

Serie RHCE Ansible n.º 2:Ejecución de comandos ad-hoc

Serie RHCE Ansible n.º 1:Salude a Ansible

Serie RHCE Ansible n.º 3:Manuales de Ansible

Serie RHCE Ansible n.º 12:solución de problemas de Ansible