Атрибуты kitchen.yml не переопределяют значения по умолчанию — Chef 12.12 — Kitchen 1.10

У меня есть простой файл атрибутов: attributes/default.rb.

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' в качестве вывода.

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


person OBender    schedule 08.08.2016    source источник
comment
Чтобы получить доступ к значению, которое вы определили в тестовой кухне, вам потребуется доступ к node['simple']['simpleattr']. Не обращайтесь к атрибутам через node.default, но в строке node['simpleattr'] instead. In the YAML, the lines below attributes отсутствует отступ в один пробел. Вы можете убедиться, что YAML правильно анализируется с помощью kitchen diagnose.   -  person StephenKing    schedule 08.08.2016
comment
Надеюсь, я понял корень проблемы (см. мой ответ)   -  person StephenKing    schedule 08.08.2016
comment
Вы благополучно игнорировали все, что я написал в своем комментарии.   -  person StephenKing    schedule 09.08.2016


Ответы (1)


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

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

node.default['simpleattr']

но вместо этого

node['simpleattr']

Тогда все так, как вы ожидаете, и результат

Recipe: simple::default
  * log[default['simpleattr']: value from kitchen] action write
person StephenKing    schedule 09.08.2016