ページ ツリー
メタデータの末尾にスキップ
メタデータの先頭に移動

このページの古いバージョンを表示しています。現在のバージョンを表示します。

現在のバージョンとの相違点 ページ履歴を表示

« 前のバージョン バージョン 4 次のバージョン »

Kitchen を使う準備

Kitchen とは

 

.kitchen.yml の編集

作成した Recipe が期待したとおりに動いているか確認してみましょう。
確認には Kitchen を利用すると便利です。

Kitchen とは、任意の環境をインスタンスとして起動し、プロビジョニングを行い、その結果を検証できるツールです。
インスタンスは何度でも簡単に作り直すことができるので、気軽に Chef の Recipe を試すことができます。

まずは Kitchen を使用するために、設定ファイル .kitchen.yml を編集しましょう。

.kitchen.yml
driver:
  name: docker

provisioner:
  name: chef_solo

platforms:
  - name: centos-6.4
    driver_config:
      image: centos
      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

driver

軽量・高速な docker を使用します。
Kitchen から docker を利用するには kitchen-docker のインストールが必要です。

 

$ chef gem install kitchen-docker 

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

driver_config

centos をベース image とします。
利用できる image 名は Dockerfile の FROM 句で指定できるものと同じです。
詳細は Dockerfile のリファレンスを参照してください。
https://docs.docker.com/reference/builder/#from ]

forward ではホストマシンにフォワーディングするポート番号を指定します。
今回は jenkins が使用する 8080 ポートに http://localhost:8080 でアクセスできるように指定しています。
詳細は kitchen-docker のドキュメントを参照してください。
https://github.com/portertech/kitchen-docker ]

run_list

プロビジョニング時に実行する Recipe を指定します。
Jenkins の動作には Java が必要なので、今回は Opscode Community の java Cookbook を使うことにします。
また、java Cookbook の動作には tar が必要なので、これも Opscode Community の tar Cookbook を使います。
自作した jenkins Cookbook も忘れずに指定しましょう。
※ プロビジョニングに外部の Cookbook が必要な場合は後述する Berksfile の編集が必要です。

attributes

プロビジョニング時に Recipe にわたす Attribute を指定します。
Attribute とは Recipe に対するパラメータのようなものです。
今回は Opscode コミュニティの java Cookbook の Attribute を指定しています。
詳細は java Cookbook の 
README.md を参照してください。
http://community.opscode.com/cookbooks/java ]

 

Berkshelf とは

 

Berksfile の編集

プロビジョニング時に必要な外部の Cookbook は、このファイルをもとに berkshelf によって解決されます。Opscode Community の Cookbook であれば、次のように名前を指定するだけでOKです。

source "https://api.berkshelf.com"

cookbook ‘tar'
cookbook 'java'
metadata

※ Opscode Community 以外の依存

 

Kitchen インスタンスの起動とプロビジョニング

では、作成した Cookbook を Kitchen のインスタンスへプロビジョニングしてみましょう。

$ kitchen setup

プロビジョニングが成功したら、Kitchen インスタンスにログインしてみてください。

[vagrant] $ kitchen login
kitchen@localhost’s password: kitchen

[kitchen] $ sudo service jenkins status
jenkins (pid 17656) を実行中...

[kitchen] $ exit

ログインできたら、jenkins サービスが実行されているか確認してみましょう。
/etc/sysconfig/jenkins の内容も確認してみてください。

うまくいっていない場合は、Cookbook を修正し、次のコマンドでプロビジョニングをやり直します。

$ kitchen converge

以前プロビジョニング結果が原因でプロビジョニングがうまくいかない場合は、次のコマンドで Kitchen インスタンスを破棄してから、再度プロビジョニングを実行します。

$ kitchen destroy
$ kitchen setup

※ kitchen の主なサブコマンド

 

# インスタンスの生成
kitchen create

# Chef-Solo のインストールと初回のプロビジョニング
kitchen setup

# プロビジョニング
kitchen converge

# Serverspec の実行
kitchen verify

# ssh ログイン
kitchen login

# インスタンスの破棄
kitchen destroy

 

Web ブラウザで Jenkins にアクセス

docker コマンドでコンテナのポートを確認します。

$ docker ps
CONTAINER ID  PORTS
e35e89ea252a    0.0.0.0:49153->22/tcp, 0.0.0.0:49154->8080/tcp

コンテナの 8080 ポートがホストの 49154 にフォワーディングされていることが確認できます。
Firefox などの Web ブラウザで http://localhost:49154/ にアクセスしてみてください。
Jenkins の画面が表示されていれば成功です。

 

  • ラベルがありません