我有一本与此任务相关的剧本,其中包括:

- name: Compile and package
  command: './mvnw clean package'
  args:
    chdir: "{{workdir}}"


但是我得到这个错误:


失败! => {“ changed”:true,“ cmd”:“ ./mvnw clean package”,“ delta”:
“ 0:00:00.003895”,“结束”:“ 2016-12-29 21:59:16.121501”,“失败”:是的,
“ rc”:1,“开始”:“ 2016-12-29 21:59:16.117606”,“ stderr”:“错误:
JAVA_HOME的定义不正确。\ n我们无法执行“,” stdout“:
“”,“ stdout_lines”:[],“警告”:[]}


如果我通过SSH访问远程主机并执行相同的命令,则它可以工作。很明显,已定义了JAVA_HOME,但似乎Ansible无法检测到它。

最佳答案

如果说未定义JAVA_HOME,则可能意味着未定义JAVA_HOME

首先,登录时,您使用的是Shell的交互模式/登录Shell,使用Ansible时,您使用的是Shell的非交互模式。两者加载了不同的rc文件-请参考man bashBash Startup Files的“ INVOCATION”部分(对于其他shell,这是相似的,但我认为您正在使用Bash)。

如果JAVA_HOME变量分配位于仅以交互方式运行的rc文件中,则将出现差异。将定义移到正确的位置。

其次,还取决于设置JAVA_HOME的位置-使用shell模块而不是command可能会加载正确的定义文件。



只需使用JAVA_HOME为此任务定义environment,并且不依赖于隐式包含。

10-05 23:01
查看更多