如何在厨师中加入docker cookbook?

时间:2016-09-20 17:42:58

标签: chef berkshelf

我正在尝试使用此链接提供的食谱定义一个厨师食谱来安装docker:https://supermarket.chef.io/cookbooks/docker#readme

我正在使用Berkshelf,所以我把这行放在Berkfile上

cookbook 'docker', '~> 2.9.6'

,这在metadata.db

depends "docker"

我的食谱如下

include_recipe 'docker::docker_service'
include_recipe 'docker::docker_image'
include_recipe 'docker::docker_container'

docker_service 'default' do
        action [:create, :start]
end

但是当我尝试运行厨房时,我得到以下错误:

ERROR: could not find recipe docker_service for cookbook docker

但如果我查看我的berkshelf存储库,那么食谱就在那里:

$ ls ~/.berkshelf/cookbooks/docker-2.9.6/libraries/ | grep docker_service.rb
docker_service.rb

我做错了什么?

谢谢, 米歇尔。

3 个答案:

答案 0 :(得分:4)

如@coderanger和@NilsLandt所述,您需要编写自己的食谱来安装docker,并且只需调用docker食谱提供的资源。

实施例

由厨师生成的食谱和#34;命令

├── Berksfile
├── chefignore
├── metadata.rb
├── README.md
├── recipes
│   └── default.rb
└── test
    └── integration
        ├── default
        │   └── serverspec
        │       └── default_spec.rb
        └── helpers
            └── serverspec
                └── spec_helper.rb

metadata.rb

添加" apt"和#34;码头工人"烹饪书作为依赖

name 'docker_demo'
maintainer 'Mark O''Connor'
maintainer_email 'you@example.com'
license 'all_rights'
description 'Installs/Configures docker_demo'
long_description 'Installs/Configures docker_demo'
version '0.1.0'

depends 'apt'
depends 'docker'

配方/ default.rb

只需使用" docker_service"用于创建docker服务的资源。 "创建"动作将安装Docker。

#
# Cookbook Name:: docker_demo
# Recipe:: default
#
# Copyright (c) 2016 The Authors, All Rights Reserved.

include_recipe 'apt'

docker_service 'default' do
  action [:create, :start]
end

测试/集成/默认/ serverspec / default_spec.rb

验证docker

安装的一组测试
require 'spec_helper'

describe file('/usr/bin/docker') do
  it { should be_file }
  it { should be_executable }
end

describe command('/usr/bin/docker version') do
  its(:stdout) { should match /Version:      1.12.1/ }
end

答案 1 :(得分:2)

docker cookbook没有提供任何食谱,这就是include_recipe来电失败的原因。

相反,您只需使用资源,就像您已使用docker_service资源一样。

当您删除三条include_recipe行时,您的食谱应该会运行。

答案 2 :(得分:1)

src/test/resources/logback-test.xml是资源,而不是食谱。有关示例用法,请参阅自述文件,但总体思路是您需要编写自己的包装器手册,该手册使用提供的自定义资源。