当在Ansible中处理只有中继主机不同但具有相同地址的服务器时,可以在清单中进行分组
当使用Ansible来使用具有相同地址但具有不同中继主机的清单时。
产品
sv01 ansible_ssh_host=192.168.88.11
sv02 ansible_ssh_host=192.168.88.12
[all:vars]
ansible_ssh_common_args = -o "ProxyCommand ssh 192.0.2.100 -l root -W %h:%p"
舞台
sv01 ansible_ssh_host=192.168.88.11
sv02 ansible_ssh_host=192.168.88.12
[all:vars]
ansible_ssh_common_args = -o "ProxyCommand ssh 192.0.2.200 -l root -W %h:%p"
我认为`control_path` 的默认设置如下:
control_path = %(directory)s/ansible-ssh-%%h-%%p-%%r
最初连接的方的主机库中会创建一个像下面这样的ControlMaster套接字文件。
~/.ansible/cp/ansible-ssh-192.168.88.11-22-ore
~/.ansible/cp/ansible-ssh-192.168.88.12-22-ore
即使指定了其他的清单文件,也会使用这个套接字文件,导致错误地连接到错误的主机。
因此,您需要在以下两个库存之一中更改 ControlPath(或将其禁用)。
sv01 ansible_ssh_host=192.168.88.11
sv02 ansible_ssh_host=192.168.88.12
[all:vars]
ansible_ssh_common_args = -o "ProxyCommand ssh 192.0.2.200 -l root -W %h:%p" -o "ControlPath ~/.ssh/stage-%h-%r"