当我作为用户sudo时,ansible_env没有正确的HOME变量集 - "/ root".但是,如果我回显HOME env变量,它是正确的 - "/ var/lib/pgsql".有没有其他方法来获得sudo'ed用户的主目录?
另外,我已经在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 }}"
Run Code Online (Sandbox Code Playgroud)
结果:
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"
}
Run Code Online (Sandbox Code Playgroud)
我可以通过以 root 用户身份运行 playbook(在本地使用- hosts: localhost
或以 root 用户身份通过 SSH)来复制上面的输出。Ansible 收集的事实是 root 用户的事实。
如果这就是您正在做的事情,那么您的解决方法似乎是获取 postgres 用户的 $HOME 变量的最佳方法。
即使您添加sudo_user: postgres
了ansible_env->HOME
任务,事实也不会改变,因为它是在游戏开始时收集的。
归档时间: |
|
查看次数: |
5128 次 |
最近记录: |