Ansible不能使dir /$HOME/.ansible/cp

我运行ansible时遇到了一个非常奇怪的错误:

收集事实***************************************************** *************** 
致命的:[i-0f55b6a4] =>不能使目录/$HOME/.ansible/cp:[错误13]权限被拒绝:'/ $ HOME'

任务:[任务1] ******************************************* ******************** 
致命:没有主机匹配或所有主机已经失败 - 中止


玩回扣************************************************ ******************** 
           重试,使用:--limit @ / home / ubuntu / install.retry

 i-0f55b6a4:ok = 0改变= 0不可达= 1失败= 0   

通常情况下,这个剧本运行没有问题,但我最近做了一些改变,以便调用ansible的程序从start-stop-daemon调用,这样我就可以作为服务运行。 最终的目标是在有需要时能够自动运行剧本的服务。

剧本的开始是这样的:

 --- - hosts: w_vm:main sudo: True tasks: - name: Task #1 ... 

sudo设置为True,所以我有点确定错误不在目标机器上。

生成的剧本的调用看起来像这样:

 ansible-playbook -i /tmp/ansible3397486563152037600.inventory \ /home/ubuntu/playbooks/main_playbook.yml \ -e @/home/ubuntu/extra_params.json 

我不确定是否Could not make dir /$HOME/.ansible/cp服务器或远程计算机上发生Could not make dir /$HOME/.ansible/cp错误,或者为什么ansible会试图在/创build一个名为$HOME的目录。 这只发生在调用ansible的程序从linux服务中调用时,而不是从命令行显式调用的时候。


我在这里问了一个更具体的问题: https : //unix.stackexchange.com/questions/220841/start-stop-daemon-services-environment-variables-and-ansible

试试sudo chown -R YOUR_USERNAME /home/YOUR_USERNAME/.ansible

迟到,但可能对某人有用。 检查〜/ .ansible的所有权。 本地机器(运行有效/可控的控制器节点)中.ansible的所有权可能会导致问题。 做“chown -R username:groupname .ansible”(用户名:groupname应该是运行该剧本的用户)并且尝试再次运行剧本

作为一种选择,从控制器节点中删除这个.ansible目录并重新运行该剧本。

Ansible在本地机器远程机器上的~/.ansible .ansible中创建临时文件。 所以这在理论上可以从双方触发。

我的猜测是,在Ansible运行的本地机器上,Ansible如何启动不应该影响目标机器。 快速搜索显示, start-stop-deamon没有可用的$HOME (或任何env),但它有一个-e选项可以根据您的需要进行设置。

如果-e不可用,请参阅此答案 ,这建议另外执行/usr/bin/env来设置环境变量。

我使用Jenkins遇到了类似的问题。 它有一个默认的$HOME env var设置为/root/ 。 解决方案是在运行时注入环境变量。

 HOME=/path/to/your/users/home