Frage Wie finde ich die Chef-Umgebung in einem Rezept?


Ich möchte eine cookbook_file-Ressource nur ausführen, wenn die aktuelle Umgebung "dev" ist. Wie kann dies ausgedrückt werden?

Die Dokumentation schlägt Folgendes vor:

In einem Rezept wäre ein solcher Codeblock sinnvoll:

qa_nodes = search(:node,"chef_environment:QA")      
qa_nodes.each do |qa_node|                          
    # Do useful specific to qa nodes only
end

Aber ich bin mir nicht sicher, ob ich das will - die Tatsache, dass es eine Schleife ist, scheint falsch zu sein.


30
2017-08-15 06:12


Ursprung




Antworten:


Suchen Sie im known-Attribut chef_environment (kein reguläres Attribut Chef) auf dem Knoten:

if node.chef_environment == "dev"
  # stuff
end

43
2017-08-15 07:56



Insbesondere ist chef_environment eine Methode für das Objekt Chef :: Node, das den Wert der Umgebung des Knotens zurückgibt. Es ist kein Knotenattribut und sollte nicht als solches verwechselt werden. - jtimberman
Danke @jtimberman. Ich hatte immer gedacht, dass eine Umgebung ein Attribut eines Knotens ist, aber es macht Sinn, dass es nicht ist. - Tim Potter
Großartig, das funktioniert. Also die Antwort auf meine ursprüngliche Frage ist hinzuzufügen only_if { node.chef_environment == "dev" }. Bestätigt. - Steve Bennett
Diese Antwort konnte nicht funktionieren. Diese Syntax funktioniert für mich: if "#{node.chef_environment}" == "dev" - spuder


ein anderer eleganter Weg:

if ['production','development'].include? node.chef_environment
    #do something here
end

2
2017-10-17 12:11