21
我想将shell命令的输出放入一个变量中,供以后在厨师食谱中使用。如何将厨师'执行资源'的输出放入变量中
在bash我可以做类似output=`tail -1 file.txt`
,然后我可以echo $output
能的“执行资源”做到这一点,这样我可以在配方使用后的结果?
我想将shell命令的输出放入一个变量中,供以后在厨师食谱中使用。如何将厨师'执行资源'的输出放入变量中
在bash我可以做类似output=`tail -1 file.txt`
,然后我可以echo $output
能的“执行资源”做到这一点,这样我可以在配方使用后的结果?
而格雷厄姆的解决方案一开始就有些工作,我发现了厨师::密新: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
厨师::密新: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
这是比接受的答案更优雅的解决方案,并提供更好的功能。感谢发布,弗朗索瓦! – cixelsyd 2014-07-03 21:07:24
有没有人为这种类型的代码写chefspec? – 2015-12-28 23:18:46