小编Imm*_*yGo的帖子

如何使用 Ruby 块在厨师食谱中分配变量

我正在尝试在 Chef 配方中即时执行 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
Run Code Online (Sandbox Code Playgroud)

我没有尝试即时重新分配 Chef 属性,而是尝试在块中创建新变量,但仍然找不到在execute语句中访问它们的方法。

我最初使用的是一个类和调用方法,但是它是在配方之前编译的,我真的需要在配方期间在运行时执行逻辑。

ruby chef-infra chef-recipe

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

chef-infra ×1

chef-recipe ×1

ruby ×1