Ein wiederkehrendes Thema in meinen Ansible-Playbooks ist, dass ich häufig einen Befehl mit sudo-Berechtigungen ( sudo: yes
) ausführen muss, weil ich dies für einen bestimmten Benutzer tun möchte. Im Idealfall würde ich lieber sudo verwenden, um zu diesem Benutzer zu wechseln und die Befehle normal auszuführen. Denn dann muss ich meine üblichen Post-Befehle nicht mehr bereinigen, z. B. Chowning-Verzeichnisse. Hier ist ein Ausschnitt aus einem meiner Spielbücher:
- name: checkout repo
git: repo=https://github.com/some/repo.git version=master dest={{ dst }}
sudo: yes
- name: change perms
file: dest={{ dst }} state=directory mode=0755 owner=some_user
sudo: yes
Im Idealfall könnte ich Befehle oder Befehlssätze als anderer Benutzer ausführen, selbst wenn sudo erforderlich ist, um diesen Benutzer zu unterstützen.
sudo_user: "{{ ansible_ssh_user }}"
oder Sie würden einen yaml-Syntaxfehler erhalten.become
System anstelle von "sudo *".New Ansible variables and command line options are added to set these values for the duration of a play.
@Brett bedeutet das, dass die nachfolgenden Aufgaben danach ausgeführt werdensome_user
und nicht der ursprüngliche Benutzer,remote_user
der für die Verbindung zum Host verwendet wurde. Ist das richtig?In Ansible 2.x können Sie Folgendes
block
für eine Gruppe von Aufgaben verwenden:quelle
In Ansible> 1.4 können Sie tatsächlich einen Remote-Benutzer auf Aufgabenebene angeben, der es Ihnen ermöglichen soll, sich als dieser Benutzer anzumelden und diesen Befehl auszuführen, ohne auf sudo zurückzugreifen. Wenn Sie sich nicht als dieser Benutzer anmelden können, funktioniert auch die Lösung sudo_user.
Siehe http://docs.ansible.com/playbooks_intro.html#hosts-and-users
quelle
Eine Lösung besteht darin, die
include
Anweisung mitremote_user
var zu verwenden (beschreiben Sie dort: http://docs.ansible.com/playbooks_roles.html ), sie muss jedoch auf Playbook-Ebene anstatt auf Aufgabenebene ausgeführt werden.quelle
Sie können angeben
become_method
, dass die inansible.cfg
(falls vorhanden) festgelegte Standardmethode überschrieben werden soll, die auf eine von festgelegt werden kannsudo, su, pbrun, pfexec, doas, dzdo, ksu
.Sollte angezeigt werden
quelle