2016-08-08 2 views
1

У меня есть простой файл атрибутов: attributes/default.rb.атрибуты kitchen.yml не переопределяют значения по умолчанию - Chef 12.12 - Kitchen 1.10

default['simpleattr'] = 'file value' 

А внутри kitchen.yml, я

suites: 
    - name: default 
    run_list: 
     - recipe[simple::default] 
    attributes: 
    simpleattr: 'value from kitchen' 
    simple: 
     simpleattr: 'value from kitchen' 

Внутри рецепт, я:

log "default['simpleattr']: "+node.default['simpleattr'] 

И я всегда получаю 'file value', а не 'value from kitchen' как выход.

Я хочу переопределить значение в тестах.

+1

Чтобы получить доступ к значению, определенный в тестовом кухне, вы бы необходимо получить доступ к 'node ['simple'] ['simpleattr']'. Не обращайтесь к атрибутам через 'node.default', но вместо этого' node ['simpleattr']. В YAML линиям ниже строки 'attributes' не хватает одного отступа пространства. Вы можете проверить правильность обработки YAML с помощью «диагностики кухни». – StephenKing

+1

Надеюсь, у меня есть корень проблемы (см. Мой ответ) – StephenKing

+1

Вы были счастливы игнорировать все, что я написал в своем комментарии. – StephenKing

ответ

4

Не обращайтесь к значениям узлов через node.default[], но вместо этого используйте node[]. Chef's attribute hierarchy автоматически вычисляет значения в соответствии с его уровнями приоритета.

Я воспроизвел вашу проблему и загрузил ее here on Github. solution также описан в моем комментарии. Не используйте

node.default['simpleattr'] 

но вместо

node['simpleattr'] 

Тогда все, как вы ожидаете, и выход

Recipe: simple::default 
    * log[default['simpleattr']: value from kitchen] action write 
Смежные вопросы