我知道可以通过以下方式将任务/处理程序文件包含在其他类似文件中
- 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
答案1
为什么不呢?我总是这样roles/whatever/tasks/main.yml
做包含变量:
- include_vars: whatever_os_{{ ansible_distribution }}_{{ ansible_distribution_major_version }}.yml
变量从vars
角色的目录中加载。在剧本中,路径是相对于剧本的,或者您可以使用绝对路径。
在上述情况下,我在这些文件中拥有特定于操作系统的变量:
$ 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