首页 文章

Ansible无法制作dir /$HOME/.ansible/cp

提问于
浏览
2

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

GATHERING FACTS *************************************************************** 
fatal: [i-0f55b6a4] => Could not make dir /$HOME/.ansible/cp: [Errno 13] Permission denied: '/$HOME'

TASK: [Task #1] *************************************************************** 
FATAL: no hosts matched or all hosts have already failed -- aborting


PLAY RECAP ******************************************************************** 
           to retry, use: --limit @/home/ubuntu/install.retry

i-0f55b6a4                 : ok=0    changed=0    unreachable=1    failed=0

通常情况下,这个剧本运行没有问题,但我最近做了一些更改,以便从 start-stop-daemon 调用调用ansible的程序,以便我将作为服务运行 . 最终目标是在认为必要时自动运行剧本的服务 .

该剧本的开头如下:

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

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

生成的ansible-playbook调用如下所示:

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 错误,或者为什么ansible正在尝试在 / 中创建名为 $HOME 的目录 . 这只发生在从linux服务调用调用ansible的程序时,而不是从命令行显式调用它时 .


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

4 回答

  • 1

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

  • 0

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

    作为替代方法,从控制器节点中删除此.ansible目录并重新运行该playbook .

  • 4

    Ansible在远程计算机上的本地计算机 and 上的 ~/.ansible 中创建临时文件 . 因此,理论上可以从双方触发 .

    我的猜测是,它是在Ansible运行的本地机器上,因为Ansible的启动方式不会对目标框产生影响 . 快速搜索显示以 start-stop-deamon 开头的程序没有 $HOME (或任何env可用),但它有一个 -e 选项可根据您的需要设置它们 .

    如果 -e 不可用,请参阅此answer,这表示另外执行 /usr/bin/env 来设置环境变量 .

  • 2

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

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

相关问题