首页 > 解决方案 > ansible - /bin/sh cd 路径没有这样的文件或目录

问题描述

$ ansible --version
ansible 2.6.3

在这里遇到一个奇怪的问题。让我的 ansible 执行此任务:

- name: Print environemnts
  shell: cd some/absolute/path && \
        env > .env && \
        docker-compose pull && \
        docker-compose up -d
  become_user: "{{ user }}"

导致抛出此错误

{"changed": true, "cmd": "cd /some/absolute/path && env > .env && docker-compose pull && docker-compose up -d", "delta": "0:00:00.004041", "end": "2019-02-24 15:15:53.343123", "msg": "non-zero return code", "rc": 1, "start": "2019-02-24 15:15:53.339082", "stderr": "/bin/sh: line 0: cd: /some/absolute/path: Not a directory", "stderr_lines": ["/bin/sh: line 0: cd: /some/absolute/path: Not a directory"], "stdout": "", "stdout_lines": []}

我很确定该目录确实存在!已经无数次检查了目标服务器中目录的存在。

我正在执行此任务的 ssh-user 是一个centos用户,在 Centos7 服务器上具有 sudo 权限。用户 var inbecome: " {{user}} "实际上是另一个打算运行 docker 容器的用户,如果它与cannot find dir错误相关,imo 没有意义。

问题的原因可能是什么?

标签: shellansible

解决方案


仔细检查目标 IP 和路径。错误很明显。

“/bin/sh:第 0 行:cd:/some/absolute/path:不是目录”

“/some/absolute/path”存在,但它不是目录

你可以在一个空目录中测试它

# cd test
cd: test: No such file or directory
# touch test
# cd test
cd: test: Not a directory

推荐阅读