我正在使用Vagrant(1.0.5)和chef-solo(10.12.0)开发ssl提供程序
我有一个名为ssl的供应商,名为ssl,名为gtm_cq,我在食谱的默认食谱中将其定义为:
gtm_cq_ssl "author" do
# attributes will come later
end
然后我的cookbook_file如下所示,一旦将证书推送到服务器,就会通知我的ssl提供商的import
操作:
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_file[/opt/cq5/author/foo.cer] sending import action to gtm_cq_ssl[author] (delayed)
.. Processing gtm_cq_ssl[author] action import (gtm_cq::author line 34)
有一个非常明显的日志语句以及另一个cookbook_file用于测试文件以将某些东西推送到服务器。没有日志语句,没有推送测试文件。我也确定在每次测试之前都会从服务器上删除foo.cer文件。
我发现如果我使用:immediately
notifies :import, resources(:gtm_cq_ssl => "author"), :immediately
似乎有效。我想在我的特定情况下这是可以的,但如果这是我可以给我的提供者打电话的唯一方式,那似乎是不对的。
对此的任何帮助将不胜感激。
谢谢!
编辑:
因此,经过进一步调查后,事实证明我的提供程序已被调用,但我的提供程序中的cookbook_file调用从未被调用过。日志没有引用它。这是我的提供者:
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
食谱文件“
INFO: cookbook_file[/opt/cq5/author/nike.cer] sending import action to gtm_cq_ssl[author] (delayed)
INFO: Processing gtm_cq_ssl[author] action import (gtm_cq::author line 15)
INFO: This is my puts you PUTZ!!!!!!!!!!
INFO: template[/etc/httpd/conf/cq-farms/farm_10author.any] sending restart action to service[apache2] (delayed)
INFO: Processing service[apache2] action restart (apache2::default line 217)
这是一个错误吗?
答案 0 :(得分:1)
在Chef运行结束时执行接收“延迟”通知的资源(即没有:立即执行)。
我认为在这一点上,对于像你里面的cookbook_file
这样的东西可能为时已晚:import。
您可以尝试这样的事情:
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
一旦调用:import动作而不是对其进行排队,这将运行该资源。
答案 1 :(得分:0)
我认为语法应该是
notifies :import, "gtm_cq_ssl[author]", :immediately