当我作为用户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"
}
答案 0 :(得分:0)
“〜”将以非root用户身份展开。在下面的示例中,我将其与显式“sudo”结合起来,在主目录中以root身份执行操作:
- name: Setup | install
command: sudo make install chdir=~/git/emacs
become: no