Variables anidades Ansible

Variables Anidades Ansible



Ansible és una de les eines d'automatització gratuïtes i de codi obert més potents que admeten l'automatització de tasques de DevOps, com ara el subministrament de programari, la gestió de la configuració i el desplegament d'aplicacions.

Una de les pedres angulars del poder d'Ansible és la seva capacitat d'utilitzar variables que es poden utilitzar per emmagatzemar informació i fer-hi referència a través de llibres de joc, rols i plantilles.

Les variables niuades a Ansible fan referència a la característica de definir una variable dins d'una altra variable. Aquests poden ajudar a simplificar i estructurar les vostres dades, fent que els llibres de jugades d'Ansible siguin més llegibles i manejables.







Aquest tutorial ens ensenya com treballar amb variables imbricades a les definicions d'Ansible YAML. Això inclou com definir les variables imbricades i com accedir-hi.



Què són les variables anidades Ansible?

Comencem per definir quines són les variables imbricades d'Ansible.



Podem definir les variables com cadenes, nombres enters, booleans i altres estructures de dades complexes com ara diccionaris i llistes a Ansible. Una llista o un diccionari és un exemple de variable imbricada.





El paper principal de les variables imbricades és organitzar les dades de manera més jeràrquica, cosa que és més fàcil de llegir i mantenir.

Les variables imbricades també proporcionen un mètode molt eficient per referir dinàmicament un subvalor basat en el valor d'una altra variable.



Crea variables imbricades

Podem utilitzar la sintaxi YAML per definir i inicialitzar les variables imbricades a Ansible. Un exemple és el següent:

usuaris:
linuxhint:
UID: 1001
shell: '/bin/bash'
administrador:
UID: 1002
shell: '/bin/zsh'

En l'exemple donat, definim un diccionari anomenat 'usuaris' amb altres dos diccionaris imbricats per als usuaris de Linuxhint i els administradors.

Consulteu les variables imbricades

Podem fer referència a les variables imbricades a Ansible mitjançant la notació de punts o claudàtors. Considereu l'exemple següent:

- depuració:
msg: '{{ users.linuxhint.shell }}'

En aquest cas, utilitzem la notació de punts per accedir al valor de la clau de l'intèrpret d'ordres des del diccionari 'linuxhint' que està imbricat dins del diccionari 'usuaris'.

La notació de claudàtors també és molt útil quan es fa referència dinàmica a una variable. Un exemple és el següent:

- set_fact:
selected_user: 'linuxhint'
- depuració:
msg: '{{ usuaris[selected_user].shell }}'

Això obté el valor de la clau definida.

Configuració de les variables anidades Ansible

Podem establir les variables imbricades al fitxer d'inventari, en un llibre de jocs d'Ansible o mitjançant els fitxers inclosos a Ansible.

Vegem diversos exemples de definició de les variables imbricades en cadascun.

Creació de variables imbricades en un fitxer d'inventari Ansible

L'exemple següent mostra com crear les variables imbricades en un fitxer d'inventari d'Ansible:

[web]
servidor web1 ansible_host=192.168.1.10

[web:on]
bases de dades:
db1: 'postgresql'
db2: 'mysql'

Com podeu veure, incloem dues variables imbricades dins del grup de bases de dades.

Creació de variables imbricades a Ansible Playbook

També podem definir les variables imbricades en un llibre de jugades, tal com es mostra a l'exemple següent:

---
- amfitrions: web
del qual:
configuracions:
nginx:
port: 80
apache:
port: 8080
tasques:
- nom: Imprimeix el port d'apache
depurar:
msg: '{{ configs.apache.port }}'

Bucle sobre variables imbricades

Ansible també ens permet iterar sobre variables imbricades, tal com es demostra a l'exemple de llibre de jugades següent:

- hosts: localhost
del qual:
serveis:
nginx:
port: 80
estat: començat
apache:
port: 8080
estat: aturat
tasques:
- nom: assegureu-vos que els serveis estiguin en l'estat desitjat
servei:
nom: '{{ item.key }}'
estat: '{{ item.value.state }}'
with_dict: '{{ serveis }}'

L'exemple donat hauria d'iterar sobre cada servei i assegurar-se que es troba en l'estat desitjat.

Conclusió

Hem explorat la funcionalitat d'Ansible per definir i fer referència a les variables imbricades per proporcionar una manera potent d'organitzar i estructurar les dades per a la gestió de la configuració.