Как использовать блок Ruby для назначения переменных в рецепте шеф-повара
Я пытаюсь на ходу выполнить логику Ruby по рецепту шеф-повара и считаю, что лучший способ добиться этого - с помощью блока.
У меня возникают трудности при переносе переменных, назначенных внутри блока, в основной код рецепта шеф-повара. Вот что я попробовал:
ruby_block "Create list" do
block do
to_use ||= []
node['hosts'].each do |host|
system( "#{path}/command --all" \
" | awk '{print $2; print $3}'" \
" | grep #{host} > /dev/null" )
unless $? == 0
to_use << host
end
end
node['hosts'] = to_use.join(',')
end
action :create
end
execute "Enable on hosts" do
command "#{path}/command --enable -N #{node['hosts']}"
end
Вместо того, чтобы пытаться переназначить атрибут chef на лету, я также попытался создать новые переменные в блоке, но все еще не могу найти способ получить к ним доступ вexecute
заявление.
Первоначально я использовал класс и вызывал методы, однако он был скомпилирован до рецепта, и мне действительно нужно, чтобы логика выполнялась во время выполнения, во время рецепта.