带有端口转发的 Ansible 多主机

Posted

技术标签:

【中文标题】带有端口转发的 Ansible 多主机【英文标题】:Ansible multiple hosts with port forwarding 【发布时间】:2014-12-19 02:00:44 【问题描述】:

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

[all]

10.80.238.11:20003

10.80.238.11:20001

10.80.238.11:20007

10.80.238.11:20009

我正在尝试用剧本 ping 他们,但在这种情况下总是从第一个条目获得响应 10.80.238.11:20003 而不是其他人。身份验证已到位,无论我移动到哪个主机,我都会从它那里得到响应,但其他主机没有,我的剧本是:

---
- hosts: all

  remote_user: root

  gather_facts: no

  tasks:

  - name: test connection

    ping:

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

【问题讨论】:

那么这些虚拟机是在同一台主机上运行的吗?虚拟机没有自己的 IP 地址? - 你只是将主机上的一个端口转发到客户机上的某个端口,对吧? 不是虚拟机,每个端口都是实验室中的一个特定硬件刀片(服务器),并且具有只能从这个 10.80.238.11 服务器访问的 IP,这就是为什么我使用我的机器的端口转发来绕过这台中间机(10.80.238.11) 嘿@sohailsahi。您能否展示一下您如何指定@leucos 建议的解决方案的清单文件? 【参考方案1】:

我想你正在做的端口转发是针对 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 会自动创建它。

【讨论】:

以上是关于带有端口转发的 Ansible 多主机的主要内容,如果未能解决你的问题,请参考以下文章

VMWare虚拟机端口转发

vm虚拟机端口转发https

SSH 本地端口转发

iptables实现端口转发

将本地端口转发到远程主机

Linux-Windows 端口转发