2013-02-18 8 views
8

Ich habe versucht, die Antwort zu diesem Thema in der Chef-Docs und durch Google zu finden, aber ich habe nicht in der Lage, mit etwas zu kommen. Ich bin (noch) kein Ruby-Typ, also könnte die Antwort darauf sein, dass ich das Problem mit "gerade genug Rubin für Chef" angehen würde. Hier ist, was ich tun möchte: In meiner deploy Ressource, in der before_migrate Attribut, möchte ich eine Ressource in meinem aktuellen Rezept ausführen. Was ich gerade mache ist, einfach die Ressource in den Block zu stopfen, aber ich weiß, dass es einen besseren Weg geben muss, es zu tun.Access Chef Ressourcen in Ruby Block

before_migrate do 

    template "#{app_root}/#{applet_name}/local_settings.py" do 
     source "local_settings.py.erb" 
     owner app_config['user'] 
     group app_config['group'] 
     variables(
      :database_name => app_config['postgresql']['database_name'], 
      :user => app_config['postgresql']['user'], 
      :password => app_config['postgresql']['password'] 
     ) 
     action :create 
    end 
end 

Was denn ich bin mit dem Ziel ist so etwas wie

before_migrate do 
    "template #{app_root}/#{applet_name}/local_settings.py".execute 
end 

So kann ich diese Vorlage Code wiederverwenden. Vielen Dank!

Antwort

2

Dank der großartigen Jungs im IRC Channel #chef habe ich mein Problem gelöst. Die Benachrichtigung Ressource muss direkt zugegriffen werden,

Chef::Resource::Notification.new("template[#{app_root}/#{applet_name}/local_settings.py", :create)

mit dem die template Ressource benachrichtigt die :create Aktion auszuführen.

2

Sie die Ressource außerhalb der „Bereitstellung“ Ressource mit einer Aktion von nichts geben konnte, und dann, in der * before_migrate * Sie so etwas wie:

before_migrate do 

     ruby_block "notify_template" do 
      block do 
       true 
      end 
      action :create 
      notifies :create, "template[#{app_root}/#{applet_name}/local_settings.py]", :immediately 
     end 

    end 

Auf diese Weise können Sie es benachrichtigen, wenn Sie brauchen es.

Verwandte Themen