2016-06-23 8 views
3

Ich bin mit ansible 2.1.0.0ansible become_user mit variabler

Ich versuche, mit einer Variablen in einer Aufgabe zu verwenden become_user, aber ich die folgende Meldung:

fatal: [host]: FAILED! => {"failed": true, "msg": "'ansible_user' is undefined"} 

Die Aufgabe der Ausführung ist die

- name: Config git user name 
    git_config: name=user.name scope=global value={{ ansible_host }} 
    become: Yes 
    become_user: "{{ansible_user}}" 

Und das Textbuch hat die folgende Zeile den entfernten Benutzer zu definieren:

- name: Foo 
    hosts: foo 
    vars: 
    http_port: 80 
    remote_user: admin 

Ich habe this response gesehen, das scheint das gleiche Problem zu sein, aber das funktioniert nicht für mich.

Ich habe auch a set_fact Lösung gesehen, aber ich möchte die remote_user var verwenden, wenn möglich, so dass keine zusätzlichen Zeilen hinzugefügt werden müssen, wenn ein Playbook bereits die remote_user var festgelegt hat.

Weiß jemand, wie man das macht oder was ich falsch mache?

+1

Wo kommt Ihr ansible_user kommen aus? Ich kann den remote_user aber nicht ansible_user sehen. versuch 'were_user:" {{remote_user}} "' –

Antwort

0

Was ist das:

- name: Foo 
    hosts: foo 
    vars: 
    http_port: 80 
    my_user: admin 
    remote_user: "{{my_user}}" 

dann:

- name: Config git user name 
    git_config: name=user.name scope=global value={{ ansible_host }} 
    become: Yes 
    become_user: "{{my_user}}" 
+0

Das funktioniert super! Als Randnotiz finde ich es seltsam, eine extra var/extra Zeile zu verwenden, um den remote_user var zu setzen, aber für meine aktuellen Bedürfnisse passt es perfekt. Vielen Dank für Ihre Hilfe. – Hugo

1

Ich glaube, ich fand es:

become_user: "{{ansible_ssh_user}}" 

In der Tat die remote_user: admin ist ein weiterer Weg, um die Variable ansible_ssh_user definieren, ich weiß nicht, warum remote_user nicht zugänglich als eine Variable ist, aber was ich weiß, ist, dass Sie, wenn Satz remote_user, ändert es die Variable ansible_ssh_user

Nicht sicher, ob es aber eine saubere Lösung, aber es funktioniert

+0

Nein, immer noch fehlgeschlagen, obwohl ansible_ssh_user eine gültige Variable in meinen Aufgaben ist. Wenn die Aufgabe diese Variable so verwendet: '- Datei: dest =/var/www mode = 0755 owner = {{}} ansible_ssh_user state = directory' perfekt funktioniert. Wenn ich diese Variable jedoch als "were_user" benutze: "{{ansible_ssh_user}}", schlägt sie mit dieser Nachricht fehl. Tatsächlich benutze ich bereits ansible_ssh_user var für andere Aufgaben. – Hugo

+0

Wow, tut mir leid, ich weiß, das war dumm in der Tat –

+0

Nach dem Lesen, denke ich, dass Sie ansible_ssh_user überall ** außer ** für wene_user verwenden können, denn das ist, wo Sie "admin" setzen –