Ich habe versucht, die Eskalationsfunktion von Ansible zu verwenden, um eine bestimmte Aufgabe innerhalb einer Rolle als unprivilegierter Benutzer auszuführen, aber die Aufgabe wird noch ausgeführt Root-Benutzer, mit dem ich mein Playbook ausführe und die Rolle aufruft. Mein Problem bezieht sich auf die Erstellung einer neuen Datenbank unter DB2 für LUW nach der Installation und Konfiguration des DB2-Produkts mit dem Benutzer root in derselben Rolle. Ich habe ein Shell-Skript, das eine neue Datenbank erstellt, sollte aber als db2inst1 (nicht root) ausgeführt werden. Ich versuchte es mit "werden", "were_user" und "werden_method", wie es in den offiziellen Ansible-Dokumenten und einigen Threads hier auf stackoverflow vorgeschlagen wurde. HierWie führe ich eine bestimmte Aufgabe als unpriviligierter Benutzer aus einer Ansible Rolle beim Verbinden als root aus?
ist ein Auszug meiner ansible Rolle:
- name: Execution of the creation script
become: yes
become_method: su
become_user: db2inst1
shell: /home/CreateDb.sh TESTDB
OR:
- name: Creation of a test DB
script: CreateDb.sh TESTDB
become: yes
become_method: su
become_user: db2inst1
Ich habe auch diese Linie meiner ansible.cfg
hinzugefügt:
allow_world_readable_tmpfiles=True
ich auch aktualisiert haben Ansible-Paket von 2.0.1 bis 2.1; aber das hat keine Auswirkung und die Aufgabe läuft immer noch als root.
Ich betreibe mein Textbuch wie folgt:
ansible-playbook playbooks/db2-test.yml -u root -k
Ich weiß nicht, was mir fehlt; bitte hilf mir.
Vielen Dank im Voraus!
Danke für die Rückmeldung; Die Syntax, die ich hier verwendet habe, ist korrekt. Das Problem war, dass das ausgeführte Skript "CreateDb.sh" nicht korrekt genug war, um mit Ansible remote gestartet zu werden. Ich musste einige Änderungen am Skript vornehmen, damit es funktioniert. –