Ich versuche, eine bestimmte Ansible-Aufgabe als ein anderer Benutzer auszuführen als derjenige, der das Playbook ausführt. Meine .yml
Datei sieht so aus:
---
- hosts: staging_servers
tasks:
- name: check user
remote_user: someusername
shell: whoami
Das Ausführen dieser Aufgabe zeigt mir, dass der whoami
Befehl einen anderen Benutzer zurückgibt, als ich in der Aufgabe definiert habe (genau, gibt den Benutzer zurück, der in der hosts
aufgerufenen Datei definiert ist ubuntu
).
Ich habe auch versucht, die Aufgabe so zu definieren:
---
- hosts: staging_servers
tasks:
- name: check user
sudo: yes
sudo_user: someusername
shell: whoami
Aber dann bekomme ich eine Missing sudo password
Fehlermeldung, obwohl es eine Zeile in der sudoers
Datei gibt, die besagt, dass das someusername ALL=(ALL) NOPASSWD:ALL
Ausgeben von Befehlen sudo
auf einem entfernten Rechner someusername
mich nicht nach einem Passwort fragt.
Wie kann ich die spezifische Aufgabe als ein anderer Benutzer ausführen, der nicht der in der hosts
Datei definierte Benutzer oder er root
selbst ist?
quelle
remote_user
standardmäßig der aktuelle Benutzer auf Ihrem lokalen Computer verwendet wird - genau wie bei ssh.Missing sudo password
die Fehlermeldung. Gibt es eine Möglichkeit, zu vermeiden, dass Sie für diesen bestimmten Benutzer nach dem Kennwort gefragt werden?ubuntu ALL=(someusername) NOPASSWD: ALL
ich Sudoern die Zeile hinzugefügt habe:, aber ich muss über die Sicherheit dahinter nachdenken ... Gibt es eine andere Möglichkeit, als Sudoern diese Zeile hinzuzufügen?Beachten Sie, dass nach Ansible 1.9 der
sudo
Wortlaut durch ersetztbecome
wurdewird (Wortspiel beabsichtigt):
Weitere Einzelheiten finden Sie hier: /programming//a/22749788/402727
quelle