Если у вас есть обертка поваренную книгу, которая перекрывает производный атрибуты, вам нужно использовать отложенную загрузку так:Может ли CHEF lazy загружать несколько атрибутов?
библиотека поваренной
default['foo'] = 42
default['url'] = "http://example.com/#{foo}"
Упаковочный поваренной
default['foo'] = 9000
default['url'] = "http://example.com/#{foo}"
some_resource 'derp' do
url node['url'] % { foo: node['foo'] }
action :do_stuff
end
Вышеуказанные работы.
Как вы используете ленивую загрузку для нескольких производных атрибутов?
Например, мне нужно вывести url
прочь derp
, который получен прочь foo
default['foo'] = 42
default['derp'] = "bar-#{foo}"
default['url'] = "http://example.com/#{derp}"
some_resource 'derp' do
url node['url'] % { foo: node['foo'], derp: node['derp'] } #Guessing this is the right syntax
action :do_stuff
end
Однако это дает ошибку
KeyError
--------
key{node['url']} not found
Этот пример значительно упрощен, полный код изложенные здесь: https://github.com/SimpleFinance/chef-zookeeper/issues/151
Обновление
Для справки, вопрос был решен здесь: https://github.com/SimpleFinance/chef-zookeeper/commit/6750ea8c11a6dd7ef1c0f76ac8c61b71a172fb80