chef - サーバ構成を管理する
サーバの設定(ソフトのインストールやサーバの起動など)をスクリプト
に記述して、更新対象のサーバで実行させるツールです。
このツールで、同じ役割のサーバの状態を同じに保つことができます。
(もちろんデータベースの中身やログなどは異なりますが)
今回は chef-solo を使って、スタンドアロンで動かします。
インストール
curl -L https://www.opscode.com/chef/install.sh | sudo bash
CentOS にインストールした場合は /opt/chef 以下にインストールされます。
/usr/bin 以下に実行ファイルへのシンボリックリンクがはられて
いますので、PATHの変更は不要です。
キーワード
- cookbook
インストール方法や設定ファイルなどの置き場
- recipes
インストール方法や環境設定を記述するファイル
- nodes
chefでメンテナンスを行うサーバ
- attributes
node毎にかわる属性(ポート番号やホスト名など)
- resources
ソフトウエアの設定ファイル(my.cnfなど)を設定する
cookbookの作成
今回は以下のシナリオで作成します。
$ knife cookbook create nginx
~chef-repo/cookbooks/nginx のディレクトリと
その中に以下のファイル・ディレクトリが作成されます。
- CHANGELOG.md
- README.md
- attributes
- files
- metadata.rb
- recipes
- templates
- definitions
- libraries
- providers
- resources
レシピの編集
~chef-repo/cookbooks/nginx/recipes/default.rb を編集します。
# # Cookbook Name:: nginx # Recipe:: default # # Copyright 2014, YOUR_COMPANY_NAME # # All rights reserved - Do Not Redistribute remote_file "/tmp/nginx-release-centos-6-0.el6.ngx.noarch.rpm" do source "http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm" end package "nginx-release-centos" do action :install source "/tmp/nginx-release-centos-6-0.el6.ngx.noarch.rpm" provider Chef::Provider::Package::Rpm end package "nginx" do action :install end service "nginx" do action [:enable, :start] end
chef-solo で実行する
node.json を作成
複数のレシピを実行する場合は run_list に追加します。
{ "name": "node", "run_list": [ "recipe[nginx]" ] }
solo.rb を作成
cookbook_path [ "/home/hogehoge/chef-repo/cookbooks" ]
実行テスト
$ sudo chef-solo -W -c solo.rb -j node.json
実行
$ sudo chef-solo -c solo.rb -j node.json
冪等性が確保されているので、同じコマンドを実行しても
エラーにはなりません。

入門Chef Solo - Infrastructure as Code
- 作者: 伊藤直也
- 出版社/メーカー: 伊藤直也
- 発売日: 2013/03/11
- メディア: Kindle版
- 購入: 16人 クリック: 1,027回
- この商品を含むブログ (16件) を見る