Я знаю, что можно включать файлы задач / обработчиков в другие похожие файлы с помощью таких строк, как следующие
- 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