2015-04-18 1 views
10

Я хочу получить вывод команды в атрибут chef. Может ли кто-нибудь помочь мне, как установить это в ресурсе ресурса или ресурса bash.Как получить вывод команды linux для атрибута chef

ruby_block "something" do 
    block do 
     #tricky way to load this Chef::Mixin::ShellOut utilities 
     Chef::Resource::RubyBlock.send(:include, Chef::Mixin::ShellOut)  
     command = 'cat #{fileName}' 
     command_out = shell_out(command) 
     node.set['my_attribute'] = command_out.stdout 
    end 
    action :create 
end 

Как использовать атрибуты в коде выше ..

+1

, пожалуйста, добавьте код, чтобы мы могли видеть проблему, с которой вы столкнулись. – dax

+0

Похоже, вопрос https://serverfault.com/, но все еще неясный, что вы хотите. – Fionn

+1

Фактическая проблема, похоже, 'command = 'cat # {имя_файла}' ', где @SASI должен был использовать двойные кавычки, чтобы включить синтаксический анализ (например,' command = "cat # {fileName}" ') – scones

ответ

14

Ответ на ваш вопрос довольно Mich приведены в How can I put the output of a Chef 'execute resource' into a variable. С крошечной модификацией, если я понимаю вопрос правильно, ваша проблема может быть решена так:

ruby_block "something" do 
    block do 
     #tricky way to load this Chef::Mixin::ShellOut utilities 
     Chef::Resource::RubyBlock.send(:include, Chef::Mixin::ShellOut)  
     command = 'cat /etc/hostname' 
     command_out = shell_out(command) 
     node.set['my_attribute'] = command_out.stdout 
    end 
    action :create 
end 

Заменить содержание command с командой, которую вы хотите запустить и my_attribute с атрибутом, который вы хотите установить.

+0

Это ИМХО хотя бы отвечает ваш вопрос. Если вы описали свою проблему, мы могли бы найти более элегантное решение. – StephenKing

+0

Благодаря StephenKing .. моя команда «Суда су - сетка + ASM ASMCMD lsdsk -G данные» Я должен войти в систему как пользователь сетки и войти в + процесс ASM и выполнить команду. Не могли бы вы помочь мне, как запустить это в рецепте. – SASI

+1

@ user3886612 Измените свой вопрос, чтобы описать прецедент, поэтому мы можем сделать повторное голосование – Tensibai

Смежные вопросы