如何在厨师中运行具有依赖性的食谱?

时间:2014-12-11 10:46:14

标签: java ruby maven chef cookbook

我在启动时配置了工作站this step(OS redhat 6.5)。我已经启动了一个节点。我修改了这样的食谱:

myCookbook / metadata.rb

name             'myCookbook'
maintainer       'YOUR_COMPANY_NAME'
maintainer_email 'YOUR_EMAIL'
license          'All rights reserved'
description      'Installs/Configures myCookbook'
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
version          '0.1.0'

depends 'maven'

E.g。 <{1}}执行后,只添加了depends 'maven'字符串。

myCookbook /食谱/ default.rb

knife cookbook create myCookbook

然后我跑:

maven 'spring-context' do
  group_id 'org.springframework'
  version  '4.0.4.RELEASE'
  dest     '/root/chef-repo/'
  repositories ['http://repo.maven.apache.org/maven2/']
end

现在我正在尝试:

knife cookbook upload myCookbook

得到:

knife bootstrap 192.168.1.37 --ssh-user root --ssh-password '123456' --sudo --use-sudo-password --node-name node-with-maven-run --run-list 'recipe[myCookbook]'

如何从mtCookbook安装所有cookbook到厨师服务器取决于?

3 个答案:

答案 0 :(得分:7)

See here

或者只需输入knife cookbook upload --help,它就会显示以下行(以及其他行):

--include-dependencies Also upload cookbook dependencies

所以knife cookbook upload myCookbook --include-dependencies是你的回答

您还需要在工作站上使用maven食谱,knife cookbook site install maven或任何其他方式在您的本地maven中包含名为cookbook_path的目录一本食谱,其中metatada.rb文件为关键name,其值为maven

答案 1 :(得分:6)

@rastasheep描述了berkshelf工具现在如何与chefdk包捆绑在一起。

它非常易于使用且值得学习。它的设计就像gem bundler工具一样。

实施例

└── myCookbook
    ├── Berksfile       <-- Berkshelf configuration file
    ├── Berksfile.lock  <-- Lock file generated by Berkshelf
    ├── metadata.rb
    ├── README.md
    └── recipes
        └── default.rb

Berksfile

source "https://supermarket.getchef.com"

metadata

&#34;来源&#34;指令告诉berkshelf从哪里下载依赖项。 &#34;元数据&#34;指令告诉berkshelf从cookbook元数据中获取依赖关系。

使用Berkshelf

&#34;安装&#34;命令将下载cookbook依赖项(在〜/ .berkshelf下缓存)

$ cd myCookbook
$ berks install
Resolving cookbook dependencies...
Fetching 'myCookbook' from source at .
Fetching cookbook index from https://supermarket.getchef.com...
Installing maven (1.2.0)
Installing 7-zip (1.0.2)
Installing ark (0.9.0)
Installing chef_handler (1.1.6)
Installing java (1.29.0)
Installing windows (1.34.8)
Using myCookbook (0.1.0) from source at .

Berkshelf还可以将所有食谱上传到您的厨师服务器

$ berks upload
Uploaded 7-zip (1.0.2) to: 'http://127.0.0.1:8889/'
Uploaded ark (0.9.0) to: 'http://127.0.0.1:8889/'
Uploaded chef_handler (1.1.6) to: 'http://127.0.0.1:8889/'
Uploaded java (1.29.0) to: 'http://127.0.0.1:8889/'
Uploaded maven (1.2.0) to: 'http://127.0.0.1:8889/'
Uploaded myCookbook (0.1.0) to: 'http://127.0.0.1:8889/'
Uploaded windows (1.34.8) to: 'http://127.0.0.1:8889/'

答案 2 :(得分:1)

还有一些其他选项可用于管理食谱烹饪书和依赖项,例如Berkshelf或Librarian-chef,其中Berkshelf更受欢迎,它甚至包含在Chef Development Kit中,所以如果你使用它,你就不会需要单独安装。

定义源后,您只需要定义哪些烹饪书,您希望他们的版本和菜谱管理器将解决所有已定义的烹饪书的依赖关系,它将为您安装它们,如果您愿意,您也可以提供它们。除此之外,他们还可以选择上传特定的食谱,而无需担心上传依赖性。

有关如何使用这些工具的更多信息,请访问官方网站:

通常,对于管理小项目,您可以使用刀的上传标记来上传依赖项。

-d, --include-dependencies
    Use to ensure that when a cookbook has a dependency on one (or more) cookbooks, those cookbooks will also be uploaded.