Kürzlich habe ich angefangen, mich mit Ansible zu beschäftigen und meine eigenen Spielbücher zu schreiben. Ich habe jedoch Probleme mit dem Verständnis des Unterschieds zwischen become
und become_user
. So wie ich es verstehe become_user
ähnelt su <username>
und become
bedeuten so etwas wie Sudo su
oder "Alle Befehle als Sudo-Benutzer ausführen". Aber manchmal sind diese beiden Richtlinien gemischt.
Könnten Sie die richtige Bedeutung von ihnen erklären?
become_user
definiert den Benutzer, der für erweiterte Rechte verwendet wird.
become
ist einfach ein Flag, um dasselbe zu aktivieren oder zu deaktivieren.
Hier drei Beispiele, die dies verdeutlichen sollen:
Diese Aufgabe wird als root
ausgeführt, da root
der Standardbenutzer für die Rechteerweiterung ist:
- do: something
become: yes
Diese Aufgabe wird als Benutzer someone
ausgeführt, da der Benutzer explizit festgelegt ist:
- do: something
become: yes
become_user: someone
Diese Aufgabe macht nichts mit become_user
, da become
nicht festgelegt ist und standardmäßig false
/no
ist:
- do: something
become_user: someone
... es sei denn, es wurde auf einer höheren Ebene auf true
gesetzt, z. ein Block, das Playbook, eine Gruppe oder Host-Vars etc.
Hier ist ein Beispiel mit einem Block :
- become: yes
block:
- do: something
become_user: someone
- do: something
Der erste wird als Benutzer someone
ausgeführt, der zweite als root
.
So wie ich es verstehe, ist become_user so etwas wie su und become bedeutet so etwas wie sudo su oder "alle Befehle als sudo-Benutzer ausführen".
Der Standard become_method
ist Sudo
, also Sudo do something
oder Sudo -u <become_user> do something
Fineprint: Natürlich ist " do: something " Pseudocode. Setzen Sie dort Ihr aktuelles Ansible-Modul ein.