首页 文章

需要帮助来了解Ansible变量执行的工作流程序列

提问于
浏览
5

需要帮助来理解Ansible任务或剧本中Ansible变量执行的工作流程序列,

当我们使用所有这些时,最后使用哪个变量..

1)vars

2)group_vars

3)host_vars

4)extra_vars

5)playbook中的var_prompt

6)任务中的set_fact

7)playbooks vars_files

8)playbooks vars

8)角色包括vars目录 - roles / foo / vars / main.yml

9)角色定义的变量 - {role:foo,param1:1000,param2:2000,tags:['foo','bar']}

10)任务包括include_vars

11)基于库存的变量

????

1 回答

  • 6

    Ansible的文档Variable Precedence: Where Should I Put A Variable?部分说明如下:

    很多人可能会问变量如何覆盖另一个变量 . 最终,Ansible的理念是,你知道把变量放在哪里会更好,然后你必须少考虑它 . 避免在47个位置定义变量“x”,然后询问“哪个x被使用”的问题 . 为什么?因为这不是Ansible的禅宗做事哲学 . 只有一座帝国大厦 . 一个蒙娜丽莎等,找出定义变量的位置,不要让它变得复杂 .


    如果在不同的地方定义了多个相同名称的变量,它们会以某种顺序获胜,即:-e变量总是胜利然后“大多数其他”然后是库存中定义的变量然后是关于系统发现的事实然后“角色默认值”,这是最“默认”并且优先于一切 .

    上面的文档链接中有更多具体的示例 .

相关问题