我正在使用 Vagrant (1.0.5) 和 chef-solo (10.12.0) 开发 ssl 提供商
我有我的提供程序,在名为 gtm_cq 的食谱中称为 ssl,我在食谱的默认食谱中将其定义为:
gtm_cq_ssl "author" do
# attributes will come later
end
然后我有我的 cookbook_file 如下所示,import
一旦它将证书推送到服务器,它应该通知我的 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 会按预期向上推,但import
我的 ssl 提供程序的操作永远不会被调用。我在任何参考资料中看到的最多的是日志中的这几行(删除了日志标题):
.. 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)
这是一个错误吗?