Python 使用端口转发的Ansible多个主机

Python 使用端口转发的Ansible多个主机,python,networking,ansible,portforwarding,ansible-playbook,Python,Networking,Ansible,Portforwarding,Ansible Playbook,我有多台主机的主机清单,每台主机都有端口转发,主机文件为: [all] 10.80.238.11:20003 10.80.238.11:20001 10.80.238.11:20007 10.80.238.11:20009 我试图用一个剧本来敲打他们,但在这种情况下,总是从第一个条目得到响应10.80.238.11:20003而不是其他条目。身份验证已到位,无论我移动到哪个主机,我都会从该主机(而不是其他主机)得到响应,我的剧本是: --- - hosts: all remote

我有多台主机的主机清单,每台主机都有端口转发,主机文件为:

[all]

10.80.238.11:20003

10.80.238.11:20001

10.80.238.11:20007

10.80.238.11:20009
我试图用一个剧本来敲打他们,但在这种情况下,总是从第一个条目得到响应
10.80.238.11:20003
而不是其他条目。身份验证已到位,无论我移动到哪个主机,我都会从该主机(而不是其他主机)得到响应,我的剧本是:

---
- hosts: all

  remote_user: root

  gather_facts: no

  tasks:

  - name: test connection

    ping:

你知道如何解决这个问题吗?

我想你正在做的端口转发是针对SSH的

因此,您必须告诉ansible要连接到哪个ssh端口。问题是您的所有主机都具有相同的IP。因此,您必须使用主机名,以便Ansible能够区分它们

假设您将SSH端口转发到
2000X
的主机称为
hostX
,那么指定SSH端口和主机IP的正确语法为:

host3 ansible_ssh_port=20003 ansible_ssh_host=10.80.238.11
host1 ansible_ssh_port=20001 ansible_ssh_host=10.80.238.11
host7 ansible_ssh_port=20007 ansible_ssh_host=10.80.238.11
host9 ansible_ssh_port=20009 ansible_ssh_host=10.80.238.11
然后,您可以发布:

ansible host3 -m ping 
甚至:

ansible all -m ping

请注意,您不应该创建
all
组,因为Ansible是自动创建的。

那么这些是在同一主机上运行的VM?虚拟机没有自己的IP地址您只是将主机上的一个端口转发到来宾机上的某个端口,对吗?不是VMs,每个端口都是实验室中的一个特定硬件刀片(服务器),并且具有只能从这个10.80.238.11服务器访问的IP,这就是为什么我使用从我的机器的端口转发绕过这个中间机器(10.80.238.11)的原因。请出示您如何指定@leucos建议的解决方案的清单文件,好吗?