为什么ansible_distribution
等可靠事实在角色部分中不可用?
---
- name: Test
hosts: all
tasks:
- name: debug
debug:
msg: "{{ ansible_distribution }}" <----- Works
roles:
- "{{ ansible_distribution }}/somerole" <---- ERROR! 'ansible_distribution' is undefined
[defaults]
error_on_undefined_vars = True
答案 0 :(得分:2)
为什么
ansible_distribution
等可靠事实在角色部分中不可用?
因为在执行收集事实的roles
任务之前解析了游戏中的setup
字典。
那就是说,根据常识,你应该能够在你的任务中使用include_role
模块,但是也不可能使用事实作为角色名称(类似于this problem,但你可以使用我在那里建议的解决方法,即包含一个具有静态名称的角色,并使用when
条件来控制哪一个。)
通常,参考您的示例,角色旨在提供抽象级别,并且应该处理它们内部的架构差异,而不是在外部。