3

问题

ansible_distribution为什么角色部分中没有诸如 Ansible 的事实?

---
- name: Test
  hosts: all
  tasks:
    - name: debug
      debug:
        msg: "{{ ansible_distribution }}" <----- Works

  roles:
    - "{{ ansible_distribution }}/somerole" <---- ERROR! 'ansible_distribution' is undefined

ansible.cfg

[defaults]
error_on_undefined_vars = True
4

1 回答 1

2

ansible_distribution为什么角色部分中没有诸如 Ansible 的事实?

因为roles戏剧中的字典在执行setup收集事实的任务之前被解析。

也就是说,根据常识,您应该能够include_role在您的任务中使用模块,但是在那里也不可能使用事实作为角色名称(类似于这个问题,但您可以使用我在那里建议的解决方法,即包含一个角色使用静态名称并使用when条件来控制哪个)。


通常,参考您的示例,角色旨在提供抽象级别,并且应该处理它们内部而不是外部的架构差异。

于 2017-04-17T01:48:47.280 回答