Die Ansible Become-Anweisung zum Ausführen von Befehlen als angegebener Benutzer

Ansible Become Directive Run Commands



Mit Ansible können Sie verschiedene Operationen auf Remote-Rechnern mit Rohbefehlen oder Ansible-Playbooks ausführen. Standardmäßig wird ein Ansible-Playbook auf dem Remote-Host als derselbe Benutzer auf dem Ansible-Controller ausgeführt. Das heißt, wenn Sie einen Befehl als ein anderer Benutzer auf dem Remote-Rechner ausführen müssen, müssen Sie ihn explizit in Ihrem Ansible-Playbook angeben.

Um die Funktionalität zum Ausführen von Befehlen als anderer Benutzer zu implementieren, müssen Sie die in Linux-Systemen verfügbare Sudo-Funktion verwenden. Die Ansible-Werde-Direktive ermöglicht es Ihnen, Befehle als der angegebene Benutzer auszuführen.







Die Informationen des Benutzers werden in einem Ansible-Playbook unter Verwendung der Variablen 'werde' angegeben, z.



So führen Sie Ansible Tasks als Root aus

Um einen bestimmten Befehl als Root-Benutzer in Ansible auszuführen, können Sie die Anweisung 'werde' implementieren und den Wert auf 'true' setzen. Dadurch wird Ansible angewiesen, beim Ausführen des Befehls sudo ohne Argumente zu implementieren.



Betrachten Sie beispielsweise ein Ansible-Playbook, das das MySQL-Server-Paket aktualisiert und es dann neu startet. Im normalen Linux-Betrieb müssten Sie sich als Root-Benutzer anmelden, um solche Aufgaben auszuführen. In Ansible können Sie einfach die Anweisung 'were: yes' aufrufen, wie unten gezeigt:





- Gastgeber: alle

werden:Jawohl

Aufgaben:

- Name: Ansible-Laufwieroot und update sys

lecker:

Name: mysql-server

Zustand: aktuell

- Name:

service.service:
Name: mysqld

Zustand: neu gestartet

Im obigen Playbook haben wir die Anweisung „were“ verwendet und den Benutzer „werde_user“ nicht angegeben, da alle Befehle unter der Anweisung „werde“ standardmäßig als Root ausgeführt werden.

Dies ist vergleichbar mit der Angabe wie folgt:



- Gastgeber: alle

werden:Jawohl

werde_user: root

Aufgaben:

- Name: Ansible-Laufwieroot und update sys

lecker:
Name: mysql-server

Zustand: aktuell

- Name:service.service:

Name: mysqld

Zustand: neu gestartet

So führen Sie Ansible-Aufgaben als Sudo aus

Um eine Ansible-Aufgabe als einen bestimmten Benutzer anstelle des normalen Root-Benutzers auszuführen, können Sie die Anweisung 'werde_user' verwenden und den Benutzernamen des Benutzers übergeben, um die Aufgabe auszuführen. Dies ist vergleichbar mit der Verwendung des Befehls sudo -u in Unix.

Um die be_user-Direktive zu implementieren, müssen Sie zuerst die werden-Direktive aktivieren, da die be_user-Direktive ohne aktivierte Direktive unbrauchbar ist.

Betrachten Sie das folgende Playbook, in dem der Befehl als der Benutzer none ausgeführt wird.

- Name: Lauf aBefehl wieEin anderer Benutzer(niemand)
Befehl:psvon

werden:wahr

werde_methode:es ist

werde_user: niemand

werden_flags:'-s /bin/bash'

Im obigen Playbook-Snippet haben wir die Anweisungen 'werde', 'werde_user' und andere 'werde' implementiert.

  1. werde_methode : Dies legt die Methode zur Rechteausweitung fest, z. B. su oder sudo.
  2. be_user-Anweisung : Dies gibt den Benutzer an, als den der Befehl ausgeführt werden soll; dies bedeutet nicht: ja.
  3. wer_flags : Dies setzt die Flags, die für die angegebene Task verwendet werden sollen.

Sie können nun das obige Playbook mit dem ansible-playbook filename.yml ausführen und das Ergebnis selbst sehen. Für Aufgaben mit einer Ausgabe müssen Sie möglicherweise das Debug-Modul implementieren.

So führen Sie Ansible mit Passwort aus

Um eine wer-Anweisung auszuführen, die ein Kennwort erfordert, können Sie Ansible anweisen, beim Aufrufen des angegebenen Playbooks nach einem Kennwort zu fragen.

Um beispielsweise ein Playbook mit einem Passwort auszuführen, geben Sie den folgenden Befehl ein:

ansible-playbook wird_pass.yml--ask-become-pass

Sie können auch das Flag -K angeben, das ähnliche Operationen wie der obige Befehl ausführt. Zum Beispiel:

ansible-playbook wird_pass.yml-ZU

Nach der Festlegung werden Sie bei der Ausführung der Aufgaben zur Eingabe eines Kennworts aufgefordert.

HINWEIS : Sie können die Anweisung 'werde' auch in Ansible AD HOC-Rohbefehlen mit dem Flag -b verwenden. Weitere Informationen finden Sie in der folgenden Dokumentation:

https://linkfy.to/becomeDocumentation

Abschluss

Nachdem Sie diesen Artikel gelesen haben, sollten Sie nun wissen, wie Sie die Ansible BECOME-Direktive verwenden, um eine Rechteeskalation für verschiedene Aufgaben durchzuführen.

Aus Sicherheitsgründen ist es besser, Einschränkungen für verschiedene Konten zu implementieren und explizit anzugeben, wann diese verwendet werden. Die Rechteeskalation ist also ein wichtiger Aspekt bei der Verwendung von sudo und su in Ansible.