已查阅Ansible模块索引,但未找到检查端口是否可用的模块?是否有支持此功能的模块?

available是什么意思?

可用表示端口,例如80未处于监听状态。以下表明端口111不可用。

user@localhost ~ $ ss -nat
State      Recv-Q Send-Q Local Address:Port    Peer Address:Port              
LISTEN     0      128       *:111                   *:*


此问题的目的是什么?

该问题的目的是查找当端口80已经由certbot以外的其他进程分配时,一种停止Ansible运行的方法。 Certbot要求端口80可用,否则无法更新证书。可以在这里找到问题。

#1 楼

我认为您正在寻找wait_for模块。当某个端口可用或更多时,它将允许您检查并采取措施。

评论


应该使用停止状态?

– 030
17年5月5日在10:08

如果我正确理解您的特定用例-是的。

– 13dimitar
17年5月5日在10:23

#2 楼

基于@ 13nilux'的回答,已创建以下代码:
- name: Check whether port 80 is available
  wait_for:
    port: 80
    state: stopped
    timeout: 10


#3 楼

Letsencrypt已长期重命名为certbot。您可以通过以下方式来自动进行证书续订过程:配置主机,该主机为域提供服务,方法是安装certbot,并将Web服务器配置为在Let's Encrypted certs证书下将用于处理具有auth令牌的目录的域名作为/.well-known/acme-challenge/,然后使用Ansible手册进行手动续订或由cron运行相同的命令。

评论


是的,但是如果端口80不可用怎么办?然后证书更新过程失败

– 030
17年5月5日在9:45

@ 030手动模式不需要任何端口,因为它是手动的。 http方法使用现有的Web服务器。

–chupasaurus
17-6-5在12:35



/path/to/http/authenticator.sh和/path/to/http/cleanup.sh驻留在哪里?也许您可以将其添加到问题中,以防止不赞成使用该链接的信息丢失。

– 030
17年5月5日在14:10

@ 030这些是用户定义的脚本,可以在任何地方(提供示例内容),但是实际的实现方式可能因方法和Web服务器配置的不同而有所差异。

–chupasaurus
17年5月5日在15:17