2016-09-08 181 views
0

我試圖從我的紅寶石塊得到一個變量,但廚師不承認我的變量以外的塊。我怎樣才能從紅寶石塊檢索任何變量?提前致謝。廚師 - 從紅寶石塊變量

ruby_block 'fetch_path' do                    
    block do                       
     current_path = `sudo cat /var/chef/cache/revision`       
     new_path = current_path.to_s.split(',').last.split('"').drop(1).first  
     Chef::Log.info("### Your Current Directory: '#{new_path}' ###")   
    end                        
end                         

Chef::Log.info("### Your Current Directory: '#{new_path}' ###") 

在塊內我可以得到一個值,但是,塊 - 沒有。

回答

0

這裏有兩件事。

首先,您的第二個Chef::Log.info將在編譯階段運行,此時您的ruby_block尚未收斂。見here about it。你可以用1)和2)前綴你的日誌,以便先運行一次。

其次,有一個範圍問題,當你在一個塊中定義一個變量時,它只能在這個塊中使用。

在廚師中,您可以使用node.run_state['variable']作爲全局變量的全局變量,無需用例就很難展示這一點。

備註:您不應該使用反引號``構造來執行命令並偏好使用配方DSL中的shell_out