Ansible多主机端口转发

16

我有一个包含多个主机端口转发的主机清单,主机文件如下:

[all]

10.80.238.11:20003

10.80.238.11:20001

10.80.238.11:20007

10.80.238.11:20009

我试图通过一个playbook来ping他们,但总是从第一个条目 10.80.238.11:20003 得到响应,而不是其他的。认证已经完成,无论我将主机移动到第一位,我都会从它那里得到响应,但不是从其他主机,我的playbook如下:

---
- hosts: all

  remote_user: root

  gather_facts: no

  tasks:

  - name: test connection

    ping:

有什么想法如何解决这个问题吗???


那么这些是在同一主机上运行的虚拟机吗?虚拟机没有自己的IP地址吗?- 你只是将主机上的某个端口转发到客户端的某个端口,对吗? - Alex Woolford
不是虚拟机,每个端口都是实验室中特定的硬件刀片(服务器),并且具有仅从此10.80.238.11服务器访问的IP地址。这就是为什么我正在使用端口转发从我的计算机绕过中间机器(10.80.238.11)的原因。 - sohail sahi
嘿@sohailsahi。你能展示一下你是如何按照@leucos建议的解决方案来指定库存文件的吗? - Tasdik Rahman
1个回答

32

我猜测你所做的端口转发是为了SSH。

因此,你需要告诉Ansible连接到哪个SSH端口。问题在于所有主机都具有相同的IP地址。所以你必须使用主机名来区分它们,这样Ansible就可以区分它们。

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

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会自动创建它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接