Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Ansible在AmazonLinuxEC2实例上运行FATJAR作为服务_Java_Deployment_Amazon Ec2_Ansible - Fatal编程技术网

Java 使用Ansible在AmazonLinuxEC2实例上运行FATJAR作为服务

Java 使用Ansible在AmazonLinuxEC2实例上运行FATJAR作为服务,java,deployment,amazon-ec2,ansible,Java,Deployment,Amazon Ec2,Ansible,我想使用Ansible将应用程序部署到EC2 Amazon Linux实例 作为一个Linux noob,也是Ansible的新手,我想知道最好的方法是通过Ansible作为服务启动应用程序,而不是仅仅启动java进程,这就是我现在所做的:java-jar[path to my jar] 现在可以了,但它不是幂等的。也就是说,我认为Ansible无法找到一种方法,仅在应用程序尚未运行时才启动它 我知道Ansible有一个朋友。这是要用的吗 更新: 有一个看起来像我需要的,但它只适用于Ubuntu

我想使用Ansible将应用程序部署到EC2 Amazon Linux实例

作为一个Linux noob,也是Ansible的新手,我想知道最好的方法是通过Ansible作为服务启动应用程序,而不是仅仅启动java进程,这就是我现在所做的:
java-jar[path to my jar]

现在可以了,但它不是幂等的。也就是说,我认为Ansible无法找到一种方法,仅在应用程序尚未运行时才启动它

我知道Ansible有一个朋友。这是要用的吗

更新:


有一个看起来像我需要的,但它只适用于Ubuntu服务器。我的服务器有Amazon Linux。

Ansible服务模块用于管理现有的操作系统服务。Ansible没有“创建”服务的内置模块,因为可能有许多不同的方法为各种操作系统/发行版创建这样的脚本。Ansible可以确保您注册的服务已启用并正在运行,但没有内置模块可以从任意文件创建服务。

我一直认为最好使用Upstart之类的工具包装应用程序(无论是java还是节点或其他),并使用标准启动/停止命令或Ansible模块从该点控制应用程序

Ansible可以轻松地在应用程序文件副本旁边部署upstart包装(它是一个conf文件,位于/etc/init中)。一旦“安装”,启动/停止工作正常


根据需要用Upstart(init)代替systemv(init.d)或SystemD,当然还有很多其他选项。

是的,我同时也读到了关于服务模块的内容。我目前正在尝试自动创建作为守护进程运行所需的工件。我想可能会有一个Ansible模块。此外,我还必须将脚本复制到init.d,注册服务,等等。。。我希望Ansible能为我抽象出这种低级的东西。不,Ansible不能这样做,因为在不同的操作系统/发行版上有一百万种不同的创建服务脚本的方法。Ansible可以确保您注册的服务已启用并正在运行,但没有内置模块可以从任意文件创建服务。Thans Mxx。你为什么不把这个贴出来作为答案呢?如果几天内没有其他事情发生,我会接受的。