不能使用Chef环境覆盖cookbook属性

时间:2016-09-21 20:25:18

标签: nginx chef

我正在尝试覆盖默认的cookbook属性(在本例中为nginx的属性)。在我的默认cookbook属性中,我有这样的东西:

default[:my_nginx_cookbook][:site_name] = 'defaultnginx.site.com'

default[:my_nginx_cookbook][:sites] = {
"default.site.com" => {
default_value1: 'stuff'
default_value2: 'yada yada'
},
"default2.site.com" => {
default_value3: 'even more stuff'
default_value4: 'blah blah'
  }
}

我想在我正在部署cookbook的环境中覆盖这些属性(我将其称为环境FOO)。在我的FOO环境文件中,我有以下内容:

override_attributes[:my_nginx_cookbook] = {
site_name: 'myrealnginx.site.com'
}

override_attributes[:my_nginx_cookbook][:sites] = {
'myreal.site.com' => {
 real_value1: 'real stuff'
 real_value2: 'real yada'
 },
"myreal2.site.com" => {
real_value3: 'more real stuff'
real_value4: 'real blah'
  }
}

但是,当我在nginx节点上运行chef客户端时,它只会创建默认站点。我在其他环境中覆盖默认属性没有问题。在这种情况下,我没有正确覆盖默认值吗?

1 个答案:

答案 0 :(得分:0)

在Chef环境文件中,您通常会设置如下属性数据:

override_attributes({
  my_nginx_cookbook: {
    site_name: 'myrealnginx.site.com',
    sites: {
      'myreal.site.com' => {
        real_value1: 'real stuff'
        real_value2: 'real yada'
      },
      'myreal2.site.com' => {
        real_value3: 'more real stuff'
        real_value4: 'real blah'
      },
  },
})