Как я могу поместить вывод Chef 'execute resource' в переменную

Я хотел бы поместить вывод команды оболочки в переменную для последующего использования в рецепте шеф-повара.

В bash я мог бы сделать что-то вроде output=`tail -1 file.txt`, а затем мог echo $output

Может ли "выполнить ресурс" сделать это, чтобы я мог использовать результат позже в рецепте?

Ответ 1

в то время как решение Graham, похоже, работало сначала, я узнал о Chef:: Mixin: ShellOut

ruby_block "check_curl_command_output" do
    block do
      #tricky way to load this Chef::Mixin::ShellOut utilities
      Chef::Resource::RubyBlock.send(:include, Chef::Mixin::ShellOut)      
      curl_command = 'curl --write-out %{http_code} --silent --output /dev/null '+node['url']
      curl_command_out = shell_out(curl_command)
      if curl_command.stdout == "302"
        ...
      else
        ...
      end
    end
    action :create
end

Chef:: Mixin: ShellOut особенно полезен, если вам нужно запустить команду как определенный пользователь (см. http://www.slideshare.net/opscode/chef-conf-windowsdougireton):

ruby_block "run_command_as" do
    block do
    Chef::Resource::RubyBlock.send(:include,Chef::Mixin::ShellOut)
    add_group = shell_out("your command",
        {
          :user => "my_user",
          :password => "my_password",
          :domain => "mycorp.com"
        }
        )
    end
end