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

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

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

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

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

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

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

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

Теперь вы можете видеть предыдущий вопрос, который я задал, было предложено использовать berkshelf, но если я это сделаю, мне нужно указать ВСЕ рецепты из базовых ролей в berksfile кулинарной книги, которую я тестирую, верно? Для меня это не имеет смысла, потому что мне не нужно делать это при применении роли к узлу через сервер 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:

person red888    schedule 01.08.2016    source источник


Ответы (1)


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

person coderanger    schedule 01.08.2016
comment
Так будет ли работать/иметь смысл установить cookbooks_path в моем .kitchen.yml на C:\Users\me\.berkshelf (моя папка berkshelf)? Или berkshelf переопределяет cookbooks_path в .kitchen.yml? - person red888; 02.08.2016
comment
Нет, папка хранения Berkshelf не организована таким образом, чтобы Chef мог ее прочитать. Kitchen запускает berks vendor во временную папку для вывода данных в правильном формате. - person coderanger; 02.08.2016