ich ein Standard-Attribut definiert:Chef Attribut außer Kraft setzen nicht Wirksam
/cookbook-test/attributes/default.rb
## Environemnt attributes
default['cookbook-test']['flags']['test']="dummy_flag"
, die auf einem Rezept außer Kraft gesetzt ist (1) und ist auf Rezept verwendet (2)
/cookbook-test/recipes/default.rb
include_recipe 'cookbook-test::set-flag-based-on-file' #(1)
#...
include_recipe 'cookbook-test::other-recipe' # (2) this recipe needs the attribute
Auf dem Rezept, das das Attribut wird (1) außer Kraft gesetzt, je die Attributänderungen auf den Inhalt einer Datei:
/cookbook-test/recipes/set-flag-based-on-file.rb
ruby_block "Use attribute (A/B)" do
block do
# reads file for flag "A"/"B"
local_flag= ::File.read('/home/user/.flag').chomp
if local_flag== "A"
node.set['cookbook-test']['flags']['test'] = true
elsif local_flag== "B"
node.set['cookbook-test']['flags']['test'] = false
else
node.set['cookbook-test']['flags']['test'] = false
end
end
end
Hier ist, wie die r ECIPE (2) versucht, das Attribut zu verwenden:
/cookbook-test/recipes/other-recipe.rb
flag= node['cookbook-test']['flags']['test']
if flag == true
# something
elsif flag == false
# something
else
Chef::Log.error("XX attribute is not SET!")
end
jedoch, wenn das Kochbuch läuft und es wird Rezept (2) der Wert immer noch auf „dummy_flag“, wie es nie außer Kraft gesetzt wurde eingestellt. Ich habe versucht, das Attribut mit "node.force_default
" ohne Erfolg einzustellen.
Nachdem die Datei mit einer Fahne von „A“ ist nicht mit Auswirkungen auch gedacht, die Datei korrekt gelesen wird ...
var/chef/log/client.log
...
[2017-02-09T12:56:06-05:00] ERROR: XX attribute is not SET!
...
Was soll ich fehlen, für das Attribut korrekt außer Kraft gesetzt werden?
Chef garantiert die Bestellung, es ist einfach nicht die Reihenfolge, die Sie dachten, es war. Siehe https://coderranger.net/two-pass für einen Überblick :) – coderanger
danke für den Link :) – david