Как запустить роли на тестовой кухне, не помещая все в файл berksfile?

Задал похожий вопрос по этому поводу, но понял, что моя проблема больше в концептуализации, как это может работать.

Я прочитал кучу статей, но я все еще в замешательстве.

Вот что я делаю сейчас:

Я применяю набор базовых ролей ко всем моим узлам (windows_base, linux_base и т. Д.). Эти роли применяют рецепты, которые делают такие вещи, как установка часового пояса, присоединение к AD и выполнение других настроек, которые требуются на всех серверах независимо от их назначения.

Теперь у меня есть другие мои кулинарные книги, которые устанавливают приложения и вносят определенные изменения в конфигурацию для определенных целей. Хотя эти кулинарные книги обычно должны "работать" (то есть не будут выдавать ошибки) без необходимости запуска базовых ролей, они все равно могут зависеть от базовых ролей при выполнении некоторой начальной конфигурации сервера и могут работать некорректно без их применения в первую очередь.

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

Я загрузил свои роли с моего сервера с помощью загрузки ножом и указал их в kitchen.yml через role_path, но, очевидно, мне все еще нужно сообщить тестовой кухне, где взять мои кулинарные книги внутри роли?

Теперь вы можете увидеть предыдущий вопрос, который я задал, и мне предложили использовать berkshelf, но если я сделаю это, мне нужно указать ВСЕ рецепты из базовых ролей в файле berks поваренной книги, которую я тестирую, верно? Это не имеет смысла для меня, потому что мне не нужно делать это при применении роли к узлу через сервер Chef. Я также не хочу, чтобы все эти зависимости были в моем berksfile, потому что, как я уже сказал, они вроде бы зависят от ролей, но не обязательно.

Как использовать роли в тестовой кухне так же, как они используются на сервере Chef - это означает, что я просто применяю роль к списку выполнения узлов.

Я должен сказать, что я также попытался определить путь поваренных книг (cookbooks_path:) в kitchen.yml, но это не сработало, эфир.

Это мой.kitchen.yml

---
driver:
  name: hyperv
  parent_vhd_folder: c:\HyperV\VHDs\
  parent_vhd_name: 2012R2.vhdx
  vm_switch: NAT
  memory_startup_bytes: 2GB

provisioner:
  name: chef_zero
  roles_path: c:\.chef\roles
  cookbooks_path: ..\

transport:
  password: myPass123$

platforms:
  - name: windows-2012r2

suites:
  - name: default
    run_list:
      - role[linux_base]
    attributes:

1 ответ

Решение

Ответ все тот же, что и в прошлый раз, вы должны показать Кухни, как получить все ваши поваренные книги. Вы можете сделать это либо через Berkshelf, Librarian, Policyfiles, либо по статическому пути. Соответствующий код находится в https://github.com/test-kitchen/test-kitchen/blob/master/lib/kitchen/provisioner/chef/common_sandbox.rb если вы хотите увидеть 100% того, что поддерживается. Нет ничего автоматического, как с Chef Server, потому что это предполагается для разработки и поэтому не может полагаться на один репозиторий артефактов.

Другие вопросы по тегам