Сбой упаковщика из-за несуществующего пользовательского пути к книге рецептов, созданного локальным поставщиком оболочки (berks)

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


person Brett    schedule 13.09.2018    source источник


Ответы (1)


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

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

No

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

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

person Rickard von Essen    schedule 14.09.2018