2016-03-24 5 views
0

Ich suche die johnbellone/consul-cookbook auf Github an und ich sehe die folgenden:Was geschieht, wenn Sie einer Variablen in einem Chef-Rezept eine Ressource zuweisen?

install = consul_installation node['consul']['version'] do |r| 
if node['consul']['installation'] 
    node['consul']['installation'].each_pair { |k, v| r.send(k, v) } 
end 
end 

Wenn es um die Ressource der Variable es die Ressource/Provider jemals ausführen kann nicht installiert zuweist? Vielleicht führt es es sofort aus? Anstatt den zweiphasigen Prozess des Kompilierens und Konvergierens als separate Phasen durchzuführen?

Antwort

2

Es ändert nichts, es gibt immer einen Rückgabewert von den DSL-Methoden, normalerweise ignorieren Sie es, so dass es weggeworfen wird. Konkret liefert jede DSL-Methode das kompilierte Ressourcenobjekt, in diesem Fall eine Instanz der Klasse ConsulInstallation.

Dies wird in diesem Fall wegen eines Musters von mir für die Abhängigkeit Inversion/Injektion für Chef Ressourcen verwendet. Später können Sie install.consul_program sehen, die eine Inversionsbefehlssuche ausführt, da die Ressource consul_installation mehrere zugrunde liegende Provider aufweist, die zur Laufzeit variieren können.

Verwandte Themen