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