Ansible sudo_user没有使用正确的$ HOME目录

Jas*_*son 5 git solaris ansible ansible-playbook

我有一个git目录,由我不能ssh的用户拥有.我正在使用sudo_user: user哪个正在工作,但似乎没有正确设置$ HOME.我的用户帐户在〜/ .ssh/known_hosts文件中有github,但它被添加到我的~ssh_user/.ssh/known_hosts文件中(来自accept_hostkey = yes).

http://docs.ansible.com/git_module.html

- hosts: myhost
  sudo_user: user
  tasks:
    - name: git
      git: repo=git@github.com:user/repo.git dest=/home/user/repo update=no accept_hostkey=yes
Run Code Online (Sandbox Code Playgroud)

我需要做些什么来告诉ansible正确使用$ HOME吗?

我在Joyent上运行Solaris,但我不认为这直接适用于这个问题.

小智 7

在你的ansible.cfg文件中添加sudo_flags

[defaults]
sudo_flags = -i
Run Code Online (Sandbox Code Playgroud)

这将运行sudo用户的登录脚本来填充像$ HOME这样的environemt变量


leu*_*cos 3

sudo对一堆环境变量进行一些修改,特别是HOME. 您可以通过以下方式检查:

sudo -u user | grep HOME
Run Code Online (Sandbox Code Playgroud)

如果你得到了/home/user,那就没问题,但你很可能得到了/home/ssh_user

这确实是与 ansible 有关的东西sudo,而不是与 ansible 相关的东西。

为了避免这种情况,您可以添加/etc/sudoers

Defaults    always_set_home
Defaults    set_home
Run Code Online (Sandbox Code Playgroud)

再试一次sudo user | grep HOME,你应该得到正确的结果。

如果没有,请检查Defaults env_keepsudo 指令。这里也可以发挥作用。寻找Defaults env_keep += "HOME"in /etc/sudoers,并将其删除(该指令要求 sudo 防止HOME用户发出 sudo )

祝你好运。

编辑:这些指令也可能出现在/etc/sudoers.d/. 我不了解 Solaris,所以 YMMV。