2017-08-17 2 views
1

Ich würde gerne einen Befehl auf localhost, mit ansible_connection=local, aber auch als ein bestimmter Benutzer, d. H. ansible_user=my_other_user. Interessanterweise scheinen die beiden Optionen sich gegenseitig ausschließend zu sein:Ansible: Run als ein anderer Benutzer auf localhost

  • Mit /etc/ansible/hostslocalhost ansible_user=my_other_user
      sein
    • ansible localhost -a "whoami" localhost | SUCCESS | rc=0 >> my_other_user
  • Mit /etc/ansible/hostslocalhost ansible_user=my_other_user ansible_connection=local sein
    • ansible localhost -a "whoami" localhost | SUCCESS | rc=0 >> myself

Ist das ein Fehler oder eine Funktion?

Wie kann ich das Inventar von Ansible verwenden, um sich mit my_other_user bei localhost anzumelden, aber ohne ssh?

EDIT: Dies sollte nie Sudo über den lokalen Benutzer myself verwenden. Die Passwörter für die Benutzer myself und my_other_user sind unterschiedlich, und Ansible kann das Passwort für myself nicht kennen.

EDIT2: Ändern der Methode su (d.h. localhost ansible_connection=local ansible_become_user=my_other_user ansible_become_method=su ansible_become=true) nicht nicht funktionieren, da es dann nicht möglich ist, Befehle als Root auszuführen, ohne das Root-Passwort zu kennen.

Antwort

0

ist es become dafür:

[email protected]:/$ ansible all -i 'localhost,' -c local -m shell -a 'whoami' 
localhost | SUCCESS | rc=0 >> 
ubuntu 

[email protected]:/$ ansible all -i 'localhost,' -c local -b --become-user=www-data -m shell -a 'whoami' 
localhost | SUCCESS | rc=0 >> 
www-data 
+0

Diese Lösung nicht für mich arbeiten, da es das Passwort für den Benutzer 'ubuntu' erfordert, aber ich brauche ansible das sudo Passwort für' www-data' zu verwenden. Bearbeitete Frage für mehr Präzision. – Kalsan

Verwandte Themen