在Ansible中,在一个角色中,我有这样的vars文件:
vars/
app1.yml
app2.yml每个文件包含特定于应用程序/网站的vars,如下所示:
name: app1
git_repo: https://github.com/philgyford/app1.git
# ...理想情况下,在不事先知道哪些应用程序有可变文件的情况下,我想得到一个名为apps的数组,如下所示:
apps:
- name: app1
git_repo: https://github.com/philgyford/app1.git
# ...
- name: app2
git_repo: https://github.com/philgyford/app2.git
# ...它将文件中的变量组合为一个。
我知道我可以像这样加载所有的变量文件:
- name: Load var files
with_fileglob:
- ../vars/*.yml
include_vars: '{{ item }}'但是,如果每个文件都有相同的变量名,它将覆盖以前的每一组变量。我看不到加载变量并将它们放入apps数组的方法。
如果这是让这样的事情成为可能的唯一方法的话,我愿意稍微重新安排一些事情。
发布于 2018-10-15 21:59:40
从Ansible v2.0开始,您可以这样做:
- name: merging hash_a and hash_b into hash_c
set_fact: hash_c="{{ hash_a|combine(hash_b) }}"在Ansible filters下检查更多内容-组合散列/字典(来自Jinja2)
https://stackoverflow.com/questions/35554415
复制相似问题