6

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

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

1) 变量

2) group_vars

3) 主机变量

4) 额外变量

5) 剧本中的 var_prompt

6) 任务中的 set_fact

7) 剧本 vars_files

8) 剧本变量

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

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

10) 包含的任务 include_vars

11) 基于库存的变量

???

4

1 回答 1

6

变量优先级:我应该把变量放在哪里?Ansible 文档的部分内容如下:

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

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

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


如果在不同的地方定义了多个同名变量,则按一定的顺序取胜,即:

  • -e 变量总是获胜
  • 然后是“大多数其他东西”
  • 然后是库存中定义的变量
  • 然后是关于系统的事实发现
  • 然后是“角色默认值”,这是最“默认”的,失去了一切的优先权。

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

于 2014-05-16T04:31:09.730 回答