Il y aura toujours de nombreuses variations entre vos systèmes gérés. Pour cette raison, vous devez apprendre à utiliser les variables Ansible.
Dans ce tutoriel, vous apprendrez à définir et à référencer des variables Ansible. Vous apprendrez également à utiliser les faits Ansible pour récupérer des informations sur vos nœuds gérés.
De plus, vous apprendrez également à utiliser les registres pour capturer la sortie des tâches.
Si c'est la première fois que vous venez ici, veuillez consulter les chapitres précédents de cette série :
- Ansible RHCE #1 :Présentation et installation
- Ansible RHCE #1 :Exécuter des commandes ad hoc
- Ansible RHCE #1 :Comprendre les playbooks
Partie 1 :Travailler avec des variables dans Ansible
Commençons d'abord par les variables. Gardez à l'esprit que tout cela est écrit dans votre fichier YML.
Définir et référencer des variables
Vous pouvez utiliser les vars mot-clé pour définir des variables directement dans un playbook.
Par exemple, vous pouvez définir un fav_color variable et définissez sa valeur sur jaune comme suit :
---
- name: Working with variables
hosts: all
vars:
fav_color: yellow
Maintenant, comment utilisez-vous (référence) le fav_color variable? Ansible utilise le système de modèles Jinja2 pour travailler avec des variables. Il y aura un didacticiel dédié qui traite de Jinja2 dans cette série, mais pour l'instant, vous avez juste besoin de connaître les bases.
Pour obtenir la valeur de la fav_color variable; vous devez l'entourer d'une paire d'accolades comme suit :
My favorite color is {{ fav_color }}
Notez que si votre variable est le premier élément (ou le seul élément) de la ligne, l'utilisation de guillemets est obligatoire comme suit :
"{{ fav_color }} is my favorite color."
Écrivons maintenant un playbook nommé variables-playbook.yml qui met tout cela ensemble :
[[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 }}.
J'ai utilisé le débogage module avec le msg option du module pour imprimer la valeur de la fav_color variables.
Lancez maintenant le playbook et vous verrez votre couleur préférée s'afficher comme suit :
[[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
Créer des listes et des dictionnaires
Vous pouvez également utiliser des listes et des dictionnaires pour définir des variables à valeurs multiples. Par exemple, vous pouvez définir une liste nommée port_nums et définissez sa valeur comme suit :
vars:
port_nums: [21,22,23,25,80,443]
Vous auriez également pu utiliser la méthode suivante pour définir port_nums qui est équivalent :
vars:
port_nums:
- 21
- 22
- 23
- 25
- 80
- 443
Vous pouvez imprimer toutes les valeurs dans port_nums comme suit :
All the ports {{ port_nums }}
Vous pouvez également accéder à un élément de liste spécifique :
First port is {{ port_nums[0] }}
Notez que vous utilisez un index (position) pour accéder aux éléments de la liste.
Vous pouvez également définir un dictionnaire nommé users comme suit :
vars:
users:
bob:
username: bob
uid: 1122
shell: /bin/bash
lisa:
username: lisa
uid: 2233
shell: /bin/sh
Il existe deux manières différentes d'accéder aux éléments du dictionnaire :
- dict_name['key'] -> utilisateurs['bob']['shell']
- dict_name.key -> users.bob.shell
Notez que vous utilisez une clé pour accéder aux éléments du dictionnaire.
Vous pouvez maintenant modifier les variables-playbook.yml playbook pour montrer les listes et les dictionnaires en action :
[[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 }}
Vous pouvez maintenant exécuter le playbook pour afficher le deuxième élément dans port_nums et affichez l'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"
}
Inclusion de variables externes
Tout comme vous pouvez importer (ou inclure) des tâches dans un playbook. Vous pouvez également faire la même chose avec des variables. Autrement dit, dans un playbook, vous pouvez inclure des variables définies dans un fichier externe.
Pour illustrer, créons un fichier nommé myvars.yml qui contient nos port_nums liste et utilisateurs dictionnaire :
[[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
Lire l'histoire complète
Le reste de l'article est disponible uniquement pour les membres de LHB. Vous pouvez vous inscrire maintenant GRATUITEMENT pour lire le reste de cet article ainsi que l'accès à tous les messages réservés aux membres. Vous êtes également abonné à notre newsletter Linux bimensuelle.
S'abonnerVous avez déjà un compte ?Se connecter