$ 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毫无意义。
可能是问题的原因吗?
答案 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命令。