我知道可以通过如下所示的行将任务/处理程序文件包含在其他类似的文件中
- name: Configure django include: django.yml - name: Configure nginx reverse proxy include: nginx.yml
但根据文档 ,似乎这个function存在于vars/或defaults/下的文件。 我面临的问题是,我有很多variables,从根本上修改angular色的不同方面,但所有的variables只是在同一个文件( defaults/main.yml )使用注释分成不同的部分(例如# BEGIN RoR config vars … # END RoR config vars )。
这是非常丑陋和笨拙的,但更重要的是它不是模块化的,它使得维护更困难。
编辑:由于有人投票closures,因为他们觉得这不清楚…
这与我所拥有的类似(全部在一个文件中):
## 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
variables从angular色的vars目录加载。 在剧本中,path是相对于剧本的,或者你可以使用绝对path。
在上面的情况下,我在这些文件中具有特定于操作系统的variables:
$ 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