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

让puppet确保服务仅在不处于维护模式时运行,puppet,Puppet,我在一个傀儡清单中有一个基本的服务检查,我希望大部分时间只运行它 service{ $service_name : ensure => "running", enable => "true", } 问题是,有一段时间的维护,我想确保木偶不会出现,并尝试重新启动它 我在考虑在指定路径中创建一个文件“no_service_start”,并执行“creates”检查,就像您可以使用一个用于exec的守卫一样,但它看起来不适用于服务类型 我的下一个想法是让实际的servic

我在一个傀儡清单中有一个基本的服务检查,我希望大部分时间只运行它

service{ $service_name :
    ensure => "running",
    enable => "true",
}
问题是,有一段时间的维护,我想确保木偶不会出现,并尝试重新启动它

我在考虑在指定路径中创建一个文件“no_service_start”,并执行“creates”检查,就像您可以使用一个用于exec的守卫一样,但它看起来不适用于服务类型

我的下一个想法是让实际的serviceinit脚本对这个文件本身进行检查,如果这个保护文件存在的话,那么它就会早死

虽然这可以防止服务启动,但它在puppet中显示为一个大的红色错误(如预期的那样)。鉴于服务不启动是一个理想的结果,如果该文件已就位,我宁愿没有错误消息出现,也不得不花时间考虑它是否“合法”


有没有一种更为“傀儡”的方式来实现这一点呢?

我真的不喜欢这个答案,但是要解决傀儡在保护文件的b/c被释放时吐出错误的问题,就必须初始化执行该检查的脚本,退出代码为0。

把检查放在外面怎么样?你可以做类似的事情:,除了在if循环中进行服务检查。

正如仙凯所说,你可以在puppetmaster上做这件事。如果脚本以字符串形式返回
running
stopped
,具体取决于当前时间或任何内容,则可以编写如下内容:

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

定义何时进行维护的事实

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

if !maintenance
{
    service{ $service_name :
       ensure => "running",
       enable => "true",
    }
}
然后,当puppet编译目录时,如果maintenance==true,则服务将不会被管理,并保持在当前的任何状态