语境:
在linux(RedHat家族)系统上,我有一个基于init-script的服务,该服务通常在大多数时间手动启动/停止,并且通常仅在响应特定的不常见情况时运行。初始化脚本是我无法控制的代码的精简包装。
如果服务被杀死而未stop
在其初始化脚本上运行该操作,则该服务将被异常终止,并使系统处于损坏状态,需要人工干预才能修复。
当运行该服务的系统关闭时,它们会干净地杀死它。我可以注册该服务,chkconfig
以便在主机关闭时通过init脚本关闭该服务;这样就可以解决每个主机的问题。
问题:
我想将此服务的配置自动化,以通过Puppet关机。
如何通知Puppet向其注册服务,chkconfig
以便在系统关闭时可以通过init脚本停止该服务,而不会由Puppet进行管理?
我尝试过的
我exec
在Puppet中做了一个chkconfig
直接调用的hokey语句,但是感觉不太优雅(并且可能会以我未曾想到的某种方式破坏)。
我玩过Puppet中类型的noop
标志service
,但是似乎没有达到预期的效果。
Puppet没有任何内置的支持来配置服务运行在哪个运行级别上,也没有任何内置的通用支持chkconfig
。通常,向服务注册是服务安装的责任chkconfig
。从系统RPM安装的服务以这种方式注册。
此外,根据LSB约定,chkconfig会在initscripts的顶部识别结构化注释,以确定该服务默认在哪个运行级别运行。只需向chkconfig注册适当的初始化脚本即可设置默认运行级别-尤其是要在运行级别0和6中将其设置为停止,这就是您要执行的操作。
如果您要滚动自己的初始化脚本并手动或直接通过Puppet部署它们(而不是打包并通过Yum安装它们),那么最好的选择可能是建立一个定义类型来管理该初始化脚本及其注册。您不需要并且可能不需要Service
资源,但是File
需要将适当的文件放置在适当的位置的Exec
资源以及用于处理注册的资源听起来是正确的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句