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