我已经安装和配置了 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 启动。