如何用chef-solo覆盖“不是默认”属性?

时间:2013-01-20 07:54:28

标签: chef vagrant

问题

我正在使用流浪汉和厨师独奏条款。

  1. 如何覆盖“默认”属性?
  2. 如果我要创建厨师食谱,我什么时候应该使用“默认”属性?
  3. 描述

    我在attribute of openldap

    中看到了openldap['rootpw']

    我想覆盖属性的openldap['rootpw']

    我尝试覆盖配置,如

    # Vagrantfile
    Vagrant::Config.run do |config|
      config.vm.provision :chef_solo do |chef|
    
        #....
    
        chef.json = {
          'rootpw' => 'xxxx....',
          'openldap' => {
            'rootpw' => 'xxxx....'
          }
        }
      end
    end
    

    但是,属性没有被覆盖。

    我认为,如果属性为default['openldap']['rootpw'],它可以覆盖。

    如何覆盖“默认”属性?

2 个答案:

答案 0 :(得分:1)

使用覆盖属性。 You can set them in different places(食谱,角色,环境),也许你可以找到适合你的。

答案 1 :(得分:1)

您不能像默认值那样轻易覆盖“非默认”属性,因为它会评估链的下方。基本上,顺序是default,force_default,normal,override,force_override,automatic的连续统一体。如果你想要覆盖一些东西,那就进一步向下看。最佳做法是使用默认值并覆盖它们。

http://docs.opscode.com/essentials_cookbook_attribute_files.html#attribute-precedence