【问题标题】:Why Ansible facts not available in Roles section?为什么角色部分中没有 Ansible 事实?
【发布时间】:2017-04-17 14:34:32
【问题描述】:

问题

为什么诸如 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

【问题讨论】:

    标签: ansible ansible-facts ansible-role


    【解决方案1】:

    为什么诸如 ansible_distribution 之类的 Ansible 事实在角色部分不可用?

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

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


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

    【讨论】:

    • 非常感谢。是的,不是“play.yml”而是“somerole”。
    猜你喜欢
    • 2023-03-29
    • 2016-11-05
    • 2021-05-09
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    • 2015-05-21
    • 2017-08-02
    相关资源
    最近更新 更多