Chef infra 如何在配方中运行ruby块并将结果传递给模板
前几天你们都用一些ruby代码帮助我解析字符串并修改它()。现在,诀窍是如何将其插入厨师食谱,以便填充到模板中 ruby块提供了我需要的结果,至少当我在独立ruby中测试时是这样。从在线搜索来看,似乎有一种方法可以做到这一点,那就是使用run_state[]。不幸的是,它没有填充到模板中 基本上,在配方中,我有以下代码块:Chef infra 如何在配方中运行ruby块并将结果传递给模板,chef-infra,chef-recipe,Chef Infra,Chef Recipe,前几天你们都用一些ruby代码帮助我解析字符串并修改它()。现在,诀窍是如何将其插入厨师食谱,以便填充到模板中 ruby块提供了我需要的结果,至少当我在独立ruby中测试时是这样。从在线搜索来看,似乎有一种方法可以做到这一点,那就是使用run_state[]。不幸的是,它没有填充到模板中 基本上,在配方中,我有以下代码块: ruby_block "new db home" do block do if node['oracledb']['oraclehome']['db']['hom
ruby_block "new db home" do
block do
if node['oracledb']['oraclehome']['db']['home'].split('/')[-1].include?('dbhome_')
db_home = node['oracledb']['oraclehome']['db']['home']
digits = db_home[/\d+$/]
db_home[/\d+$/] = digits.to_i.next.to_s if digits
else
db_home = db_home + "/dbhome_1"
end
node.run_state['new_db_home'] = db_home
end
not_if { node['oracledb']['oraclehome']['db']['version'] == '11.2.0.4' }
end
然后在模板中,我尝试将其引用为:
db_home=<% node.run_state['new_db_home'] %>
db_主页=
谢谢,@Mr.,但为了确保我理解。。。您是否建议我替换节点。使用节点运行\u状态['new\u db\u home']=db\u home
。默认值[:new\u db\u home]=db\u home
?如果是这样,我如何在模板中引用它db_home=
?正确。只需确保只有在写入节点属性之后才读取节点属性。