2

我已经安装和配置了 Tomcat 8 的 puppet forge 模块 puppetlabs-tomcat,OK。

我让它配置数据库连接、自定义领域和部署战争文件。它可以工作,如果 Puppet 尚未运行,它会启动 Tomcat。

我想改变一些东西,以便 Puppet 将 Tomcat 作为 systemd 服务运行。

让 Puppet 使用 epp 模板在 /etc/systemd/system 中创建一个 systemd 服务文件很容易。完成这个 systemd 的 systemctl 命令后,启动、停止和状态可以完美运行。

我坚持的问题是让 puppetlabs-tomcat 的服务定义将 Tomcat 作为 systemd 服务启动。看起来应该很容易,因为 tomcat::service 具有定义启动和停止命令的参数。

tomcat::service { 'myWebApp':
  catalina_home  => $catalinaHome,
  catalina_base  => $catalinaBase,
  start_command  => "systemctl start ${systemdServiceName}",
  stop_command   => "systemctl stop ${systemdServiceName}",
}

遗憾的是,这两个参数没有达到预期的效果。

我在 systemd 服务文件中定义的服务包括以下短语:

Environment=CATALINA_PID=<%= $catalinaBase %>/temp/tomcat.pid

这故意指定了一个与我在 puppetlabs-tomcat 中默认设置启动 Tomcat 时创建的文件不同的 .pid 文件。这种差异使我能够确定我知道 Tomcat 是如何启动的。

我想要的是让 Puppet 通过 systemd 启动 Tomcat,从而消除任何差异,具体取决于 Tomcat 是由 Puppet 启动还是直接通过 systemd 启动。

4

0 回答 0