2015-04-20 17 views
5

Quando sudo come utente, ansible_env non ha il set HOME variabile "/ root". Tuttavia, se echo la variabile env HOME è corretta - "/ var/lib/pgsql". Non c'è altro modo per ottenere la home directory di un utente sudo?Come ottenere la directory home di un utente sudo da ansible_env?

Inoltre, ho già impostato "sudo_flags = -H" in ansible.cfg e non riesco ad accedere come utente di Postgres.

- name: ansible_env->HOME 
    sudo: yes 
    sudo_user: postgres 
    debug: msg="{{ ansible_env.HOME }}" 

- name: echo $HOME 
    sudo: yes 
    sudo_user: postgres 
    shell: "echo $HOME" 
    register: postgres_homedir 

- name: postgres_homedir.stdout 
    sudo: yes 
    sudo_user: postgres 
    debug: msg="{{ postgres_homedir.stdout }}" 

risultati:

TASK: [PostgreSQL | ansible_env->HOME] **************************************** 
ok: [postgres] => { 
    "msg": "/root" 
} 

TASK: [PostgreSQL | echo $HOME] *********************************************** 
changed: [postgres] 

TASK: [PostgreSQL | postgres_homedir.stdout] ********************************** 
ok: [postgres] => { 
    "msg": "/var/lib/pgsql" 
} 

risposta

1

posso replicare l'uscita sopra eseguendo il playbook come utente root (localmente con - hosts: localhost, o SSHing come root). I fatti raccolti da Ansible sono quelli dell'utente root.

Se questo è ciò che si sta facendo, la soluzione alternativa sembra essere il modo migliore per ottenere la variabile $ HOME dell'utente di Postgres.

Anche se si aggiunge sudo_user: postgres all'attività ansible_env->HOME, il fatto non cambia poiché viene raccolto all'inizio della riproduzione.

+0

Dopo aver attraversato la documentazione sembra che la mia soluzione è davvero l'unico modo. Anche se, mi piacerebbe che ci fosse un modo migliore per farlo. – rahul

0

"~" si espande come utente non root se si utilizza "diventa: no". Nell'esempio che segue ho combinano con un "sudo" esplicito di fare qualcosa come root nella home directory:

- name: Setup | install 
    command: sudo make install chdir=~/git/emacs 
    become: no 
Problemi correlati