ポートがLISTEN状態でないかどうかをチェックするansibleモジュールはありますか?


8

Ansibleモジュールインデックスを調べましたが、ポートが利用可能かどうかをチェックするモジュールが見つかりませんでしたか?これをサポートするモジュールはありますか?

どういうavailable意味ですか?

利用可能とは、ポートが、たとえば80LISTEN状態でないことを意味します。以下は、ポート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が使用可能であることを必要とします。そうでない場合、証明書は更新できません。問題はここにあります

回答:


11

あなたはwait_forモジュールを探していると思います。これにより、特定のポートが使用可能になったときなどに、チェックしてアクションを実行できます。


状態stoppedを使用する必要がありますか?
030

1
私があなたの特定のユースケースを正しく理解しているなら-はい。
13 dimitar 2017年

2

@ 13niluxの回答に基づいて、次のコードが作成されました。

- name: Check whether port 80 is available
  wait_for:
    port: 80
    state: stopped
    timeout: 10

ポート80がリッスンしているときに、たとえばnginxがリッスンしている場合、実行は失敗します。

TASK [role_under_test : Check whether port 80 is available] ********************

fatal: [localhost]: FAILED! => {"changed": false, "elapsed": 10, "failed": true, "msg": "Timeout when waiting for 127.0.0.1:80 to stop."}

 [WARNING]: Could not create retry file

'/etc/ansible/roles/role_under_test/tests/test.retry'.         [Errno 30] Read-

only file system: u'/etc/ansible/roles/role_under_test/tests/test.retry'

-1

Letsencryptは、長い間certbotに名前が変更されています。あなたはcertbotをインストールし、として認証トークンとディレクトリを処理するためのWebサーバーを構成することにより、ドメイン(複数可)を提供ホスト構成することにより、証明書の更新プロセスを自動化することができ/.well-known/acme-challenge/ためAnsible脚本を使用して、その後、レッツ・暗号化・署名certsの下のドメインのを手動で更新プロセスまたはcronで同じコマンドを実行します。


ええ、でもポート80が利用できない場合はどうなりますか?次に、証明書の更新プロセスが失敗します
030

@ 030手動モードは手動なので、ポートを必要としません。httpメソッドは既存のWebサーバーを使用します。
チュパサウルス2017年

とはどこに/path/to/http/authenticator.shあり/path/to/http/cleanup.shますか?おそらくこれを質問に追加して、リンクが廃止された場合にその情報が失われるのを防ぐことができます。
030

@ 030これらはユーザー定義のスクリプトであり、どこにでも(サンプルコンテンツを提供して)配置できますが、実際の実装はメソッドやWebサーバーの構成によって異なる場合があります。
チュパサウルス2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.