对于清单中的相同IP地址,可以具有不同的组名称

问题描述 投票:0回答:1

在Ansible主机清单中,我的文件在下面。

[all:vars]
ansible_connection=ssh
ansible_user="{{ username }}"
ansible_ssh_pass="{{ password }}"

[server_1]
125.23.49.13

[server_2]
125.23.49.13

[server_3]
145.33.39.43

我如何像server_1或server_2那样结合使用125.23.49.13的IP地址,因为我需要这种设计,因为我将从jenkins传递主机名和组变量位置的值。但是,组变量在不同的位置具有不同的值,但是主机ip地址具有相同的值。

ansible ansible-inventory
1个回答
0
投票

由于您在多个组中具有相同的主机,并且您的变量在不同的位置具有不同的值,因此可以在执行播放之前进行“合并”。

如果主机是多个组的成员,则Ansible将从所有这些组中读取变量值。如果您将不同的值分配给不同组中的相同变量,则Ansible会根据内部规则选择要使用的值进行合并

参考:https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html

现在,在合并期间,以下是官方文档:

默认情况下,在运行播放之前,默认变量已合并/展平到特定主机

默认情况下,Ansible会覆盖变量,包括为组和/或主机定义的变量(请参见DEFAULT_HASH_BEHAVIOUR)。顺序/优先顺序是(从最低到最高):

  • 所有组(因为它是所有其他组的“父母”)
  • 父组
  • 子组
  • 主机

默认情况下,Ansible按字母顺序合并处于相同父级/子级的组,最后加载的组将覆盖先前的组

参考:https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#how-we-merge

因此,将取决于定义变量的位置以及它们的合并方式。

© www.soinside.com 2019 - 2024. All rights reserved.