我正在VM中自动化一些进程,我们目前正在使用java 17,并将jettys更新为jetty-11。因为在jetty-11中,主文件夹和基文件夹都是分开的,所以初始化jetty文件夹很重要。我需要从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)这个问题有什么解决办法吗?提前感谢
发布于 2022-03-03 16:37:23
您最明确地应该使用两个单独的目录。
(对于将来看到这一问题的其他人,请在此重复)
jetty.home目录。这是用于jetty发行版(或更现代的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请记住,当添加某些模块时,需要用户交互(以接受许可证)。这可以通过使用--approve-all-licenses option on start.jar在脚本中处理。
最后,您确定ansible支持Jetty 11实现的"Jakarta“命名空间更改吗?
参见过去对此的回答:https://stackoverflow.com/a/66368511/775715
如果ansible已经更新到Jakarta 9,那么继续使用Jetty 11,如果没有,那么继续使用Jetty 10 (在Jakarta 8上),直到ansible赶上世界其他地方为止。
https://stackoverflow.com/questions/71324543
复制相似问题