tl; dr версия: Можно ли Berkshelf разрешить рекурсивные зависимости в поваренных книгах по мотивам Git, и если да - как?Устранение рекурсивных зависимостей поваренной книги git с Berkshelf
Я стараюсь управлять своими поваренными книгами с шеф-поваром с Berkshelf. Поваренные книги хранятся во внутренних хранилищах Git. Зависимости заключаются в следующем:
env_dockerhub_dev
>>depends on>> app_dockerhub
>>depends on>> app_docker
Основной Berksfile в моем проекте выглядит следующим образом:
source "https://supermarket.chef.io"
cookbook "env_dockerhub_dev", git: "[email protected]_TO_GIT_SERVER/chef_env_dockerhub_dev.git"
env_dockerhub_dev
поваренной имеет metadata.rb
так:
name 'env_dockerhub_dev'
...
depends 'app_dockerhub'
depends 'base_ubuntu'
и Berksfile
как это:
source "https://supermarket.chef.io"
cookbook "app_dockerhub", git: "[email protected]_TO_GIT_SERVER/chef_app_dockerhub.git"
cookbook "base_ubuntu", git: "[email protected]_TO_GIT_SERVER/chef_base_ubuntu.git"
Когда я теперь запустить berks install
я получаю следующее сообщение об ошибке:
Resolving cookbook dependencies...
Fetching 'env_dockerhub_dev' from [email protected]_TO_GIT_SERVER/chef_env_dockerhub_dev.git (at master)
Fetching cookbook index from https://supermarket.chef.io...
Unable to satisfy constraints on package app_dockerhub, which does not exist, due to solution constraint (env_dockerhub_dev = 0.1.0). Solution constraints that may result in a constraint on app_dockerhub: [(env_dockerhub_dev = 0.1.0) -> (app_dockerhub >= 0.0.0)]
Missing artifacts: app_dockerhub,base_ubuntu
Demand that cannot be met: (env_dockerhub_dev = 0.1.0)
Unable to find a solution for demands: env_dockerhub_dev (0.1.0)
я могу решить эту проблему, когда я добавить все URL-адреса Git для всех моих внутренних поваренных книг в «основной» Berksfile (в Berksfile в корень моего проекта), как это:
source "https://supermarket.chef.io"
# the main cookbook
cookbook "env_dockerhub_dev", git: "[email protected]_TO_GIT_SERVER/chef_env_dockerhub_dev.git"
# the cookbooks that are "recursively"
cookbook "app_dockerhub", git: "[email protected]_TO_GIT_SERVER/chef_app_dockerhub.git"
cookbook "app_docker", git: "[email protected]_TO_GIT_SERVER/chef_app_docker.git"
Во всяком случае - я думаю, что это не должно быть решением этой проблемы.
Thx много для вашей помощи!