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

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)基于库存的变量

????

Mxx*_*Mxx 6

变量优先级:我应该在哪里放置变量?Ansible的文档部分说明如下:

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

避免在47个位置定义变量"x",然后询问"哪个x被使用"的问题.为什么?因为这不是Ansible的禅宗做事哲学.

只有一座帝国大厦.一个蒙娜丽莎等,找出定义变量的位置,不要让它变得复杂.


如果在不同的地方定义了多个同名变量,它们会以某种顺序获胜,即:

  • -e变量总是赢
  • 然后是"最重要的一切"
  • 然后是库存中定义的变量
  • 然后是关于系统发现的事实
  • 然后是"角色默认值",这是最"默认"并且优先于一切.

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