Wie man service-status von Ansible?
Möchte ich, um service wie redis-server
running status von Ansible.
Ich weiß, wie Sie Ansible service-Modul zu stoppen oder starten Sie den system-service. Aber wie bekomme ich den aktuellen service-status?
Beschreiben Sie Ihre Aufgabe. Sie in der Regel will dir nur sagen, ansible, wie Sie wollen Dinge sein und nicht Abfragen, alles von Hand, z.B.:
Das ist richtig, aber die
service: name=httpd state=started
.Das ist richtig, aber die
service
Modul ist die fehlende Unterstützung für einen Schlüssel verwenden-Fall: zum starten/stoppen/aktivieren/deaktivieren eines Dienstes , wenn, und nur wenn es vorhanden ist. Für diesen Fall verwenden, und möglicherweise andere, ist es notwendig, die Abfrage des status eines Dienstes.InformationsquelleAutor Moxmi | 2016-08-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
command
Modul mitservice redis-server status
und analysieren stdout.Oder verwenden Sie gepatcht service-Modul.
service redis-server status
mit diesem Befehl wird haben unterschiedliche Ergebnis auf verschiedenen OS.Diese gepatcht ist besser, aber ich will es erreichen, indem ich mich...aber ich konnte nicht finden, wo ist der Eingang
ich Brauch ein Modul, und es behoben.
InformationsquelleAutor Konstantin Suvorov
Können Sie auch die service_facts Modul.
Beispiel:
Beispiel-Ausgabe:
debug: var: firewall_status.ansible_facts.services.firewalld.service
Ergebnisse in"VARIABLE IS NOT DEFINED!"
nennen Sie es wie:
var: firewall_status.ansible_facts.services['firewalld.service']
InformationsquelleAutor Jay Taylor
Würden Sie in der Regel nicht tun Sie dies mit Ansible. Ansible soll für deklarativ zu definieren, wie Sie möchten, dass ein server Aussehen.
Als solche würden Sie in der Regel tun Sie nur so etwas wie:
Könnten Sie Dinge tun, die bedingt so:
Neu zu starten, Redis, wenn die Konfiguration geändert hat, aber es wäre selten zu brauchen, um zu überprüfen, ob ein Dienst ausgeführt wird.
In der absoluten Fall, dass Sie brauchen, um zu überprüfen, ob ein Dienst ausgeführt wird (und ich würde stark vermuten, dass Sie wieder darüber nachdenken, Ihre Ansible Rolle/playbook) dann könnte man immer berappen:
Thx, ich Schreibe ein customed-Modul, um es zu lösen.
InformationsquelleAutor ydaetskcoR
Führen Sie einfach die Aufgabe
service: name=httpd state=started
mit der option--check
. Dies sagt Ihnen, ob der service gestartet werden muss, was bedeutet, dass es down ist. Wenn die Aufgabe zeigt keine Veränderung, es wird schon.Beispiel service ist down,
changed
ist wahr, weil es gestartet werden muss:Beispiel-Dienst verfügbar ist,
change
ist falsch, weil nichts getan werden müssen:InformationsquelleAutor ceving
Persönlich, ich mag, um irgendeine Art von Unterstützung Playbooks für immer den status der meine Dienste in meinen Umgebungen und in der Lage sein, um Sie neu zu starten etc.
Werde ich daher auf der einen Seite den Befehl Modul-wie empfohlen von Konstantin Suvorov aber zusätzlich werde ich auch prüfen, die zu erwartenden port(s), um sicherzustellen, dass alle erforderlichen ports sind, und mein Dienst arbeitet wie erwartet.
Dies würde so Aussehen in deinem Fall:
Den changed_when wird nur verwendet, weil das module-Kommando wird immer auf "true" geändert, obwohl es nur eine nur-lese-Befehl.
InformationsquelleAutor Lorex
können Sie dies tun, indem Sie ansible AD-HOC-Befehl:
InformationsquelleAutor dushyant
Einem sehr kurzen Programm für die überprüfung der services mit ansible -
InformationsquelleAutor linux.cnf