У меня есть конфигурация упаковщика, которая предусматривает использование chef-solo в AWS EC2. Это хорошо работает. Я ввел Berkshelf для управления сторонними кулинарными книгами, и это тоже не работает.
Я работаю в репозитории шеф-повара, в котором локально разрабатываются поваренные книги, роли, пакеты данных и т. Д. Представляя berks, я хочу сохранить каталог cookbooks
в чистоте и помещать сторонние поваренные книги в vendor/cookbooks
( git исключен, поэтому сохраняет репозитории в чистоте / минимизирует вероятность того, что другие разработчики добавят / вставят управляемые Berks кулинарные книги в vcs). Поэтому я добавил локальный поставщик оболочки перед поставщиком chef-solo, который запускает berks vendor vendor/cookbooks
, и обновил поставщик chef-solo с cookbook_paths ["cookbooks","vendor/cookbooks"]
. Моя идея заключается в том, что shell-local будет запущен раньше, чем chef-solo, и будут доступны оба пути поваренной книги.
Однако, когда я запускаю сборку упаковщика, он не может быстро попытаться определить пути поваренной книги до того, как сборщик AWS даже начнет сборку, и произойдет сбой со ссылкой на несуществующий каталог vendor / cookbooks. Вот сегмент поставщиков упаковщиков:
"provisioners" : [
{
"type": "shell-local",
"command": "bundle install && bundle exec berks vendor vendor/cookbooks"
},
{
"type" : "chef-solo",
"cookbook_paths" : ["cookbooks","vendor/cookbooks"],
"environments_path" : "environments",
"roles_path" : "roles",
"run_list" : ["role[somerole]"]
}
],
Когда я запускаю это, это терпит неудачу:
amazon-ebs output will be in this color.
1 error(s) occurred:
* Bad cookbook path 'vendor/cookbooks': stat vendor/cookbooks: no such file or directory
Есть ли в пакере механизм, который сначала запускает shell-local перед разрешением поставщика chef-solo? Я хотел бы избежать запуска berks в компоновщике (т.е. я хочу, чтобы поваренные книги были разрешены хостом, запускающим упаковщик), и в идеале хотел бы, чтобы этот запуск выполнялся исключительно в упаковщике, в отличие от сценариев-оболочек, которые запускают сначала berks. Сейчас я решил эту проблему, продав в cookbooks
, но хотел бы избежать этого маршрута, если это возможно.