2014-06-03 2 views
1

Можно ли указать значения атрибутов в JSON от Chef Solo? У меня есть solo.json с списком запуска, и я хотел бы указать там атрибуты. Документация Chef, кажется, указывает, что должно быть возможно для меня, чтобы сделать что-то вроде:Использование атрибутов в Chef Solo JSON

{ 
    "hostname": { 
     "test": "value2" 
    }, 
    "default_attributes": { 
     "hostname": { 
      "test": "value3" 
     } 
    }, 
    "override_attributes": { 
     "hostname": { 
      "test": "value4" 
     } 
    }, 
    "default": { 
     "hostname": { 
      "test": "value5" 
     } 
    }, 
    "run_list": [ 
     "recipe[hostname::default]" 
    ] 
} 

Однако, когда я пытаюсь получить доступ к значению в моем рецепте:

p node['hostname']['test'] 

Я просто получить значение определенного в атрибутах/default.rb, и если я не определяю его там, я получаю нулевое значение.

Есть ли способ ссылаться на эти значения?

+1

более простой способ (для меня по крайней мере), чтобы создать «переопределение» поваренную книгу, которая только имеет атрибуты файла с 'node.override' значениями, а затем запустить' chef- solo -c ~/.chef/solo.rb -j ~/.chef/solo.json -o my_overrides_cookbook, recipe [recipe_to_run] ', чтобы гарантировать, что он отменяет ваши значения по умолчанию –

ответ

3

Единственный уровень атрибутов, который вы можете сохранить в данных узла: normal, все остальное сбрасывается в начале конвергенции и перестраивается из ролей, сред и кулинарных книг. Вы хотите что-то вроде выглядит следующим образом:

{ 
    "normal": { 
    "hostname": { 
     "test": "something" 
    } 
    }, 
    "run_list": [ 
    "recipe[hostname::default]" 
    ] 
} 
Смежные вопросы