Ansible:合并2个组中的服务器变量不起作用

Ansible:合并2个组中的服务器变量不起作用,ansible,ansible-2.x,ansible-inventory,Ansible,Ansible 2.x,Ansible Inventory,我使用的是ansible 2.9.6,目前我只有一台服务器,但它位于主机文件的两个组内。我为每个应用不同防火墙规则的组配置了ufw,当我运行“db_服务器”组的playbook时,它会从“web_服务器”组中获取VAR(ufw_规则)。考虑到服务器具有相同的名称,我希望vars至少能够合并。但是,如果我在相同的服务器组中为它们指定不同的名称“node_w”和“node_d”,那么它将与该组的相应变量一起工作。我没有导致问题的主机变量集 [web_servers] node1 ansible_ho

我使用的是ansible 2.9.6,目前我只有一台服务器,但它位于主机文件的两个组内。我为每个应用不同防火墙规则的组配置了ufw,当我运行“db_服务器”组的playbook时,它会从“web_服务器”组中获取VAR(ufw_规则)。考虑到服务器具有相同的名称,我希望vars至少能够合并。但是,如果我在相同的服务器组中为它们指定不同的名称“node_w”和“node_d”,那么它将与该组的相应变量一起工作。我没有导致问题的主机变量集

[web_servers]
node1 ansible_host=123.123.123.1

[db_servers]
node1 ansible_host=123.123.123.1

web_servers.yml
ufw_rules:
    - { service: http, port: 80, interface: '{{ ufw_default_public_interface }}', direction: '{{ ufw_service_default_direction }}', proto: tcp }
    - { service: https, port: 443, interface: '{{ ufw_default_public_interface }}', direction: '{{ ufw_service_default_direction }}', proto: tcp }

db_servers.yml
ufw_rules:
    - { service: mysql, port: 3306, interface: '{{ ufw_default_private_interface }}', direction: '{{ ufw_service_default_direction }}' }
关于为什么不获取相应的组变量,或者至少不使用相同的服务器名称合并它们,您有什么想法吗

问:“希望vars合并。”

A:看。比如说

shell>ANSIBLE\u HASH\u behavior=merge ANSIBLE playbook playbook.yml
将合并词典。引述:

它不影响值为标量(整数、字符串)或数组的变量


如果你发布这个用例,我相信会有一个不需要合并变量的解决方案。让我们看看这个用例。可能是重复的?实际上我甚至不希望使用web_servers组ufw_规则,只是在运行db_服务器的playbook时使用db_服务器,将每个组中的同一服务器更改为不同的名称可以解决问题,但这不应该是正确的?我在ansible.cfg文件中设置了此规则,所以我仍在寻找,我将尝试一个mcve并发布它