у меня есть атрибут по умолчанию, определяемый:Chef атрибутов переопределения не вступают в силу
/cookbook-test/attributes/default.rb
## Environemnt attributes
default['cookbook-test']['flags']['test']="dummy_flag"
Вот перекрываться по рецепту (1) и используется по рецепту (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
На рецепт, который атрибут переопределяется (1), изменение атрибутов в зависимости от содержимого файла:
/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
Вот как г ECIPE (2) пытается использовать атрибут:
/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
Однако когда поваренная книга работает и он получает рецепт (2) значение по-прежнему установлен на «dummy_flag», как это никогда не было преодолено. Я попытался установить атрибут с «node.force_default
» без успеха.
Имея файл с флагом «А», не имеющий эффект даже думал, что файл уже правильно читать ...
var/chef/log/client.log
...
[2017-02-09T12:56:06-05:00] ERROR: XX attribute is not SET!
...
Что я не хватает, для атрибута должен быть переопределен правильно?
Шеф-повар действительно гарантирует заказ, это просто не тот порядок, о котором вы думали. См. Https://coderanger.net/two-pass для обзора :) – coderanger
спасибо за ссылку :) – david