让puppet确保服务仅在不处于维护模式时运行

时间:2013-12-19 19:29:35

标签: puppet

我在一个木偶清单中有一个基本的服务检查,我想大部分时间只用

运行
service{ $service_name :
    ensure => "running",
    enable => "true",
}

事情是有一段时间的维护我想确保木偶不会出现并试图重新开始。

我正在考虑在指定的路径中创建一个“no_service_start”文件并执行“创建”检查,就像你可以使用exec的一个保护程序一样,但它看起来不像服务类型那样。

我的下一个想法是让实际的服务初始化脚本检查这个文件本身,如果该保护文件存在,就早点死。

虽然这可以防止服务启动,但它在puppet中表现为一个大的红色错误(如预期的那样)。鉴于服务没有启动是一个理想的结果,如果该文件到位,我宁愿没有错误信息,并且必须花时间思考它是否“合法”。

是否应该实施更多“傀儡”方式?

4 个答案:

答案 0 :(得分:2)

定义维护发生的事实。

然后根据该事实将服务定义放在if块中。

if !maintenance
{
    service{ $service_name :
       ensure => "running",
       enable => "true",
    }
}

然后当puppet编译目录时,如果维护== true,则不会管理服务并保持其当前所处的状态。

答案 1 :(得分:0)

我真的不喜欢这个答案,但是当一个保护文件的b / c出现错误时,要解决这个问题的初始脚本需要使用退出代码为0来执行该检查保释的初始脚本。

答案 2 :(得分:0)

把支票放到外面怎么样?您可以执行与此类似的操作:https://stackoverflow.com/a/20552751/1097483,除非在if循环中进行服务检查。

答案 3 :(得分:0)

正如xiankai所说,你可以在puppetmaster上做到这一点。如果您的脚本以字符串形式返回runningstopped,则根据当前时间或任何内容,您可以编写如下内容:

service{ $service_name :
    ensure => generate('/usr/local/bin/maintenanceScript.sh');
}