...
Cookbook を生成しよう
Section |
---|
Column |
---|
| まずは、Chef のソースコードである Recipe を格納するための Cookbook をつくります。 コード ブロック |
---|
$ cd workspace
$ chef generate cookboook jenkins |
|
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 |
---|
| Recipe にはサーバーのあるべき状態を Resource として定義します。 ここでいう yum_package や remote_file、service などが Resource の定義です。 基本的な Resource 定義の書式は次のようになっています。 コード ブロック |
---|
<ResourceType> "ResourceName" do
<Attribute> "hoge"
<Attribute> "fuga"
action <Action>
end |
Resource がどのような Attribute や Action を持つかは ResourceType により様々です。 Chef のドキュメントを参照するとよいでしょう。 ヒント |
---|
今回登場する 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 |
|
|
お試し環境にプロビジョニングしてみよう
Kitchen インスタンスを起動し、Cookbook を転送してプロビジョニングを行います。
...