我有 2个环境,每个环境都有 3个服务器。第一个环境-称为ansible_env
-与可访问客户端 ansible_server
在服务器的同一网络中。
第二个环境env_a
可通过 jumpserver 访问,该服务器是其 3个服务器 master-a
。
这是库存文件 /etc/ansible/hosts
:
all:
children:
linux:
hosts:
slave1:
slave2:
master:
centos7sx64:
ansible_user: user
ansible_password: password
children:
env_a:
hosts:
master-a:
ansible_host: master
slave1-a:
ansible_host: slave1
slave2-a:
ansible_host: slave2
vars:
ansible_ssh_common_args: '-oProxyCommand="ssh -W %h:%p host -p 22"'
vars:
ansible_user: user
ansible_password: password
当我在env_a
上调用ansible时,会得到正确的值,,它们是由-a
附加的主机名,我在每个服务器上都添加了该主机名,但没有重新启动,因此我可以继续使用相同的主机名,并与其他环境中的主机名区分开来。。
$ ansible env_a -a 'hostname'
slave1-a | CHANGED | rc=0 >>
slave1-a
master-a | CHANGED | rc=0 >>
master-a
slave2-a | CHANGED | rc=0 >>
slave2-a
问题是,当在all
上调用它时,它将返回ansible_env
的相应服务器的值。
$ ansible all -a 'hostname'
master | CHANGED | rc=0 >>
master
master-a | CHANGED | rc=0 >>
master
slave1 | CHANGED | rc=0 >>
slave1
slave2 | CHANGED | rc=0 >>
slave2
centos7sx64 | CHANGED | rc=0 >>
centos7
slave2-a | CHANGED | rc=0 >>
slave2
slave1-a | CHANGED | rc=0 >>
slave1
P.S我可以正常使用与上述ProxyCommand
服务器相同的env_a
进行SSH,并且已经对其进行了测试。
这是ansible version 2.8.4 & 2.8.5
的行为。
这是一个错误,还是我错过了什么?