Назад | Перейти на главную страницу

Возможно ли / как включить файлы vars из других файлов vars?

Я знаю, что можно включать файлы задач / обработчиков в другие похожие файлы с помощью таких строк, как следующие

- name: Configure django
  include: django.yml
- name: Configure nginx reverse proxy
  include: nginx.yml

Но согласно документация, не похоже, что эта функция существует для файлов в vars/ или defaults/. Проблема, с которой я столкнулся, заключается в том, что у меня есть множество переменных, которые изменяют принципиально разные аспекты роли, но все переменные просто разделены на разные разделы в одном файле (defaults/main.yml) с помощью комментариев (например, # BEGIN RoR config vars ... # END RoR config vars ).

Он очень уродливый и громоздкий, но, что более важно, он не модульный и значительно усложняет его обслуживание.

Редактировать: Поскольку кто-то проголосовал за закрытие, потому что посчитал это неясным ...

Это похоже на то, что у меня есть (все в одном файле):

## Database variables

database:
  user: bob
  pass: bobs_pass
  host: dbhost

## Server variable

server:
  su_user: nobody
  max_connections: 50

Предоставление ls -R вывода:

./defaults/main.yml

И вот что я бы предпочел:

- name: Include database vars
  include: database.yml
- name: Include app server vars
  include: server.yml

С выходом ls -R:

./defaults/main.yml
./defaults/database.yml
./defaults/server.yml

Почему нет? Я делаю это все время в roles/whatever/tasks/main.yml с участием include_vars:

- include_vars: whatever_os_{{ ansible_distribution }}_{{ ansible_distribution_major_version }}.yml

Переменные загружаются из vars каталог роли. В playbook путь относительно playbook, или вы можете использовать абсолютный путь.

В случае вышеупомянутого у меня в этих файлах есть переменные, специфичные для ОС:

$ ls -l roles/whatever/vars
total 48
lrwxrwxrwx. 1 error error  24 Feb  2 21:56 whatever_os_CentOS_5.yml -> whatever_os_RedHat_5.yml
lrwxrwxrwx. 1 error error  24 Feb  2 21:56 whatever_os_CentOS_6.yml -> whatever_os_RedHat_6.yml
lrwxrwxrwx. 1 error error  24 Feb  2 21:56 whatever_os_CentOS_7.yml -> whatever_os_RedHat_7.yml
-rw-rw-r--. 1 error error  81 May  9 23:17 whatever_os_Debian_6.yml
-rw-rw-r--. 1 error error  81 May  9 23:17 whatever_os_Debian_7.yml
-rw-rw-r--. 1 error error  81 May  9 23:17 whatever_os_Debian_8.yml
-rw-r--r--. 1 error error 173 Apr 28 14:59 whatever_os_Fedora_20.yml
-rw-r--r--. 1 error error 173 Mar 22 01:51 whatever_os_Fedora_21.yml
-rw-r--r--. 1 error error 173 May  9 23:18 whatever_os_Fedora_22.yml
-rw-r--r--. 1 error error 188 Mar 22 01:51 whatever_os_RedHat_5.yml
-rw-r--r--. 1 error error 191 Mar 22 01:51 whatever_os_RedHat_6.yml
-rw-r--r--. 1 error error 189 Mar 22 01:51 whatever_os_RedHat_7.yml
-rw-rw-r--. 1 error error  81 May  9 23:17 whatever_os_Ubuntu_10.yml
-rw-rw-r--. 1 error error  81 May  9 23:17 whatever_os_Ubuntu_12.yml
-rw-rw-r--. 1 error error  81 May  9 23:17 whatever_os_Ubuntu_14.yml