Chefのレシピ編です。
Chefのインストールはこちらから。
今回はパッケージのインストールです。
サーバ構築での利用頻度は高いでしょう。
手始めにApache httpdをインストールしてみます。
最新のhttpdをインストールする為、以下の手順で実施します。
- レポジトリ追加インストール
- レポジトリURLの変更
- httpdインストール
cookbook作成
まずはcookbook作成です。
$ cd chef-repo
# cookbook作成
$ knife cookbook create httpd -o site-cookbooks
レポジトリ追加インストール
CentOSのデフォルトレポジトリの場合、Version 2.2.15までのインストールになる。
このため、最新のパッケージ(2.2.27)が配信されているレポジトリを別にインストールする。
# レシピ編集
$ vi site-cookbooks/httpd/recipes/default.rb
# 以下を入力
# RPMファイル取得
remote_file "/tmp/centalt-release-6-1.noarch.rpm"do
source "http://mirror.sysadminguide.net/centalt/repository/centos/6/x86_64/centalt-release-6-1.noarch.rpm"
# インストールしてない場合、ファイルを取得する
not_if "rpm -qa | grep -q '^centalt-release'"
action :create
# ファイル取得後に指定レシピを実施
notifies :install, "rpm_package[centalt-release]", :immediately
end
# RPMパッケージインストール
rpm_package "centalt-release" do
source "/tmp/centalt-release-6-1.noarch.rpm"
action :install
end
レシピ適用ノード情報を編集する。
$ vi nodes/remote_ip.json
# run_listに以下を追加する
# 前項目への,(カンマ)の追加忘れに注意
"recipe[httpd]"
準備ができたので、Let's Cook!!
$ knife solo cook remote_ip -i ../id_rsa
レポジトリURLの変更
インストールしたレポジトリのURLが現在利用不可の為、変更が必要です。
まずは以下のファイルを作成します。
[CentALT]
name=CentALT Packages for Enterprise Linux 6 - $basearch
# baseurl=http://centos.alt.ru/repository/centos/6/$basearch/
baseurl=http://mirror.sysadminguide.net/centalt/repository/centos/6/$basearch/
enabled=1
gpgcheck=0
レシピに追記します。
# レシピ編集
$ vi site-cookbooks/httpd/recipes/default.rb
# 以下を追記
# レポジトリ設定ファイルを配置する
cookbook_file "/etc/yum.repos.d/centalt.repo" do
source "centalt.repo"
mode '644'
owner 'root'
group 'root'
end
準備ができたので、Let's cook!!
$ knife solo cook remote_ip -i ../id_rsa
httpdインストール
前準備ができたのでhttpdをインストールします。
レシピに追記します。
# レシピ編集
$ vi site-cookbooks/httpd/recipes/default.rb
# 以下を追記
# httpdインストール
package "httpd" do
action:install
# CentALTレポジトリを利用する
options "--enablerepo=CentALT"
end
# httpdの自動起動(enable)と起動(start)
service "httpd" do
action [ :enable, :start ]
end
準備ができたので、Let's cook!!
$ knife solo cook remote_ip -i ../id_rsa
構築対象サーバへブラウザでアクセスして動作確認をしてください。
httpdの初期画面が表示されれば正常に稼動しています。
今回は一般的なパッケージインストールについて学習しました。
一度レシピを作るだけで使い回しが出来るので積極的に使っていきましょう。
おまけ
httpdの設定ファイルも同じように配布することができます。
まずは元の設定ファイルをコピーします。
# デフォルト設定ファイルを以下のディレクトリにコピーしておく。
$ scp -i <ssh private key> <remote ip>:/etc/httpd/conf/httpd.conf site-cookbooks/httpd/templates/default/httpd.conf.erb
# site-cookbooks/httpd/templates/default/httpd.conf.erb を編集する
# 設定ファイルを配置するレシピを追記する
service "httpd" do
# 設定ファイル配置後に実施するreloadを許可する
supports :status => true, :restart => true, :reload => true
action [ :enable, :start ]
end
# 設定ファイル(httpd.conf)を配置
template "httpd.conf" do
path "/etc/httpd/conf/httpd.conf"
source "httpd.conf.erb"
owner 'root'
group 'root'
mode '644'
# 配置後httpdを即時reloadする
notifies :reload, "service[httpd]", :immediately
end
後は同じようにCookして配布します。
これでWebサーバに配布する設定ファイルを一箇所で管理することができます。