2014-12-08 125 views
0

我有以下廚師配方:廚師腳本,執行資源和執行順序

Chef::Log.info "Downloading files" 
execute "aws s3 sync s3://mybucket/prod/ . --delete --region=ap-southeast-2" do 
    user 'vagrant' 
    environment 'HOME' => "/home/vagrant" 
    cwd '/var/www/public/lib/files' 
end 
Chef::Log.info "Finished downloading files" 

的事情是,「下載完成的文件」正在S3的同步命令完成之前輸出。我可以說,因爲腳本需要很長時間才能完成,我可以看到逐漸創建的文件。

我的理解是,廚師食譜是按順序執行的,但執行還等待它創建的shell進程返回嗎?還是有什麼我失蹤?

回答

3

廚師分兩步走。首先它將所有資源集中在一起,然後執行它們。在你的情況下,execute資源實際上在第二階段運行,但日誌語句在第一階段運行。如果您將日誌語句更改爲資源,它將按照您的預期運行:

log "Finished downloading files" do 
    level :info 
end