当在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"
广告
将在 10 秒后关闭
bannerAds