12 Stimmen

Ansible Playbook zum Ausführen von Shell-Befehlen

Ich bin kürzlich in Ansible für einen meiner Server eingetaucht und fand es wirklich interessant und zeitsparend. Ich betreibe einen dedizierten Ubuntu-Server und habe eine Reihe von Webanwendungen geschrieben in Python und ein paar in PHP konfiguriert. Für Python verwende ich uwsgi als HTTP-Gateway. Ich habe Shell-Skripte geschrieben, um einige Prozesse zu starten/neu zu starten, um die Instanz einer bestimmten Webanwendung auszuführen. Was ich jedes Mal tun muss, ist, mich per SSH zu verbinden, zu dieser spezifischen Anwendung zu navigieren und das Skript auszuführen.

WAS ICH BRAUCHE

Ich habe versucht, einen Weg zu finden, um ein Ansible-Playbook zu schreiben, um all das von meinem persönlichen Computer mit einer Befehlszeile zu erledigen, aber ich habe keine Ahnung, wie das geht. Ich habe keine sehr erklärende (für Anfänger) Dokumentation oder Hilfe im Internet gefunden.

FRAGE

Wie kann ich mit einem Ansible-Playbook Nginx neu starten? Wie kann ich einen Prozess anhand der Prozess-ID beenden?

14voto

leucos Punkte 16781

Du musst nicht einmal ein Handbuch verwenden, um das zu tun :

  • Neustarten von nginx :

ansible your_host -m service -a 'name=nginx state=restarted'

(siehe service module)

  • Einen Prozess anhand der Prozess-ID beenden

ansible your_host -m command -a 'kill -TERM your_pid'

(Signal anpassen und pkill/killall verwenden, wenn Sie einen Namen abgleichen müssen; siehe command module)

Allerdings würde ich nicht sagen, dass ansible glänzt, wenn man es nur für Ad-hoc-Befehle verwendet.

Wenn Sie ein Tutorial benötigen, um mit Playbooks zu beginnen, gibt es eines hier.

Jetzt, wenn Sie diese (der offizielle Name für Service, Befehle usw. sind Module) in ein Playbook (nennen wir es playbook.yml) einfügen möchten, können Sie einfach :

- hosts: webappserver
  tasks:
    - name: Stoppt was auch immer
      command: kill -TERM your_pid
      notify:
        - Restart nginx

    - name: Eine weitere Aufgabe
      command: echo "Mache, was immer du willst"

  handlers:
    - name: Restart nginx
      service: name=nginx state=restarted

Erstellen Sie eine Bestandsdatei (hosts), die enthält :

# webappserver sollte aufgelöst werden !
webappserver

Aufruf mit :

ansible playbook.yml -i hosts

und es sollte funktionieren.

Dies ist alles sehr grundlegend und kann leicht verstanden werden, indem man die Dokumentation oder jedes beliebige Tutorial liest.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X