Как протестировать на тестовой кухне то, что доступно только извне?

У меня есть рецепт, который использует файловый ресурс для предоставления группе активного каталога доступа к локальной папке.

У меня нет доступа к AD с моей рабочей станции Chef, на которой я запускаю тестовую кухню.

Я хочу иметь возможность сойтись на кухне vm (а не только на спецтестах).

Поэтому я планировал использовать среды

  • Сохраните имя группы в атрибуте, который будет атрибутом env.
  • prod env имеет группу AD, установленную в атрибуте
  • Тестовая среда имеет некоторую локальную группу в атрибуте
  • Укажите тестовую среду в .kitchen.yml

Является ли это надлежащим использованием сред? Есть ли другой механизм Chef для этой цели?


person red888    schedule 20.10.2016    source источник
comment
Я бы установил локальную группу в качестве атрибута по умолчанию в поваренной книге и установил группу AD в env, поэтому у вас будут тесты на кухне в порядке с атрибутом поваренной книги и узлами реального мира, использующими группы AD. Я думаю, что этот вопрос слишком основан на мнении для SO.   -  person Tensibai    schedule 20.10.2016
comment
Вы можете ответить на вопрос, и я приму его   -  person red888    schedule 21.10.2016
comment
Готово ;) (Но для будущих читателей: это лучше подходит для discourse.chef.io, так как там много вариантов)   -  person Tensibai    schedule 21.10.2016


Ответы (1)


В этом случае я бы использовал атрибуты поваренной книги для случая по умолчанию (тестирования).

Затем в соответствии с документацией по приоритету атрибутов атрибуты среды заменят атрибуты кулинарной книги (в то же время level), так что в реальном мире вы установите группу AD в environment.

Это позволяет использовать группу для каждой среды.

Предостережение: любое изменение в среде повлияет на все узлы, вам придется написать кулинарную книгу-оболочку с более высоким уровнем (обычно переопределением), если вы хотите изменить ее только для подмножества узлов среды.

person Tensibai    schedule 21.10.2016
comment
Я бы посоветовал вам использовать node.normal вместо установки его в самой среде, поскольку наборы среды довольно невидимы. Говоря из реального мира, когда кто-то приходит, чтобы изменить ваш код, он пару дней будет озадачен тем, почему ничего из того, что он делает, не меняет значения. Пакеты данных также являются достойным способом сделать это, поскольку для их использования требуется код в рецепте, таким образом оставляя здоровенный след для тех, кто придет позже. Просто мои 0,02 доллара - person JackChance; 09.11.2016
comment
@Jack никогда не используйте node.normal или node.set, если вы абсолютно не знаете, что делаете. Этот уровень постоянно записывается в объект узла, и удаление строки из рецепта не вернет значение по умолчанию, это является причиной множества проблем. Используйте node.default, если вы действительно хотите сделать это в рецепте, они оцениваются после атрибутов, поэтому они имеют приоритет, см. ссылку в моем ответе. В этом конкретном случае, согласно описанию Op, среда в порядке, следовательно, часть предупреждения. Но, пожалуйста, не пропагандируйте node.normal для простых случаев использования, мы тратим слишком много времени на отладку их предыдущего использования. - person Tensibai; 09.11.2016