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: Prompt Résultat

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.


Liens utiles: Variables, Prompt, Les bases