ページ ツリー

比較バージョン

キー

  • この行は追加されました。
  • この行は削除されました。
  • 書式設定が変更されました。

Kitchen を使う準備

Kitchen とは

Vagrant、EC2、Docker Vagrant、EC2、Docker Engine など、任意のインスタンスを立てて、その中で Cookbook の動作を試行できるツールです。
http://kitchen.ci/ 

 

今回は高速・軽量な Docker Engine のインスタンスで  のインスタンスで Cookbook の動作チェックをしていきます。

情報

Docker Engine は Linux でのコンテナ型の仮想化を提供するツールです。

ハイパーバイザ型がマシンそのものをエミュレートするのに対し、コンテナ型の仮想化ではホストマシンのカーネル上に独立したユーザー空間を構築するのにとどまります。

ハイパーバーザ型と比較すると、コンテナ型の仮想化はホストのもつリソースをほぼそのまま扱えるため、より軽量・高速に仮想化を実現できます。

また、Docker また、Docker Engine ではコンテナの差分管理が可能です。
たとえば、いちど CentOS をインストールしたコンテナをつくってしまえば、CentOS + apache や CentOS + MySQL などのコンテナを構築するときに毎回 CentOS をインストールする必要はありません。

Kitchen Docker Engine を利用するには、kitchen を利用するには、kitchen-docker のインストールが必要です。
ChefDK を利用している場合は、次のコマンドでインストールできます。(開発環境にはインストール済みです) 

コード ブロック
chef gem install kitchen-docker

 

 

.kitchen.yml の編集

Kitchen でインスタンスを立てて  でインスタンスを立てて Recipe を実行するには、.kitchen.yml を編集します。

Section
Column
コード ブロック
title.kitchen.yml
driver:
  name: docker

provisioner:
  name: chef_solo

platforms:
  - name: centos-6.4
    driver_config:
      image: centos:centos6
      forward: 8080

suites:
  - name: default
    run_list:
      - recipe[tar::default]
      - recipe[java::default]
      - recipe[jenkins::default]
    attributes:
      java:
        install_flavor: oracle
        jdk_version: 7
        java_home: /usr/java/default
        oracle:
          accept_oracle_download_terms: true
Column

driver

標準では Vagrant を利用しますが、Cookbook の開発サイクルをより早くまわすために、軽量・高速な vagrant ですが、開発サイクルを早くまわすために、より軽量・高速な docker を使用します。Kitchen から docker を利用するには docker Engine、kitchen-docker のインストールが必要です。

※ 今回の環境には既にインストールされています。

driver_config

kitchen-docker の設定です。詳細は kitchen-docker のドキュメント https://github.com/portertech/kitchen-docker ] を参照してください。image で、ベースとする の設定を書きます。

image

ベースとする docker image の名前を指定します。
利用できる image 名は Dockerfile の FROM 句 https://docs.docker.com/reference/builder/#from ] で指定できるものと同じです。

forward
ではホストマシンにフォワーディングするポート番号を指定します。

今回は ホストマシンにフォワーディングするポート番号を指定します。
この例では jenkins が使用する 8080 ポートをホストマシンから見えるようにフォワーディングするように指定しています。ポートがホストマシンから見えるように指定しています。

run_list

プロビジョニング時に実行する 実行する Recipe を指定します。
この例では自作した jenkins Cookbook の Recipe を指定しています。

ただ、Jenkins の動作には Java が必要ですので、Opscode Community の java Cookbook を使ってインストールするように指定しています。
また、java Cookbook の動作には tar が必要なので、これも Opscode Community の tar Cookbook を使うように指定しています。
そして、自作した jenkins Cookbook も忘れずに指定します。
※ プロビジョニングに外部の Cookbook が必要な場合は後述する tar Cookbook(java Cookbook の動作に必要) も指定しています。
※ 外部の Cookbook を使用するには後述する Berksfile の編集が必要です。

attributes

プロビジョニング時に Recipe にわたす Attribute を指定します。
Attribute とは、 Recipe に対するパラメータのようなものです。Recipe に対するパラメータのようなもの)を指定します。

今回は java Cookbook の Attribute を指定しています。
詳細は java Cookbook の README.md

 

...

 

Berkshelf とは

 

Berksfile の編集

...