如何在Git中管理具有依赖菜谱的Chef cookbook

时间:2018-02-26 18:55:38

标签: git chef

这似乎是一个基本问题,但我不确定如何将git用于我的厨师回购。我有一个厨师仓库,里面有2本食谱: chef_docker_testdocker

 ~/chef-repo
.
├── LICENSE
├── README.md
└── cookbooks
    ├── chef_docker_test
    │   ├── Berksfile
    │   ├── Berksfile.lock
    │   ├── LICENSE
    │   ├── README.md
    │   ├── chefignore
         ...

    ├── docker
    │   ├── CHANGELOG.md
    │   ├── CONTRIBUTING.md
    │   ├── README.md
    │   ├── libraries
    │   │   ├── docker_base.rb
    │   │   ├── docker_container.rb
    │   │   ├── docker_exec.rb
    │   │   ├── docker_image.rb
    │   │   ├── docker_installation_package.rb
    │   │   ├── docker_installation_script.rb
    │   │   ├── docker_installation_tarball.rb
    │   │   ├── docker_network.rb
    │   │   ├── docker_registry.rb
    │   │   ├── docker_service.rb
    │   │   ├── docker_service_base.rb
    │   │   ├── docker_service_manager_execute.rb
    │   │   ├── docker_service_manager_systemd.rb
    │   │   ├── docker_service_manager_sysvinit_debian.rb
    │   │   ├── docker_service_manager_sysvinit_rhel.rb
    │   │   ├── docker_service_manager_upstart.rb
  ...

大多数时候,人们似乎都会为每本食谱使用一个git repo。我也想遵循这种方法。但是当我只是克隆它并尝试运行时,我的chef_docker_test仓库失败了。这是因为这个repo依赖于来自市场的docker食谱。管理这个的推荐方法是什么?我是否必须将2个烹饪书放在一个git仓库中,或者只是保留依赖关系并在我启动chef_docker_test时安装它?

1 个答案:

答案 0 :(得分:3)

您通常会使用Berkshelf或Policyfile工具来管理依赖项,就像您使用Bundler for Ruby或Pip requirements / pipfile for Python一样。你需要更具体地说明“尝试运行”以获得精确答案。 Test Kitchen包括对ChefSpec的直接支持。对于与Chef Server的接口,您可以通过相关工具上传,或者单独使用export / vendor命令将文件夹转储到chef-solo的正确结构中。