Сбой упаковщика из-за несуществующего пользовательского пути поваренной книги, созданного поставщиком локальной оболочки (berks) - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть конфигурация упаковщика, которая предусматривает использование 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, но хотел бы избежать этого маршрута, если это возможно.

1 Ответ

0 голосов
/ 14 сентября 2018

Просто создайте пустой каталог vendor/cookbooks.

Есть ли в упаковщике механизм, который сначала запускает локальную оболочку, прежде чем разрешить поставщика chef-solo?

нет

Нет

и в идеале хотелось бы, чтобы это выполнялось исключительно в упаковщике, в отличие от сценариев-оболочек, запускающих сначала berks.

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

...