【问题标题】:Chef passing revision variable to deploy resourceChef 传递修订变量以部署资源
【发布时间】:2012-10-22 21:09:48
【问题描述】:

我正在尝试将要部署的 git 分支传递给 Chef 部署资源,但它不起作用,我猜这是因为资源是单独编译然后才执行的?但我可能错了,因为我对 Ruby 的理解有限。

所以我正在尝试这样做:

ruby_block 'revision' do
  block do
    # Some code determines the branch to be deployed
    branch = 'master'

    node.run_state['branch'] = branch

  end
end

deploy "#{node['path']['web']}" do
  action :deploy
  repository "#{node['git']['repository']}"
  revision "#{node.run_state['branch']}"
end

但是部署资源没有通过该变量。

这是解决此问题的正确方法吗?有没有更好的方法或其他方法?

提前致谢!

【问题讨论】:

    标签: ruby git deployment chef-infra


    【解决方案1】:

    此时 chef 编译你的 deploy 资源 ruby_block 资源还没有运行,所以 node.run_state['branch'] 没有设置。您必须将 deploy 资源移动到 ruby_block 并动态定义它。

    ruby_block 'revision' do
      block do
        # Some code determines the branch to be deployed
        branch = 'master'
    
        node.run_state['branch'] = branch
    
        depl = Chef::Resource::Deploy.new node['path']['web'], run_context
        depl.repository node['git']['repository']
        depl.revision node.run_state['branch']
        depl.run_action :deploy
      end
    end
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    • 2020-03-08
    • 2021-08-19
    • 2012-06-03
    • 2012-12-22
    • 1970-01-01
    相关资源
    最近更新 更多