第2回 サーバー設定ツール「Chef」 (2/3)

2014/10/30 AWS, 技術系 投稿者:佐藤

フレームワーク「Chef」の基本

2回目となる今回はChefのインストールと使い方がメインとなります。以下の順番で説明いたします。

——————————
・用語解説
・Chefのインストール
・Chefの使い方
——————————

用語解説

Chefはその名の通り「料理人」という言葉が由来になっており、その構成要素も料理をモチーフにして命名されています。

そのため、イメージしやすいと紹介されることもありますが、実際は独特の用語が多く、使われる用語の全てを理解するのは容易ではありません。

Chefを使うのに、最低限必要な用語をまとめましたので確認してください。

リポジトリ

Chef の実行に必要な一連のファイルをまとめる入れ物

クックブック

特定のレシピに必要なデータやファイルをまとめるもの。

レシピ

クックブックの中で実際に実行されるものでRubyで記述するパッケージやサーバの設定などを記載していきます。

リポジトリ > クックブック > レシピ という階層です。

Chefで何かをしようとしたらまずリポジトリを作り、次に例えば apache を入れたかったらapache のクックブックを作り、そのための設定をレシピに書くというイメージです。

knife

knife は Chef に含まれるツールでクックブックなどを作ることができます。

Chef-Solo

Chef-Solo は自分自身に対してクックブックを実行することができます。そのため、Chef-Solo はログインしたサーバー内での実行を前提としています。

Chefのインストール

それではインストールの説明に入ります。
まず公式サイトより、インストーラを入手します。下記のサイトにアクセスしてください。

インストーラのダウンロード

https://www.getchef.com/download-chef-client/

CentOS6 64bit環境であれば、
・Enterprise Linux
・6
・x86_64
と選択し、

最後に Chef のバージョンを選択してダウンロードし、
/usr/local/src/ 以下に配置します。

chef_down

Chef-Soloのインストール

Red Hat Enterprise Linux6、x86_64構成でのrpmは下記の通りです。
自分のサーバー構成に合ったrpmはchef公式パッケージダウンロードページから選んでください。

Chef-Soloがインストールされていることを確認しましょう。

Chef用のユーザー追加

続いてChef用のユーザを作成します(必須ではありません)

なお、chefuser01のホームディレクトリ(/home/chefuser01)が今回のリポジトリにあたります。
リポジトリといってもただのディレクトリなので、mkdir等で別途作成することも可能です。

Chef用のユーザを作成した場合には、sudoコマンドが使えるようにします

グループへの追加

idコマンドでユーザーの情報を確認します

Chefの使い方

ここからは作成したchefuser01で再度ログインしなおしてください。

Knifeの設定を行います。/home/chefuser01/.chefディレクトリ作成し、

/home/chefuser01/.chef/knife.rbファイルを作成し以下の通りに記載します。

つぎにChef-Soloの設定を行います。/home/chefuser01/cookbooksディレクトリを作成し

以下の通りに記載します。

ここまで準備が出来たら最後にクックブックを作成してみましょう。
sample_cookbook という名前のクックブックを作成します。
下記のコマンドを実行すると、クックブックのテンプレートが展開されます。

/home/chefuser01/cookbook 以下にsample_cookbook というクックブックが作成されます。

レシピの作成

クックブックの作成が終わりましたので、次にレシピの作成をします。

ここでは、リソースを使用してレシピを作成します。
リソースは、レシピで状態を定義するために作成された言語です。
例えば、ディレクトリが作成されている。パッケージがインストールされている。など同じフォーマットで様々な状態を定義できます。

基本的なフォーマットは以下の通りです。

それでは、リソースを使用して実際にレシピを作成してみましょう。
下記のレシピでは、/tmp以下にfolderというディレクトリがある状態を定義しています。
また、所有ユーザや権限の設定も同時に行っています。

/home/user01/cookbooks/sample_book/recipesディレクトリにsample_recipe.rbという名前のレシピを以下の通りに作成します。

実行するレシピ・クックブックの登録

ノード(Chef-Client/Chef-Soloを実行するマシン)に実行するレシピを設定します。
ここではファイル名をnode.jsonとし、先程作成したレシピをランリストに設定しています。基本的なフォーマットは以下の通りです。

/home/user01/node.jsonファイルを作成し以下の通りに記載します。下記のファイルは、ノード固有の変数やランリストと呼ばれる実行レシピリストを定義します。

これで準備完了となります。

実行

準備が整いましたのでChef-Soloを実行してみましょう。
/home/user01で以下のコマンドを実行します。root権限が必要となるため、ここではsudoを使用して実行します。

/tmp以下に、“folder”という名前のディレクトリが存在することを確認しましょう。
また、ファイルのowner・group・modeも定義した内容になっているはずです。

Chefはレシピとノードの状態を比較し、異なる場合のみ変更を行います。
そのため、レシピの定義と同じ状態でChef-Soloを何度実行しても同じ実行結果になります。
このように何度実行しても同じ状態になる特徴は、冪等性(べきとうせい)と呼ばれています。

以上がChefのインストールと使い方になります。

レシピは非常に簡単な内容でしたが、まずこの基本を理解することが大事です。
最後となる次回は、クックブックの紹介とまとめです。

カレンダー

    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       

カテゴリー

PRODUCE ネディアプロデュース
群馬データセンター
群馬の法人ITサポートサービス Wide Net[ワイドネット]
ワイドオフィス
イヤホンのブランドでハイクラスを誇る | n+um(エニューム)