2016-08-01 1 views
0

Ответов на вопрос similar question on this, но я понял, что моя проблема связана с концептуализацией того, как это может работать.Как выполнять роли в тестовой кухне, не помещая все в файл berksfile?

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

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

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

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

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

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

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

Как использовать роли в тестовой кухне, как они используются на сервере шеф-повара, то есть я просто применяю роль к списку запуска узлов.

Должен сказать, что я также попытался определить путь поваренной книги (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: 

ответ

2

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

+0

Так будет ли работать/иметь смысл установить 'cookbooks_path' в моей' .kitchen.yml' на 'C: \ Users \ me \ .berkshelf' (моя папка berkshelf)? Или berkshelf переопределяет 'cookbooks_path' в' .kitchen.yml'? – red888

+1

Нет, папка хранения Berkshelf не организована таким образом, что шеф-повар может ее прочитать. Кухня запускает 'berks vendor' для вас в временную папку для вывода информации в правильном формате. – coderanger

Смежные вопросы