2013-04-30 7 views

Odpowiedz

20

natomiast rozwiązanie Grahama wydawało się działać na początku, ja dowiedziałem się o 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 jest szczególnie przydatna, gdy trzeba uruchomić polecenie jako konkretnego użytkownika (por 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 
+0

jest to bardziej eleganckie rozwiązanie problemu niż przyjętym odpowiedź, i zapewnia lepszą funkcjonalność. Dzięki za publikację, Francois! – cixelsyd

+0

Czy jest ktoś, kto napisał chefspec dla tego typu kodu? –

Powiązane problemy