knife solo cookで環境を構築してみる
今までの内容を踏まえknife solo cookで環境を構築してみるてきな
レシピ作成
今回の構成
$ knife solo init chef-repo #初期化 $ cd chef-repo $ knife cookbook create base -o site-cookbooks $ knife cookbook create ruby -o site-cookbooks $ knife cookbook create mysql -o site-cookbooks $ knife cookbook create redis -o site-cookbooks $ knife cookbook create nginx -o site-cookbooks
recipe fileをごにょごにょ
こちらに今回作成したchef-repoを置いていますので
詳細なrecipeに関してはそちらをご覧ください。
下記で簡単な説明を行います。
base
- attributes/default.rbでinstallするpackageを管理
- recipe/default.rbでinstall or upgradeを行う
mysql
- recipe/default.rb 現状packageでversion指定でmysqlをinstallしているだけ
後ほどattributesでのversion管理やtemplateでのmy.cnfを管理する予定
redis
- recipe/default.rb 現状packageでredisをinstallしているだけ
後ほどtemplateでのmy.cnfを管理する予定
nginx
- recipe/default.rb 現状packageでnginxをinstallしているだけ
後ほどtemplateでのmy.cnfを管理する予定
jsonの作成
$ vi roles/localhost_server.json
{ "name" : "localhost", "json_class" : "Chef::Role", "description" : "localhost kitchen", "chef_type" : "role", "run_list" : [ "recipe[base]", "recipe[nginx]", "recipe[ruby]", "recipe[mysql]", "recipe[redis]" ] }
$ vi nodes/192.168.50.12.json
{ "run_list" : [ "role[localhost_server]" ] }
レシピ反映
chef soloをリモートホストに入れる
$ knife solo prepare 192.168.50.12
レシピの反映
$ knife solo cook 192.168.50.12 Running Chef on 192.168.50.12... Checking Chef version... Uploading the kitchen... ....... ....... Chef Client finished, 14 resources updated
特にエラーも出ずにうまく行った
動作確認してみる
version確認等の簡単な確認
$ nginx -v nginx version: nginx/1.0.15 $ sudo /etc/init.d/redis start $ redis-cli redis 127.0.0.1:6379> $ ruby -v ruby 2.0.0p451 (2014-02-24 revision 45167) [x86_64-linux] $ bundle -v Bundler version 1.5.3 $ mysql -u root mysql>
とりあえず一通り動いたみたいです。
recipeを更新したタイミングでこの記事も編集していく予定です。