测试是否可以从主机访问服务器并使用Ansible打开端口

时间:2016-09-30 21:30:41

标签: ansible

我想测试我配置的主机是否可以到达特定服务器并连接到特定的TCP端口。如果它不能播放剧本失败。

我该怎么做?

2 个答案:

答案 0 :(得分:12)

wait_for模块。
要检查target.host是否可以访问remote.host:8080

- hosts: target.host
  tasks:
    - wait_for: host=remote.host port=8080 timeout=1
    - debug: msg=ok

文档中还有很多其他示例。

答案 1 :(得分:0)

使用 wait_for 没问题,但它需要服务实际运行并给出回复。

如果您只想检查防火墙中的端口是否打开,可以使用curl

- name: Check if host is reachable
  shell:
    cmd: "/usr/bin/curl --connect-timeout 10 --silent --show-error remote.host:8080"
    warn: no
    executable: /bin/bash 
  register: res
  failed_when: res.rc in [28] or res.stderr is search("No route to host")

当端口打开但服务没有运行时,您会得到一个 curl: (7) Failed connect to 10.192.147.224:27019; Connection refused",您认为可以。

被防火墙阻止的连接将返回 curl: (28) Connection timed out after 10001 milliseconds