shell - 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 没有意义。
问题的原因可能是什么?
解决方案
仔细检查目标 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
推荐阅读
- javascript - 如何将多个 URL 添加到一个组件?
- python - python mongodb update_one 保留其他值
- python - 该函数是否以任何方式从 Tk 的导入条目中获取值?
- reactjs - 如何在选择帐户类型储蓄和当前更改帐号?
- c# - OpenXML SDK 添加换行符或在替换中使用多行字符串(正则表达式)
- numpy - 为什么两种计算 R2 分数的方法的结果不同
- javascript - 在 heroku 中启动 Discord Bot 会导致我从 cmd 启动它时没有的错误
- tensorflow - 如何在 tensorflow.js 中训练 doc2vec 模型?
- javascript - Vue D3JS 创建交互式圆环图
- php - PHP 警告:ldap_bind():无法绑定到服务器:凭据无效