需要帮助来理解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)基于库存的变量
????
答案 0 :(得分:6)
Variable Precedence: Where Should I Put A Variable?部分陈述如下:
很多人可能会问变量如何覆盖另一个变量。 最终,Ansible的理念是,你知道在哪里更好 放一个变量,然后你必须少考虑它。
避免在47个地方定义变量“x”,然后提出问题 “哪个x被使用”。为什么?因为那不是Ansible的禅宗哲学 做事。
只有一座帝国大厦。一个蒙娜丽莎等图 在哪里定义变量,不要让它变得复杂。
如果同名的多个变量定义不同 他们以某种顺序获胜,这是:
- -e变量总是胜利
- 然后出现“最重要的一切”
- 然后是库存中定义的变量
- 然后发现了关于系统的事实
- 然后是“角色默认值”,这是最“默认”并且优先于所有内容。
上面的文档链接中有更多具体示例。