【问题标题】:Recipe to run on deployment and standalone在部署和独立运行的配方
【发布时间】:2014-04-26 01:22:15
【问题描述】:

我在下面有一个配方 (migrate.rb),它作为我们部署的一部分运行并且运行良好。

但是我不能锻炼的一件事是如何设置它,以便它也可以在 execute_recipe 命令中作为独立配方运行。

就目前而言,如果我们单独执行此配方,则不会发生任何事情,因为 node[:deploy].each 没有任何可循环的内容(部署密钥不存在)..

真正依赖部署节点的唯一部分是这一行cwd "#{deploy[:deploy_to]}/current",因为我需要知道代码部署到哪里。

node[:deploy].each do |application, deploy|

  execute 'DB migrate then seed' do
    cwd "#{deploy[:deploy_to]}/current"
    command 'php artisan migrate; while read -r line || [ -n "$line" ]; do php artisan db:seed --class="$line"; done < "app/database/run.list"'
  end

end

【问题讨论】:

    标签: amazon-web-services chef-infra chef-recipe aws-opsworks


    【解决方案1】:

    我会将该部分重新定位到定义(或提供者)。所以基本上把你的食谱分成两部分:

    recipes/deploy.rb:

    node[:deploy].each do |application, deploy|
      php_artisan_setup do
        dir "#{deploy[:deploy_to]}/current"
      end
    end
    

    定义/php_artisan_setup.rb:

    define :php_artisan_setup do
      execute 'DB migrate then seed' do
        cwd params[:dir]
        command 'php artisan migrate; while read -r line || [ -n "$line" ]; do php artisan db:seed --class="$line"; done < "app/database/run.list"'
      end
    end
    

    这样,您也可以从“独立”配方中调用php_artisan_setup。您仍然需要两个食谱,但您不必复制相关部分。

    【讨论】:

      猜你喜欢
      • 2019-01-11
      • 2013-05-27
      • 1970-01-01
      • 2015-03-21
      • 1970-01-01
      • 2020-06-22
      • 2021-02-09
      • 2015-08-01
      • 1970-01-01
      相关资源
      最近更新 更多