【发布时间】:2015-04-30 00:50:36
【问题描述】:
在keepalived说明书中有这样的keepalived服务资源定义:
service "keepalived" do
supports :restart => true
action [:enable, :start]
subscribes :restart, "template[keepalived.conf]"
end
这对大多数人来说可能没问题,但我不想重新启动keepalived,以防配置发生微小变化。重新启动将导致将 ip 从主服务器移动到从服务器等等 - 在 CentOS 上重新加载服务就足够了。
所以我开始像这样将它包装在我的食谱中:
begin
r = resources(:service => "keepalived")
r.supports :restart => true, :reload => true
r.subscribes :reload, "service[keepalived]"
rescue Chef::Exceptions::ResourceNotFound
Chef::Log.warn "could not find service to override!"
end
但这称为重新启动,然后重新加载服务:
Recipe: keepalived::default
- restart service service[keepalived]
- reload service service[keepalived]
我在这里找到:https://github.com/chef/chef/blob/78ba88287781667e4aa344bc4ceff280fa7ac466/lib/chef/resource.rb#L316 subscribes 被转换为 notifies 所以我尝试将通知包装在 template[keepalived.conf] 上,结果相同但没有成功;/
有人可以帮忙吗?
【问题讨论】:
-
我猜你必须从资源集合中删除它,但我只是不确定,如何做到这一点。
-
听起来您可以对
keepalived食谱提出改进请求,或者向他们发送包含更改的拉取请求。
标签: chef-infra wrapper cookbook recipe