初学者被berkshelf和厨师迷惑了

时间:2016-11-19 17:09:30

标签: chef berkshelf

我是厨师和berkshelf的新手,非常困惑我曾尝试在开放式问题上寻求帮助,但没有运气请帮助我..

  1. berkshelf是否会根据解析依赖关系来安装我的食谱?这意味着配方有MySQL,所以在流浪之后会安装MySQL吗?
  2. 我应该在vagrant root中使用vagrantfile还是在berkshelf中使用vagrantfile?
  3. 为什么berkshelf中的vagrantfile(即使没有食谱)总是有MySQL条目:server_root / Debian / repl密码!!!!)
  4. 谢谢

1 个答案:

答案 0 :(得分:4)

Berkshelf是一本食谱依赖经理。

假设您已经安装了chef development kit,请先生成一本食谱:

$ 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。 cookbook生成器创建一个默认设置,告诉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,它将自动为您解决您的cookbook依赖项。

$ 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同时运行厨师并同时测试您的食谱:

$ kitchen test default-ubuntu-1404

做一个快乐的厨师!