Gibt es ein ansibles Modul, das prüft, ob sich ein Port nicht im Status LISTEN befindet?


8

Der Ansible-Modulindex wurde konsultiert, es wurde jedoch kein Modul gefunden, das prüft, ob ein Port verfügbar ist. Gibt es ein Modul, das dies unterstützt?

Was heißt availabledas

Verfügbar bedeutet, dass sich ein Port, z. B. 80nicht im Status LISTEN befindet. Das Folgende zeigt an, dass Port 111 nicht verfügbar ist.

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

Was ist das Ziel dieser Frage?

Ziel dieser Frage ist es, einen Weg zu finden, um einen Ansible-Lauf zu stoppen, wenn Port 80 bereits von einem anderen Prozess als certbot zugewiesen wurde. Für Certbot muss Port 80 verfügbar sein, andernfalls kann das Zertifikat nicht erneuert werden. Das Problem finden Sie hier .

Antworten:


11

Ich denke, Sie suchen das wait_forModul . Damit können Sie überprüfen und eine Aktion ausführen, wenn ein bestimmter Port verfügbar ist und mehr.


sollte der Staat stoppedbenutzt werden?
030

1
Wenn ich Ihren speziellen Anwendungsfall richtig verstehe - ja.
13dimitar

2

Basierend auf der Antwort von @ 13nilux wurde der folgende Code erstellt:

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

Wenn Port 80 lauscht, schlägt der Lauf fehl, wenn beispielsweise nginx lauscht:

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 wird seit langem in certbot umbenannt. Sie können den Prozess der Zertifikatserneuerung automatisieren, indem Sie einen Host konfigurieren, der eine Domäne (n) bedient, indem Sie certbot installieren und den Webserver für die Verarbeitung eines Verzeichnisses mit Authentifizierungstoken wie /.well-known/acme-challenge/für Domänen unter Let's Encrypt-signierte Zertifikate konfigurieren und dann Ansible Playbook für den manuellen Erneuerungsprozess verwenden oder Führen Sie den gleichen Befehl von cron aus.


Ja, aber was passiert, wenn Port 80 nicht verfügbar ist? Dann schlägt der Prozess der Zertifikatserneuerung fehl
030

Der manuelle Modus @ 030 erfordert keine Ports, da er manuell ist. httpMethode verwendet vorhandenen Webserver.
Chupasaurus

Wo wohnen die /path/to/http/authenticator.shund /path/to/http/cleanup.shwohnen? Vielleicht können Sie dies der Frage hinzufügen, um zu verhindern, dass diese Informationen verloren gehen, wenn der Link veraltet ist.
030

@ 030 Hierbei handelt es sich um benutzerdefinierte Skripts, die sich an einer beliebigen Stelle befinden können (mit Beispielinhalten). Die tatsächliche Implementierung kann jedoch je nach Methode und Webserverkonfiguration variieren.
Chupasaurus
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.