файл ansible include_vars с именем операционной системы и версией - PullRequest
1 голос
/ 14 июня 2019

Теперь у меня есть несколько ролей для загрузки некоторых переменных, специфичных для os-версии:

- name: load CentOS 7 variable
  include_vars: "CentOS-7.yml"
  when:
    - ansible_facts['distribution'] == "CentOS"
    - ansible_facts['distribution_major_version'] == "7"

- name: load Ubuntu 18 variables
  include_vars: "Ubuntu-18.yml"
  when:
    - ansible_facts['distribution'] == "Ubuntu"
    - ansible_facts['distribution_major_version'] == "18"

Я бы хотел иметь общую роль; Как я могу загрузить файл Vars с названием ОС и версии? Что-то вроде

- name: load OS specific variables
  include_vars: "{{distribution}}-{{distribution_major_version}}.yml"

1 Ответ

0 голосов
/ 14 июня 2019

Вы были почти там:

- name: load OS specific variables
  include_vars: "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml"

Это то же самое, что и использование хеша ansible_facts, но более компактно.Вот эквивалент:

- name: load OS specific variables
  include_vars: "{{ ansible_facts['distribution'] }}-{{ ansible_facts['distribution_major_version'] }}.yml"

Обратите внимание, что вы можете указать более конкретные загрузочные переменные с помощью first_found запроса , если это необходимо.Пример:

- name: look for the most specific os vars and drop to default
  include_vars: "{{ item }}"
  loop: "{{ query('first_found', { 'files': myfiles, 'paths': mypaths }) }}"
  vars:
    myfiles:
      - "{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml"
      - "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml"
      - "{{ ansible_distribution }}.yml"
      - "default.yml"
    mypaths:
      - vars
      - someother/vars/dir

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...