全部调用时,Ansible不会返回正确的输出

时间:2019-10-03 13:18:13

标签: ssh ansible ssh-tunnel

我有 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的行为。

这是一个错误,还是我错过了什么?

0 个答案:

没有答案