Chef infra 未从cookbook_文件通知提供商

Chef infra 未从cookbook_文件通知提供商,chef-infra,Chef Infra,我正在使用Vagrant(1.0.5)和chef solo(10.12.0)开发ssl提供商 我在一本名为gtm_cq的烹饪书中有一个名为ssl的提供者,我在烹饪书的默认配方中定义它: gtm_cq_ssl "author" do # attributes will come later end 然后,我的cookbook_文件如下所示,当ssl提供商将证书推送到服务器时,该文件应通知其导入操作: cookbook_file "#{node[:cq][:ssl][:author_c

我正在使用Vagrant(1.0.5)和chef solo(10.12.0)开发ssl提供商

我在一本名为gtm_cq的烹饪书中有一个名为ssl的提供者,我在烹饪书的默认配方中定义它:

gtm_cq_ssl "author" do
    # attributes will come later
end  
然后,我的cookbook_文件如下所示,当ssl提供商将证书推送到服务器时,该文件应通知其导入操作:

cookbook_file "#{node[:cq][:ssl][:author_cert_location]}/foo.cer" do
    source "foo.cer"
    owner "crx"
    group "root"
    mode "0644"
    notifies :import, resources(:gtm_cq_ssl => "author")
end
当我运行此操作时,foo.cer会按预期向上推,但从未调用ssl提供程序的
import
操作。我在任何引用中看到的最多的是日志中的以下几行(已删除的日志标题):

有一个非常明显的大型日志语句,以及使用另一个cookbook_文件作为测试文件将某些内容推送到服务器。没有日志语句,没有推送测试文件。我也确信foo.cer文件在每次测试之前都会从服务器上删除

我发现如果我用
:立即

notifies :import, resources(:gtm_cq_ssl => "author"), :immediately
它似乎起作用了。我想这在我的特殊情况下是可以的,但如果这是我打电话给我的服务提供商的唯一方式的话,似乎有些不对劲

在此方面的任何帮助都将不胜感激

谢谢

编辑:

所以经过进一步调查,我的提供者确实被调用了,但我的提供者中的cookbook\u文件调用从未被调用。日志没有引用它。这是我的提供者:

action :import do

    Chef::Log.info "This is my LOG!!!!!!!!!!"
    cookbook_file "/opt/cq5/worked.dat" do
        source "worked.dat"
        cookbook "gtm_cq"
        owner "crx"
        group "root"
        mode "0644"
    end

end
这里是日志记录,我的日志语句出现在这里,但与正在执行的
worked.dat
cookbook文件无关”


这是一个bug吗?

我认为语法应该是

notifies :import, "gtm_cq_ssl[author]", :immediately

我认为语法应该是

notifies :import, "gtm_cq_ssl[author]", :immediately
收到“延迟”通知(即没有:立即)的资源将在Chef运行结束时执行

我认为在那一点上,对于像
cookbook\u文件
这样的东西来说可能太晚了:导入

您可以尝试以下方法:

action :import do
    Chef::Log.info "This is my LOG!!!!!!!!!!"
    cookbook_file "/opt/cq5/worked.dat" do
        source "worked.dat"
        cookbook "gtm_cq"
        owner "crx"
        group "root"
        mode "0644"
        action :nothing      # <— add this
     end.run_action(:create) # <- change this
end
操作:导入do
厨师长:Log.info“这是我的日志!!!!!!!!!!!!!!!!!”!!!!!!!!!!"
食谱文件“/opt/cq5/worked.dat”do
来源“worked.dat”
食谱“gtm_cq”
所有者“crx”
组“根”
模式“0644”
操作:在Chef运行结束时,不会执行任何接收“延迟”通知(即没有:立即)的资源

我认为在那一点上,对于像
cookbook\u文件
这样的东西来说可能太晚了:导入

您可以尝试以下方法:

action :import do
    Chef::Log.info "This is my LOG!!!!!!!!!!"
    cookbook_file "/opt/cq5/worked.dat" do
        source "worked.dat"
        cookbook "gtm_cq"
        owner "crx"
        group "root"
        mode "0644"
        action :nothing      # <— add this
     end.run_action(:create) # <- change this
end
操作:导入do
厨师长:Log.info“这是我的日志!!!!!!!!!!!!!!!!!”!!!!!!!!!!"
食谱文件“/opt/cq5/worked.dat”do
来源“worked.dat”
食谱“gtm_cq”
所有者“crx”
组“根”
模式“0644”
行动:没什么#