我正在尝试了解有关 LWRP 的更多信息,并有一个安装包的工作提供程序。当配置更改时,我试图通知我的服务 - 基本上我在下面有这个。
我可以让 runit 服务订阅软件包已安装/配置更改的通知吗?在解决方案中,可以解耦服务和包,即。基于观察者而不是通知 runit_service["abc"] ?我想为该服务创建一个单独的提供者,但还没有找到明确的例子。
module MyApp
class Resource < Chef::Resource
include Poise
provides(:my_app)
actions(:enable)
end
class Provider < Chef::Provider
include Poise
provides(:my_app)
def action_enable
notifying_block do
template new_resource.database_config do
source 'database.erb'
#how to notify runit?
end
deploy_revision new_resource.process_id do
#how to notify runit?
end
end
end
end
end
在食谱中
my_app 'one' do
#some attributes
process_user 'nobody'
process_group 'nogroup'
end
runit_service "myapp" do
cookbook "myapp"
run_template_name "myapp"
log_template_name "myapp"
options({
:app_env => "development",
:app_home => "/srv/myapp/current",
:data_dir => "/srv/myapp/data"
})
retries 3
retry_delay 5
end
干杯!