我正在自动化虚拟机中的一些进程,我们目前正在使用java 17,并已将jettys更新为jetty-11。由于在jetty-11中,home和base都是独立的,因此初始化jetty-base文件夹很重要。我需要从ansible开始我在本地shell中找到了一个解决方案,但在ansible中尝试它不起作用
- name: "Run initialization command"
shell: "nohup java -jar '{{ jetty_home }}'/start.jar jetty.base='{{ jetty_install_dir }}' --add-module=server,http,deploy,annotations,logging-jetty,jsp &"
当我运行剧本时没有明显的错误,只有
TASK [jetty-distribution : initialize jetty-base] **************************************************************************************************************************
changed: [****************************] (cutting the vm name off)
这个问题有什么解决办法吗?提前感谢
您应该使用两个独立的目录。
(对于未来看到这个问题的其他人,在此重复(
-
jetty.home
目录
这适用于码头配送(或更现代的jetty-home
tarball/zip(jetty.home
目录是神圣的,不要编辑/更改/删除/添加/修改该目录中的任何内容。你不需要,对于你能想到的任何可能的配置(相信我(。 -
jetty.base
目录
这是您的配置或Jetty实例的目录
请确保此目录不会嵌套在jetty.home
目录的内部/外部,在升级(甚至降级(Jetty版本时,您只会使您的生活变得不必要的复杂。
接下来,在初始化时,关闭nuhup
,它只会隐藏初始化过程中可能出现的任何错误。--add-module
命令无论如何都是终端,它将执行它需要的操作,然后退出,它不是守护进程,并保持运行。如果你不想看到输出,至少可以将其重定向到一个输出文件,如果有问题,可以询问。
也不要把它放在后台(末尾的&
(,如果发生错误,退出代码将对您有用。
又名
java -jar /path/to/jetty-home/start.jar
jetty.home=/path/to/jetty-home
jetty.base=/path/to/my-jetty-base
--add-module=http,deploy,annotations,logging-jetty,jsp
2>&1 > /path/to/my-jetty-base/jetty-init.log
请记住,添加某些模块时,需要用户交互(以接受许可证(。这可以在脚本中通过使用start.jar
上的--approve-all-licenses
选项来处理。
最后,你确定ansible支持";雅加达大爆炸;Jetty 11实现的命名空间更改?
查看过去对此的回答:https://stackoverflow.com/a/66368511/775715
如果ansible已经更新到Jakarta EE 9,那么继续使用Jetty 11,如果他们没有,那么坚持使用Jetty 10(位于Jakarta EE 8上(,直到ansible赶上世界其他地方。