2012年11月10日土曜日

chef-serverに自作cookbooksを登録してみた

■環境
chefサーバ、クライアントともに同一サーバ
chefサーバのバージョン:10.16.2

■前提
chefサーバおよびchefクライアント、何かしらのサンプルcookbooksの作成、インストールが必要です
下記のURLを参考にしてください
chefのインストール:http://kakakikikeke.blogspot.com/2012/07/rubychef.html
chef-serverのイントール:http://kakakikikeke.blogspot.com/2012/07/rubycentos56chef-server.html
サンプルcookbooks作成:http://kakakikikeke.blogspot.com/2012/10/centoschefcookbookrecipe.html

■クライアント側でのchef-clientの設定
vi /etc/chef/client.rb
chef_server_url 'http://yoshi3:4000/'
node_name 'yoshi3'

chef_server_urlはサーバのホスト名またはIPアドレスを指定してください
node_nameはクライアント側のホスト名を指定しださい

chefサーバ上に/etc/chef/validation.pemというファイルがあるのでそれをクライアント側の/etc/chef配下に配置します
※今回の場合はサーバとクライアントが同一のサーバですので、すでに存在していると思います

chef-client

エラーなく実行されたあとにchef-serverのwebuiから「Clients」→「Create」を見るとクライアントが登録されています



■クライアント側でのknifeの設定
knife configure --initial
入力するとknifeの初期設定を入力する画面となります
基本的には全てデフォルトで問題ないですので、Enterを入力していきます
ln -s /etc/chef/validation.pem /root/.chef/root.pem
knifeでchef-serverにアクセスするためのユーザの作成とそのユーザ用の鍵を作成します
knifeでアクセスする鍵はchef-clientでアクセスする鍵とは別の鍵となるためknife側でも初期設定が必要になります
※chef-server的には単純にアクセスするユーザとして管理されるので、webuiで見るとClients配下に登録されています

knife node list
登録したクライアントが表示されればchef-serverへknife経由でデータが取得できていることになります

■クライアント側でのknifeを使ってのcookbooksの登録
前回作成したcookbooksがあるのでそれを使用してcookbooksを登録してみたいと思います。
knife cookbook upload test -o /chef-repo/cookbooks/
webuiから「Cookbooks」を参照すれば登録できていることがわかります



■クライアント側でのknifeを使ってのcookbooksとクライアントの紐付け
knife node run_list add yoshi3 'recipe[hosts]'

■クライアント側でのchef-clientの実行
chef-client
先ほど紐付けしたrecipesが適用されます

■まとめ
chef-clientは対象のクライアントへchef-server上にあるcookbooksやrecipesを適用するためのコマンド
chef-clientはクライアントのサーバへ鍵を登録する必要がある
knifeはchef-serverへcookbooksやrecipesを登録、削除するためのコマンドでchef-clientを実施するためのデータを操作するためのコマンド
knifeは実行するユーザごとに鍵を登録する必要がある

0 件のコメント:

コメントを投稿