首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有os和版本名称的不可用include_vars文件

带有os和版本名称的不可用include_vars文件
EN

Stack Overflow用户
提问于 2019-06-14 13:31:00
回答 1查看 420关注 0票数 1

现在我有了多个角色来加载一些os版本的特定变量:

代码语言:javascript
复制
- 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文件?有点像

代码语言:javascript
复制
- name: load OS specific variables
  include_vars: "{{distribution}}-{{distribution_major_version}}.yml"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-14 14:09:01

你差点就到了:

代码语言:javascript
复制
- name: load OS specific variables
  include_vars: "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml"

这与使用ansible_facts哈希相同,但更紧凑。以下是对应的内容:

代码语言:javascript
复制
- name: load OS specific variables
  include_vars: "{{ ansible_facts['distribution'] }}-{{ ansible_facts['distribution_major_version'] }}.yml"

请注意,如果需要的话,您可以更具体地使用 query加载vars。示例:

代码语言:javascript
复制
- 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/dir
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56599258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档