现在我有了多个角色来加载一些os版本的特定变量:
- name: load CentOS 7 variable
include_vars: "CentOS-7.yml"
when:
- ansible_facts['distribution'] == "CentOS"
- ansible_facts['distribution_major_version'] == "7"
- name: load Ubuntu 18 variables
include_vars: "Ubuntu-18.yml"
when:
- ansible_facts['distribution'] == "Ubuntu"
- ansible_facts['distribution_major_version'] == "18"我希望有一个通用角色;如何用操作系统和版本的名称加载vars文件?有点像
- name: load OS specific variables
include_vars: "{{distribution}}-{{distribution_major_version}}.yml"发布于 2019-06-14 14:09:01
你差点就到了:
- name: load OS specific variables
include_vars: "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml"这与使用ansible_facts哈希相同,但更紧凑。以下是对应的内容:
- name: load OS specific variables
include_vars: "{{ ansible_facts['distribution'] }}-{{ ansible_facts['distribution_major_version'] }}.yml"请注意,如果需要的话,您可以更具体地使用 query加载vars。示例:
- name: look for the most specific os vars and drop to default
include_vars: "{{ item }}"
loop: "{{ query('first_found', { 'files': myfiles, 'paths': mypaths }) }}"
vars:
myfiles:
- "{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml"
- "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml"
- "{{ ansible_distribution }}.yml"
- "default.yml"
mypaths:
- vars
- someother/vars/dirhttps://stackoverflow.com/questions/56599258
复制相似问题