1

Vagrant(1.0.5)とchef-solo(10.12.0)を使用してsslプロバイダーに取り組んでいます

gtm_cq というクックブック内に ssl というプロバイダーがあり、クックブックのデフォルト レシピでそのように定義します。

gtm_cq_ssl "author" do
    # attributes will come later
end  

次に、証明書をサーバーにプッシュすると、ssl プロバイダーのアクションを通知する以下のような cookbook_fileimportを作成します。

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)

これはバグですか?

4

2 に答える 2

1

「遅延」通知を受信する(つまり、:immediatelyなしで)リソースは、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アクションが呼び出されるとすぐに、そのリソースがキューに入れられるのではなく実行されます。

于 2012-11-30T12:48:45.033 に答える
0

構文は

notifies :import, "gtm_cq_ssl[author]", :immediately
于 2012-11-27T14:09:54.713 に答える