gpt4 book ai didi

ansible - 为什么剧本对组变量采用错误的值?

转载 作者:行者123 更新时间:2023-12-02 03:36:18 25 4
gpt4 key购买 nike

我对组变量有疑问。 示例:我有两个库存组 group_A 和 group_B,并且在 group_vars 中也有同名文件:

inventories/ 
hosts.inv
[group_A]
server1
server2
[group_B]
server3
server4
group_vars/
group_A - file
var_port: 9001
group_B - file
var_port: 9002

问题是当我执行时:

 ansible-playbook  playbooks/playbook.yml -i inventories/hosts.inv -l group_B

playbook 已在适当的服务器范围(server3、server4)中执行,但它从组变量文件 group_A 中获取变量。

    expected result:        var_port: 9002
in realty : var_port: 9001

ansible 2.4.2.0

BR奥列格

最佳答案

我包含了 ANSIBLE_DEBUG ,以及我发现的内容:

2018-05-03 15:23:23,663 p=129458 u=用户 | 129458 1525353803.66336:从/ansible/inventories/prod/group_vars/group_B.yml 加载数据2018-05-03 15:23:23,663 p=129458 u=用户 | 129661 1525353803.66060:在 run() 中 - 任务 00505680-eccc-d94e-2b1b-0000000000f42018-05-03 15:23:23,664 p=129458 u=用户 | 129661 1525353803.66458:调用 self._execute()2018-05-03 15:23:23,665 p=129458 u=用户 | 129458 1525353803.66589:从/ansible/inventories/prod/group_vars/group_A.yml

加载数据

在执行 playbook 时,ansible 会扫描文件夹 group_vars 中包含变量“var_port”的所有文件,最后一个将获胜......

您可以在另一个主题中找到: Ansible servers/groups in development/production

以及文档: http://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable

Note

Within any section, redefining a var will overwrite the previous instance. If multiple groups have the same variable, **the last one loaded wins**. If you define a variable twice in a play’s vars: section, the **2nd one wins**.

对我来说,现在不清楚如何管理配置文件。在这种情况下,我必须为每个组使用唯一的变量名称,但对于角色而言这是不可能的,或者当我调用剧本时我应该使用 include_vars 吗?

关于ansible - 为什么剧本对组变量采用错误的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50084758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com