如何从ansible_env获取sudoed用户的主目录?

时间:2015-04-20 06:27:10

标签: ansible

当我作为用户sudo时,ansible_env没有正确的 HOME 变量集 - " / root" 。但是,如果我回显HOME env变量,那么它是正确的 - " / var / lib / pgsql" 。没有其他方法可以获得sudo用户的主目录吗?

另外,我已经在ansible.cfg中设置了" sudo_flags = -H" ,我无法以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 }}"

结果:

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"
}

1 个答案:

答案 0 :(得分:0)

如果使用“变为:否”,

“〜”将以非root用户身份展开。在下面的示例中,我将其与显式“sudo”结合起来,在主目录中以root身份执行操作:

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