【问题标题】:Run fat jar as a service on Amazon Linux EC2 instance using Ansible使用 Ansible 在 Amazon Linux EC2 实例上运行 fat jar 作为服务
【发布时间】:2015-05-17 15:02:30
【问题描述】:

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

作为一个 Linux 新手并且对 Ansible 完全陌生,我想知道通过 Ansible 作为服务启动应用程序的最佳方法是什么,而不是仅仅启动一个 java 进程,这就是我现在所做的:java -jar [path to my jar] .

这暂时有效,但它不是幂等的。即,我认为 Ansible 无法找到一种仅在应用程序尚未运行时才启动它的方法。

我知道 Ansible 有一个 service module。这个可以用吗?

更新:

有一个 role called fatjar-service on Ansible Galaxy 看起来像我需要的,但它仅适用于 Ubuntu 服务器。我的服务器有 Amazon Linux。

【问题讨论】:

    标签: java deployment amazon-ec2 ansible


    【解决方案1】:

    我一直发现最好使用 Upstart 之类的东西来包装应用程序(无论是 java 还是 node 或其他),然后使用标准的启动/停止命令或 Ansible 模块从那时起控制应用程序。

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

    根据需要将 Upstart (init) 替换为 System V (init.d) 或 SystemD - 当然还有许多其他选项。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 是的,我同时读到了关于服务模块的内容。我目前正在尝试使用Stork 自动创建将其作为守护进程运行所需的工件。我认为这可能有一个 Ansible 模块。此外,我仍然需要将脚本复制到 init.d、注册服务等......我希望 Ansible 可以为我抽象出那种低级的东西。
      • 不,Ansible 无法做到这一点,因为在各种操作系统/发行版上为服务创建脚本的方法有上百万种。 Ansible 可以确保您注册的服务已启用并运行,但没有内置模块可以从任意文件创建服务。
      • 比 Mxx。您为什么不将此作为答案发布?如果几天内没有其他问题,我会接受。
      猜你喜欢
      • 1970-01-01
      • 2014-09-14
      • 2011-11-17
      • 1970-01-01
      • 2017-12-02
      • 2012-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多