这是以通用方式从变量中配置提供程序的后续问题
我将一些提供程序包装成定义,我想知道如何处理通知。我成功地编写了一个廉价的实现,在这里我可以传递一个数组,类似于这样:
provider_definition name do
component $some_component
notifies [[:redeploy, "docker_container[some_container]", :immediately],
[:redeploy, "docker_container[some_other_cntr]", :delayed]]
end在我的定义中,我有这样的想法:
params[:notifies].each do |notify_action, resource_name, notify_time|
notifies notify_action, resource_name, notify_time
end当然还有更好的方法吗?我希望我能在食谱中保留同样的格式:
provider_definition name do
component $some_component
notifies :redeploy, "docker_container[some_container]", :immediately
notifies :redeploy, "docker_container[some_other_cntr]", :delayed
end但是当我这样做的时候,只有最后一个通知才符合我的定义。
发布于 2015-06-10 07:34:19
坚持定义,我认为你已经有了更好的方法。
实现您希望的目标的一个选项是将您的定义转换为LWRP,这将创建一个自定义资源,它可以将notify属性作为任何其他主厨资源。
docker库/资源/my_ployy.rb
action :deploy
default_action :deploy
attribute :component, kind_of: Hash, required: truedocker_library/provider/my_ployy.rb
action :deploy do
params = new_resource.component
docker_image params['name'] do
registry params['registry']
tag params['tag']
action :pull
end
end我可能是错误的类型为组件,我让你适应你的具体情况。写自内存,我可能忘了一些东西,有更多的文档这里关于LWRP。
和之前在食谱中一样,LWRP名称将从食谱名称和文件名中派生出来,因此在本例中:
my_component = $auth_docker
docker_library_my_deploy my_component.name do
component my_component
notifies :redeploy, "docker_container[some_container]", :immediately
notifies :redeploy, "docker_container[some_other_cntr]", :delayed
endhttps://stackoverflow.com/questions/30734873
复制相似问题