chef-soloの概念と基礎をざっくりと


chef-soloの基礎

chefの中でも、一番基本になっているchef-soloの仕組みと使い方をざっくりと説明

chefについてざっくりと

chef とは Linuxのセットアップ(ユーザーの追加、パッケージのインストール、サービスの設定など)を自動的に行うツール

chefで使われる用語

レシピ
設定を記述したファイル
クックブック
レシピファイル、インストールするrpm、その他必要なファイル等をまとめたディレクトリ
レポジトリ
chef実行時に必要なファイルセット。クックブック、レシピ等をまとめたディレクトリ
knife
レポジトリ、クックブック、レシピ等を扱うコマンド
chef-solo
レシピに従ってOSの設定を変更するコマンド

chefを使う時の流れ

(インストールを行うrootユーザーで作業しています)

  1. 必要なパッケージのインストール
  2. レポジトリを作成
  3. クックブック、レシピを作成
  4. レシピを適用

準備

chefパッケージとknife-soloパッケージをインストールする。

# gem install chef
# gem install knife-solo

初期設定を行う。

# knife configure 

レポジトリの作成

# mkdir /path/to/repository
# cd /path/to/repository
# knife solo init .

クックブックとレシピの作成

クックブックは、レポジトリの cookbooks ディレクトリ、もしくは site-cookbooks ディレクトリに作成する必要がある。

  1. クックブックの作成

site-cookbooksディレクトリの下に hoge というクックブックを作成する場合、以下のように実行する

# cd /path/to/repository/
# knife cookbook create hoge -o site-cookbooks/
  1. レシピを作成

レシピの書式については、http://docs.opscode.com/essentials_cookbook_recipes.html を参照のこと。

例としてzsh パッケージをインストールするレシピを、hogeクックブックの中の defaultレシピとする場合は、以下のように記述する。

/path/to/repository/site-cookboos/hoge/recipes/default.rb
package "zsh" do
    action :install
end

レシピの適用

  • クックブックフォルダのpath
  • どのクックブックを利用するか を指定してコマンドを実行する必要がある。
  1. クックブックフォルダのpathを指定するファイル

適当な場所(/path/to/config.rb)に、以下の内容で .rb ファイルを作成する。

file_cache_path "/tmp/chef-solo"
cookbook_path ["/path/to/repository/site-cookbooks"]
  1. どのクックブックを利用するか(Attribute設定ファイル) 適当な場所に(/path/to/attributes.json)以下の内容で .json ファイルを作成する。 (クックブックhogeのdefault.rbレシピを実行する指定)
{
   "run_list" : [
        "recipe[hoge]"
   ]
}

※ cookbook[hoge]ではなく、recipe[hoge]と記載する理由は調査のToDo。

  1. クックブックの適用
# chef-solo -c /path/to/config.rb -j /path/to/attributes.json