Après la découverte de Ansible, nous allons maintenant voir les variables.
Lien du role utilisé dans ce guide: Github
Ansible supporte deux types de variables : les types primitifs et les dictionnaires. Pour accéder à une variable dans un Playbook ou dans un Template, il faut utiliser {{ variable }}
({{ variable['field1'] }}
pour un dictionnaire).
Les variables peuvent êtres définies de plusieurs façon. Dans un playbook, par exemple:
---
- hosts: webserver
remote_user: root
vars:
variable: test
dico:
field1: foo
field2: bar
roles:
- var
… ou directement dans un rôle. Il est aussi possible de demander à l’utilisateur une variable avec la commande prompt:
---
- hosts: webserver
remote_user: root
vars:
variable: test
dico:
field1: foo
field2: bar
vars_prompt:
- name: "variable_prompt"
prompt: "Foo ?"
roles:
- var
Avec le role “var” (voir sur GitHub) nous obtenons le debug suivant:
Le dernier moyen que nous ayons d’envoyer une variable est par la ligne de commande :
$ ansible-playbook -i hosts playbook.yml --extra-vars "cmd_var=Ma_variable_à_moi"
En plus de nos variables, nous pouvons accéder aux variables qu’Ansible nous fournit, comme l’ip d’une machine ou son OS mais aussi celles d’autres machines de notre groupe d’hosts ce qui peut devenir bien pratique pour du monitoring (ajout de machines sur un master par exemple). Ansible utilise Jinja2, nous en parlerons dans le prochain guide sur les conditions. Pour plus d’informations, la doc d’Ansible est extrêmement bien faite.