Blog CP2i Ansible,Automatisation Chargement de variables en fonction de l’OS/Distribution dans Ansible

Chargement de variables en fonction de l’OS/Distribution dans Ansible

Parfois, on aimerait charger un fichier de variables ou une tâche en fonction de l’OS ou de la distribution sur laquelle on déploie, sans pour autant changer le nom des variables.

Je vous présente ici une méthode élégante de choisir un fichier de configuration/tâche dans Ansible:

- name: Include distribution specific variables
  include_vars: "{{ lookup('first_found', params) }}"
  vars:
    params:
      files:
        - "{{ ansible_facts.distribution }}-{{ ansible_facts.distribution_major_version }}.yml"
        - "{{ ansible_facts.os_family }}-{{ ansible_facts.distribution_major_version }}.yml"
        - "{{ ansible_facts.distribution }}.yml"
        - "{{ ansible_facts.os_family }}.yml"
        - default.yml
      paths:
        - "{{ role_path }}/vars"

- name: Include distribution specific tasks
  include_tasks: "{{ lookup('first_found', params) }}"
  vars:
    params:
      files:
        - "{{ ansible_facts.distribution }}-{{ ansible_facts.distribution_major_version }}.yml"
        - "{{ ansible_facts.os_family }}-{{ ansible_facts.distribution_major_version }}.yml"
        - "{{ ansible_facts.distribution }}.yml"
        - "{{ ansible_facts.os_family }}.yml"
        - default.yml
      paths:
        - "{{ role_path }}/tasks"

Le first_found chargera donc le premier fichier trouvé correspondant aux critères mentionnés, dans l’ordre, de la liste params.

Elégant non ?

Répondre

En lien avec cet article