Задал похожий вопрос по этому поводу, но понял, что моя проблема больше связана с осмыслением того, как это может работать.
Я прочитал кучу статей, но я все еще очень смущен.
Вот что я делаю сейчас:
Я применяю набор базовых ролей ко всем своим узлам (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: