ansible-/ bin / sh cd路径没有这样的文件或目录

时间:2019-02-24 15:29:27

标签: shell ansible

$ 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用户是一个centos用户,在Centos7服务器上具有sudo特权。 become: " {{user}} "中的用户var实际上是另一个要运行docker容器的用户,如果imo与cannot find dir错误有关,则imo毫无意义。

可能是问题的原因吗?

2 个答案:

答案 0 :(得分:0)

再次检查目标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

答案 1 :(得分:0)

这有点题外话,但是如果您使用shell模块的chdir参数,则可以调整shell命令。