jenkins Cookbook 作成体験
Cookbook を生成しよう
Section |
---|
Column |
---|
| まずは、Chef のソースコードである Recipe を格納するための Cookbook をつくります。 コード ブロック |
---|
$ cd workspace
$ chef generate cookboook jenkins |
|
Column |
---|
Section |
---|
| Column |
---|
`chef` は ChefDK のコマンドです。 ここでは 'jenkins' という名前の Cookbook を `chef` コマンドで生成しています。 Cookbook は Chef のソースコードを取りまとめた単位です。 Cookbook の中には実際のソースコード(Recipe)が入ります。 |
|
|
|
default Recipe を書こう
Section |
---|
Column |
---|
| Cookbook のメイン Recipe をつくります。 コード ブロック |
---|
language | ruby |
---|
title | jenkins/recipes/default.rb |
---|
| yum_package 'java-1.7.0-openjdk'
remote_file "#{Chef::Config[:file_cache_path]}/jenkins-1.568-1.1.noarch.rpm"
source 'http://pkg.jenkins-ci.org/redhat/jenkins-1.568-1.1.noarch.rpm'
action :create_if_missing
end
yum_pakcage "#{Chef::Config[:file_cache_path]}/jenkins-1.568-1.1.noarch.rpm"
service 'jenkins' do
action [:start, :enable]
end |
|
Column |
---|
Section |
---|
| Column |
---|
Recipe にはサーバーのあるべき状態を Resource として定義します。 ここでいう yum_package や remote_file、service などが Resource の定義です。 基本的な Resource 定義の書式は次のようになっています。 コード ブロック |
---|
<ResourceType> "ResourceName" do
<Attribute> "hoge"
<Attribute> "fuga"
action <Action>
end |
Resource がどのような Attribute や Action を持つかは ResourceType により様々です。 Chef のドキュメントを参照するとよいでしょう。 ヒント |
---|
title | 今回登場する ResourceType の概要とドキュメントのリンク |
---|
| |
|
|
|
|
お試し環境を定義しよう
Section |
---|
Column |
---|
| Kitchen インスタンスを定義します。 コード ブロック |
---|
---
driver:
name: docker
provisioner:
name: chef_zero
platforms:
- name: centos
driver_config:
image: centos:centos6
forward: 8080:8080
suites:
- name: default
run_list:
- jenkins |
|
Column |
---|
Section |
---|
| Column |
---|
Kitchen は Vagrant や EC2、Docker Engine などでインスタンスを起動して Cookbook の動作をチェックするためのツールです。 .kitchen.yml には Kitchen で起動するインスタンスの設定を定義します。 driver:高速・軽量な Docker Engine を使うように指定します。 provisioner:Chef Zero によるプロビジョニングを行うように指定します。 Docker Engine のコンテナのベース Image として centos:centos6 を使用するように指定します。 また、Jenkins の起動確認のために 8080 ポートをフォワーディングするように指定ます。 suites:jenkins Cookbook を収束するように指定します。 |
|
|
|
お試し環境にプロビジョニングしてみよう
Section |
---|
Column |
---|
| Kitchen インスタンスを起動し、Cookbook を転送してプロビジョニングを行います。 コード ブロック |
---|
$ kitchen converge |
|
Column |
---|
Section |
---|
| Column |
---|
`kitchen converge` コマンドを実行すると、.kitchen.yml の定義に従って Kitchen インスタンスが生成され、プロビジョニングが行われます。 ヒント |
---|
| Kitchen インスタンスへの ログイン
※ パスワードは 'kitchen'
Kitchen インスタンスの破棄 コード ブロック |
---|
$ kitchen destroy |
|
|
|
|
|
Jenkins にアクセスしてみよう
.kitchen.yml の設定により、Kitchen インスタンスの 8080 ポートがホストマシンの 8080 ポートにフォワーディングされています。
ホストマシンの Web ブラウザで「http://localhost:8080」とアクセスしてみてください。

このように、Jenkins の画面が表示されていたら成功です。