是否有可能/如何从其他 vars 文件中引入 vars 文件?

是否有可能/如何从其他 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

答案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

相关内容