2016-06-17 15 views
2

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!

Antwort

0

Es ist wichtig zu unterscheiden, ob der Benutzer ansible eine Verbindung zum Zielcomputer herstellt und der Benutzer den Task als ausgeführt ausführt (wird). Die beiden Beispiele, die Sie eingefügt haben (Skriptmodul und Shell-Modul), sehen in etwa korrekt aus. Was sind die Hinweise, die Sie sehen, dass diese Aufgaben noch als root ausgeführt werden? Ich würde -vvvv zu Ihrem ansible-playbook Lauf hinzufügen, um zu sehen, was ansible in höheren Details tut, einschließlich Benutzerinformationen.

+0

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. –