Chef脚本,执行资源和执行顺序

时间:2014-12-08 07:53:40

标签: amazon-s3 chef execute chef-recipe

我有以下厨师食谱:

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 sync命令之前输出“已完成下载文件”。我可以说,因为脚本需要很长时间才能完成,我可以看到文件正在逐步创建。

我的理解是Chef配方是按顺序执行的,但是执行还会等待它创建的shell进程返回吗?或者还有其他我想念的东西?

1 个答案:

答案 0 :(得分:3)

Chef分两步完成。首先,它将所有资源收集在一起,然后执行它们。在您的情况下,execute资源实际上在第二阶段运行,但日志语句在第一阶段运行。如果将日志语句更改为资源,它将按预期运行:

log "Finished downloading files" do
  level :info
end
相关问题