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

时间:2014-05-15 11:28:48

标签: ansible ansible-playbook

需要帮助来理解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 个答案:

答案 0 :(得分:6)

Ansible文档的

Variable Precedence: Where Should I Put A Variable?部分陈述如下:

  

很多人可能会问变量如何覆盖另一个变量。   最终,Ansible的理念是,你知道在哪里更好   放一个变量,然后你必须少考虑它。

     

避免在47个地方定义变量“x”,然后提出问题   “哪个x被使用”。为什么?因为那不是Ansible的禅宗哲学   做事。

     

只有一座帝国大厦。一个蒙娜丽莎等图   在哪里定义变量,不要让它变得复杂。


  

如果同名的多个变量定义不同   他们以某种顺序获胜,这是:

     
      
  • -e变量总是胜利
  •   
  • 然后出现“最重要的一切”
  •   
  • 然后是库存中定义的变量
  •   
  • 然后发现了关于系统的事实
  •   
  • 然后是“角色默认值”,这是最“默认”并且优先于所有内容。
  •   

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