Rav*_*ure 5 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)基于库存的变量
????
变量优先级:我应该在哪里放置变量?Ansible的文档部分说明如下:
很多人可能会问变量如何覆盖另一个变量.最终,Ansible的理念是,你知道把变量放在哪里会更好,然后你必须少考虑它.
避免在47个位置定义变量"x",然后询问"哪个x被使用"的问题.为什么?因为这不是Ansible的禅宗做事哲学.
只有一座帝国大厦.一个蒙娜丽莎等,找出定义变量的位置,不要让它变得复杂.
如果在不同的地方定义了多个同名变量,它们会以某种顺序获胜,即:
- -e变量总是赢
- 然后是"最重要的一切"
- 然后是库存中定义的变量
- 然后是关于系统发现的事实
- 然后是"角色默认值",这是最"默认"并且优先于一切.
上面的文档链接中有更多具体的示例.