在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会根据内部规则选择要使用的值进行合并
参考: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
因此,将取决于定义变量的位置以及它们的合并方式。