2012-10-29 2 views
0

J'ai créé un LWRP (ma première fois) mais il ne semble pas fonctionner comme requis. Je ne suis pas sûr si j'ai manqué quelque chose ou si j'ai fait quelque chose de mal. La documentation d'opscode est horrible. Je montre mon code ci-dessous:Le fournisseur de ressources de poids léger de chef ne fonctionne pas

Fournisseur

puts "FOO" 

def restart_process 
    @svc = Chef::Resource::RestartProcesses.new(new_resource.name) 
    Chef::Log.debug("Restarting services according to the box") 
    notifies :run, resources(:execute => 'restart-storm') 
end 

puts "BAR" 

action :restart do 

    execute 'restart-process' do 
    command <<-EOH 
     echo "-------Executing restart process--------" 
     #Some bash code 
    EOH 
    end 
end 

ressources

actions :restart 

attribute :name, :kind_of => String, :name_attribute => true 

def initialize(*args) 
    super 
    @action = :restart 
end 

Recette dont la ressource est appelée

template "#{install_dir}/####Something" do 
    source "someSource.erb" 
    variables(
    ###Some variables 
) 

    notifies :run, 'nameOfCookbook_nameOfResource[process]' 
end 

nameOfCookbook_nameOfResource "process" do 
    action :nothing 
end 

La sortie du chef affiche FOO BAR mais elle n'imprime rien dans mon script bash. Donc ça ne marche pas le bash. Des pointeurs?

Répondre

1

Ne vous devez dire à l'instance pour exécuter l'action: redémarrer

comme

restart = nameOfCookbook_nameOfResource "process" do 
    action :nothing 
end 

restart.run_action(:restart) 

Je sais que vous avez défini l'initialize dire restart mais je pense passer l'action: rien écrase que si la force soit à exécuter lorsque vous voulez en suivant l'exemple ci-dessus ou dans la partie de modèle l'action réelle notifier que vous voulez en tant que telle

notifies :restart 

en exécutant cette myse Si j'ai vu une action de: rien n'est exécuté sur la ressource seulement. Pas le comportement par défaut qui dans mon cas aurait été: stop

En changeant la notification à: stop il avait le comportement attendu. Ma compréhension du journal est que vous avez dit à votre ressource de s'exécuter mais que son action est: rien alors elle ne fait rien.

+0

Modifié. notifie: redémarrer au lieu de notifie: exécuter devrait fonctionner – PatrickWalker

+0

Cool, cela a fonctionné. Merci :) – noMAD

0

Assurez-vous que votre

notifies :run, 'nameOfCookbook_nameOfResource[process]' 

dans le modèle réellement programmé pour fonctionner. (Utilisation de la sortie de débogage, par exemple). Parce que si le fichier existe déjà, rien ne sera fait et donc le redémarrage aussi.

Questions connexes