问题描述:当在Ansible playbook中使用group_vars定义组的变量时,有时可能会出现所有服务器都不根据预期运行playbook的问题,而是只有第二个服务器会运行。
这是因为Playbook在运行时优先使用主机名(inventory name)而不是组名称来标识主机(host),如果第一个服务器的主机名与第二个服务器相同,则第一个服务器将被忽略。
要解决此问题,您可以使用ansible_ssh_host变量来强制指定主机名,如下所示:
在inventory文件中,为组中的每个主机定义一个ansible_ssh_host变量:
[group_name]
server1 ansible_ssh_host=192.0.2.1
server2 ansible_ssh_host=192.0.2.2
然后在Playbook中使用该变量:
- hosts: group_name
tasks:
- name: Your task
command: your command
使用ansible_ssh_host变量可以确保Playbook在你设想的所有服务器上运行,而不仅仅是第二个服务器。