Kitchen を使う準備
Kitchen とは
.kitchen.yml の編集
作成した Recipe が期待したとおりに動いているか確認してみましょう。
確認には Kitchen を利用すると便利です。
Kitchen とは、任意の環境をインスタンスとして起動し、プロビジョニングを行い、その結果を検証できるツールです。
インスタンスは何度でも簡単に作り直すことができるので、気軽に Chef の Recipe を試すことができます。
まずは Kitchen を使用するために、設定ファイル .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 を使用します。
※ 今回の環境には既にインストールされています。 driver_configcentos をベース image とします。 forward ではホストマシンにフォワーディングするポート番号を指定します。 run_listプロビジョニング時に実行する Recipe を指定します。 attributesプロビジョニング時に Recipe にわたす Attribute を指定します。 |
Berkshelf とは
Berksfile の編集
プロビジョニング時に必要な外部の Cookbook は、このファイルをもとに berkshelf によって解決されます。Opscode Community の Cookbook であれば、次のように名前を指定するだけでOKです。
コード ブロック |
---|
source "https://api.berkshelf.com"
cookbook ‘tar'
cookbook 'java'
metadata |
※ Opscode Community 以外の依存
Git リポジトリ
git: ‘https://path/to/cookbook.git’ローカルファイルシステム
path: ‘/path/to/cookbook’
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 の画面が表示されていれば成功です。