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

Che*_*rry 1 ruby java cookbook maven chef-infra

我已经开始配置工作站这个步骤(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'
Run Code Online (Sandbox Code Playgroud)

例如,执行depends 'maven'后只添加了字符串knife cookbook create myCookbook.

myCookbook /食谱/ default.rb

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
Run Code Online (Sandbox Code Playgroud)

然后我跑:

knife cookbook upload myCookbook
Run Code Online (Sandbox Code Playgroud)

现在我想:

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]'
Run Code Online (Sandbox Code Playgroud)

得到:

ERROR: Cookbook myCookbook depends on cookbooks which are not currently
ERROR: being uploaded and cannot be found on the server.
ERROR: The missing cookbook(s) are: 'maven' version '>= 0.0.0'
Run Code Online (Sandbox Code Playgroud)

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

Ten*_*bai 7

看这里

或者只是输入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 的键


Mar*_*nor 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
Run Code Online (Sandbox Code Playgroud)

Berksfile

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

metadata
Run Code Online (Sandbox Code Playgroud)

"source"指令告诉berkshelf从哪里下载依赖项."metadata"指令告诉berkshelf从cookbook元数据中获取依赖关系.

使用Berkshelf

"install"命令将下载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 .
Run Code Online (Sandbox Code Playgroud)

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/'
Run Code Online (Sandbox Code Playgroud)