para - funciones del chef
¿Cómo puedo poner la salida de un Chef ''ejecutar recurso'' en una variable (2)
Funciona para mi
require ''chef/mixin/shell_out''
passenger_root = shell_out("passenger-config --root").stdout
Me gustaría poner la salida de un comando de shell en una variable para su uso posterior en una receta de Chef.
En bash podría hacer algo como output=`tail -1 file.txt`
y luego podría hacer echo $output
¿Puede un ''recurso de ejecución'' hacer esto para que pueda usar el resultado más adelante en la receta?
aunque la solución de Graham pareció funcionar al principio, descubrí lo de 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_out.stdout == "302"
...
else
...
end
end
action :create
end
Chef :: Mixin: ShellOut es particularmente útil si necesita ejecutar el comando como un usuario específico (consulte 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