2017-03-21 169 views
0

ruby​​_block資源奇怪的行爲,我有一個配方的末尾有兩個紅寶石塊:與廚師

ruby_block 'set permissions for app dir' do 
    block do 
    require 'fileutils' 
    FileUtils.chown_R 'user01', 'user01', '/mnt/app/' 
    end 
    action :run 
end 

ruby_block 'configure node app session' do 
    block do 
    cmd = "sudo su - user01 -c \"/mnt/app/http-app-/bin/app create /mnt/app/http-app/#{node['hostname']}\" && sudo su -c 'systemctl enable app' && sudo su -c 'systemctl start app'" 
exec(cmd) 
    end 
    action :run 
    not_if "stat -c %U /mnt/app/#{node['hostname']} |grep app" 
end 

一對夫婦奇怪的事情正在發生。一,我不能在最後一個塊之後添加任何代碼......如果添加,它將不會運行。二,當食譜運行食譜時,如果運行失敗或成功,永遠不會結束。第二次引導系統將被證明能夠成功完成......但是對盒子和運行的廚師客戶端ssh'ing回來了一個空的運行列表。

任何人都可以解釋這種行爲嗎?我該如何解決它?

回答

1

exec()不是你想象的。這是一個Ruby核心方法,它調用實際的exec()系統調用,它用新的東西替換當前進程。你想要的是我們的shell_out!()助手,它運行一個子命令,並返回結果並返回對象。