Berkshelf 是一个食谱依赖管理器。
假设你已经安装了chef development kit,首先生成一个cookbook:
$ chef generate cookbook demo
$ tree
.
└── demo
├── Berksfile
├── chefignore
├── metadata.rb
├── README.md
├── recipes
│ └── default.rb
├── spec
│ ├── spec_helper.rb
│ └── unit
│ └── recipes
│ └── default_spec.rb
└── test
└── integration
├── default
│ └── serverspec
│ └── default_spec.rb
└── helpers
└── serverspec
└── spec_helper.rb
Berksfile 保存配置,其格式为documented on the website。食谱生成器创建一个默认设置,告诉 berkshelf 从 Chef 超市下载依赖项并使用元数据文件列出这些依赖项:
source 'https://supermarket.chef.io'
metadata
所以让我们编辑 metadata.rb 文件,添加 mysql 作为依赖项
name 'demo'
maintainer 'The Authors'
maintainer_email 'you@example.com'
license 'all_rights'
description 'Installs/Configures demo'
long_description 'Installs/Configures demo'
version '0.1.0'
depends "mysql"
所以现在如果您决定运行 berkshelf,它会自动为您解决食谱的依赖关系。
$ berks vendor cookbooks
Resolving cookbook dependencies...
Fetching 'demo' from source at .
Using demo (0.1.0) from source at .
Using mysql (8.1.1)
Vendoring demo (0.1.0) to cookbooks/demo
Vendoring mysql (8.1.1) to cookbooks/mysql
希望这能回答您的一些问题,但最后我可以建议您查看test kitchen 吗?食谱生成器还将其配置为使用 Vagrant 同时运行 Chef 和测试您的食谱:
$ kitchen test default-ubuntu-1404
做一个快乐的厨师!