LWRP 领导者 remote_file_notification
chef LWRP remote_file_notification
我有一个 LWRP,它下载文件作为其步骤的一部分,我想用它来指示资源是否已更改
action: install do
# some other stuff here
remote_file "/some/file" do
source node[:mycookbook][:source_file]
mode 00755
action :create
notifies :run, 'ruby_block[set_status]', :immediately
end
ruby_block 'set_status' do
block do
new_resource.updated_by_last_action(true)
end
end
end
在我的食谱中我有:
my_provider do
# configure
notifies :run, 'something_else', :immediately
end
remote_file 是否运行似乎无关紧要,something_else
没有收到通知,但我不确定为什么。
我不确定您是否可以使用 ruby_block 延迟 new_resource.updated_by_last_action
(您正试图 运行 它超出您的提供商的执行范围?)。由于您的提供者操作已经 运行ning 在收敛时间,我通常不会在这里使用 ruby 块。我会做类似的事情:
action: install do
# some other stuff here
some_file = remote_file "/some/file" do
source node[:mycookbook][:source_file]
mode 00755
action :nothing
notifies :run, 'ruby_block[set_status]', :immediately
end
some_file.run_action(:create)
new_resource.updated_by_last_action(true) if some_file.updated_by_last_action?
end
立即在 remote_file
上调用 run_action
的另一个好处是您不再使用 DSL 创建 remote_file
资源并将其添加到资源集合,然后等待厨师在未来某个时间收敛它(然后等待您的 ruby_block 之后)。您正在当时和那里聚合您关心的资源,并检查它是否已更改(并相应地更新您的自定义资源)。
我有一个 LWRP,它下载文件作为其步骤的一部分,我想用它来指示资源是否已更改
action: install do
# some other stuff here
remote_file "/some/file" do
source node[:mycookbook][:source_file]
mode 00755
action :create
notifies :run, 'ruby_block[set_status]', :immediately
end
ruby_block 'set_status' do
block do
new_resource.updated_by_last_action(true)
end
end
end
在我的食谱中我有:
my_provider do
# configure
notifies :run, 'something_else', :immediately
end
remote_file 是否运行似乎无关紧要,something_else
没有收到通知,但我不确定为什么。
我不确定您是否可以使用 ruby_block 延迟 new_resource.updated_by_last_action
(您正试图 运行 它超出您的提供商的执行范围?)。由于您的提供者操作已经 运行ning 在收敛时间,我通常不会在这里使用 ruby 块。我会做类似的事情:
action: install do
# some other stuff here
some_file = remote_file "/some/file" do
source node[:mycookbook][:source_file]
mode 00755
action :nothing
notifies :run, 'ruby_block[set_status]', :immediately
end
some_file.run_action(:create)
new_resource.updated_by_last_action(true) if some_file.updated_by_last_action?
end
立即在 remote_file
上调用 run_action
的另一个好处是您不再使用 DSL 创建 remote_file
资源并将其添加到资源集合,然后等待厨师在未来某个时间收敛它(然后等待您的 ruby_block 之后)。您正在当时和那里聚合您关心的资源,并检查它是否已更改(并相应地更新您的自定义资源)。