Ansible 问题求助!

2019-10-15 13:56:24 +08:00
 mccreefei

Jenkins 打包应用,然后通过 Ansible copy 模块将打好的包发到远程服务器上,再通过 Ansible shell 模块在远程机器上执行启动脚本。发现包成功发到了远程服务器,但是执行远程脚本时提示 java 指令找不到,我直接在服务器上运行脚本是没有问题的。求指导!

1665 次点击
所在节点    程序员
5 条回复
Firxiao
2019-10-15 14:04:38 +08:00
在启动脚本中添加 JAVA_HOME 的环境变量或者 java 命令使用绝对路径.
linxiaohaogood
2019-10-15 14:12:05 +08:00
1. 先说结论一般是环境变量问题,可以再 ansible 执行 task 配置目标机器环境变量就可以
参考链接: https://docs.ansible.com/ansible/latest/user_guide/playbooks_environment.html

2. 更好的建议一般使用进程管理程序来启动,不要直接前台启动,这样做法不靠谱。
如 supervisor,systemd 可以用来做进程守护,在机器重启或者迁移后服务能自动启动
mccreefei
2019-10-15 14:24:16 +08:00
@Firxiao #1 配置 java 的绝对路径是可以了,感谢,但是没搞懂为什么一定要设置环境变量或者使用绝对路径,毕竟在远程服务器上是已经配置了 java 环境变量的。
AntonChen
2019-10-15 14:30:14 +08:00
@mccreefei #3 这个问题建议你了解一下 ssh 的 nologin 模式
rockyou12
2019-10-15 14:30:30 +08:00
@mccreefei linux 的环境变量问题,你自己写个 bash 脚本打印下 env 就懂了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/609508

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX