【问题标题】:Chef scripts, execute resource and execution orderChef 脚本,执行资源和执行顺序
【发布时间】:2015-02-05 20:25:00
【问题描述】:

我有以下厨师食谱:

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

我的理解是 Chef 食谱是按顺序执行的,但是执行是否也等待它创建的 shell 进程返回?还是我还缺少其他东西?

【问题讨论】:

    标签: amazon-s3 chef-infra execute chef-recipe


    【解决方案1】:

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

    log "Finished downloading files" do
      level :info
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-05
      • 2017-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多