如何告诉Puppet在停止运行时停止服务?

问题描述:

语境:如何告诉Puppet在停止运行时停止服务?

在Linux(RedHat的家庭)系统,我有一个启动的基于初始脚本服务/停止手动大部分时间,一般只在响应运行于特定的,不常见的情况。 init脚本是我无法控制的代码的简单包装。

如果在初始化脚本中未执行stop操作而导致服务中止,则会中止操作并使系统处于故障状态,需要手动干预才能修复。

当运行该服务的系统关闭时,它们会不精确地杀死它。我可以通过chkconfig注册该服务,以便在主机关闭时通过init脚本关闭该服务;这就解决了每台主机的问题。

问:

我想自动化这个服务的配置,通过木偶停止,在关机。

我该如何告诉Puppet注册一个chkconfig的服务,以便在系统关闭时通过初始化脚本停止服务,但不会由Puppet管理?

我已经试过:

我的傀儡直接调用chkconfig作了做作exec声明,但感觉不太优雅(并可能在某些方面我都没有想到的突破)。

我玩了noop标志到service类型在Puppet中,但它似乎没有预期的效果。

Puppet没有任何内置支持来配置服务运行的运行级别,也没有任何内置的对chkconfig的广义支持。通常,以chkconfig注册服务是服务安装责任;通过系统RPM安装的服务以这种方式注册。

此外,根据LSB convention,chkconfig会识别initscripts顶部的结构化注释,以确定哪些运行级别服务将默认运行。一个合适的initscript只需要在chkconfig中注册就可以设置默认的运行级别 - 特别是,它可以设置为在运行级别0和6中停止,这就是你所要做的。

如果你正在自己编写脚本,并手动或通过Puppet直接部署它们(而不是将它们打包并通过Yum安装它们),那么你最好的办法是构建一个定义类型来管理脚本和它的脚本注册。您不需要也不需要Service资源,但可以使用File资源来放置适当的文件,并且可以使用Exec资源来处理注册听起来正确的资源。