我有多个主机的主机库存,每个主机都有端口转发,主机文件是:
[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
而不是其他条目。身份验证已经到位,无论我移动到第一位的主机我都得到了响应而不是其他人,我的剧本是:
---
- hosts: all
remote_user: root
gather_facts: no
tasks:
- name: test connection
ping:
知道怎么解决这个???
答案 0 :(得分:22)
我认为你转发的端口是用于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会自动创建它。