在Ubuntu上通过Ansible将Java Jar作为服务运行

Red*_*bot 2 ubuntu service jar ansible devops

通过Ansible将独立的.jar作为服务运行的最佳方法是什么?

我需要在Ubuntu EC2主机上通过ansible运行metabase.jar。

我应该守护它吗?有没有推荐的方法或库?

理想情况下,如果可能的话,我想通过Ansible处理程序来管理状态。

谢谢

Ami*_*kar 6

取决于基础框(init.d或systemctl)的初始化系统,有两种方法。


初始化

使用ansible,您可以在下面创建应用程序jar的符号链接

/etc/init.d/<your_service_name>
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用Ansible的服务模块来管理服务状态

 - service:
    name: <your_service_name>
    state: restarted
Run Code Online (Sandbox Code Playgroud)

更多信息:Ansible服务模块文档


系统控制

如果您的init方法是systemd,则必须创建一个非常简单的Unit文件

[Unit]
Description=<Description>

[Service]
ExecStart=/path/to/<your_app>.jar

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

将单位文件复制到

/etc/systemd/service/<your_unit_file>.service
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用Ansible的systemd模块来管理服务状态

- name: Start Service
  systemd:
    name: <your service name>
    state: started
Run Code Online (Sandbox Code Playgroud)

更多信息:Ansible systemd模块文档

  • 服务文件必须放在``/etc/systemd/system```中,但否则正确 (2认同)