У меня есть конфигурация упаковщика, которая инициализирует использование chef-solo в AWS EC2. Это хорошо работает. Я представил berkshelf для управления сторонними поваренными книгами, и это тоже не работает.
Я работаю в репозитории шеф-повара, в котором есть локально разработанные кулинарные книги, роли, пакеты данных и т. д. Внедряя berks, я хочу сохранить чистоту каталога cookbooks
и поместить сторонние кулинарные книги в vendor/cookbooks
(который исключен git, поэтому поддерживает чистоту репозиториев / сводит к минимуму вероятность того, что другие разработчики добавят / отправят кулинарные книги, управляемые berks, в vcs). Поэтому я добавил локальный поставщик оболочки перед поставщиком шеф-повара-соло, который запускает berks vendor vendor/cookbooks
, и обновил поставщик шеф-повара-соло с помощью 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
Есть ли в упаковщике механизм, который сначала запускает локальную оболочку, прежде чем разрешать поставщика шеф-повара-соло? Я хотел бы избежать запуска berks в сборщике (т.е. я хочу, чтобы поваренные книги разрешались хостом, на котором работает упаковщик), и в идеале хотелось бы, чтобы это выполнялось исключительно в упаковщике, а не в сценариях-оболочках, которые сначала запускают berks. На данный момент я решил эту проблему, продав cookbooks
, но хотел бы также избежать этого маршрута, если это возможно.