さくらVPSにchef-serverをインストールする



さくらVPSにchef-serverとchef-clientをインストールする」でchef-serverのインストールまで
たどりつかなかったので改めて、設定をしてみました。
Manual Chef Server Configuration」を元に、chef-serverをインストールしました。
 

CouchDBとRabbitMQをインストールする

yumから必要なソフトをインストールします。

 sudo yum install couchdb erlang rabbitmq-server libxml2-devel zlib-devel

 
couchdbは、memcachedを扱っている会社と合併した気がするので、今後どうなるのかなとふと思いました。
javaは、sun jdkが既にインストールされているので、除外しています。CouchDBをスタートします。

 $ sudo service couchdb start

 
任意の設定をしていると「http://hostname:5984」でバージョン情報がjson形式で受け取れます。

 {"couchdb":"Welcome","version":"0.11.2"}

 
http://hostname/_utilsにアクセスすると管理画面を確認することができます。

 
RabbitMQを開始します。

 $ sudo service rabbitmq-server start
 $ sudo rabbitmqctl add_vhost /chef
 $ sudo rabbitmqctl add_user chef testing
 $ sudo rabbitmqctl set_permissions -p /chef chef ".*" ".*" ".*"

 

gemからChef Serverをインストールする

gemを利用して、Chef Serverをインストールします。

 $ sudo gem install chef-server chef-server-api chef-solr chef-server-webui merb
 $ sudo gem install sqlite3-ruby -v 1.2.5
 $ gem list | grep chef
  chef (0.9.14)
  chef-server (0.9.14)
  chef-server-api (0.9.14)
  chef-server-webui (0.9.14)
  chef-solr (0.9.14)

 

起動のためのserver.rbを準備する。

「/etc/chef/server.rb」に「Configure Chef Server」の内容を元に準備します。

 log_level          :info
 log_location       STDOUT
 ssl_verify_mode    :verify_none
 chef_server_url    "http://chef.example.com:4000"
 
 signing_ca_path    "/var/chef/ca"
 couchdb_database   'chef'
 
 cookbook_path      [ "/var/chef/cookbooks", "/var/chef/site-cookbooks" ]
 
 file_cache_path    "/var/chef/cache"
 node_path          "/var/chef/nodes"
 openid_store_path  "/var/chef/openid/store"
 openid_cstore_path "/var/chef/openid/cstore"
 search_index_path  "/var/chef/search_index"
 role_path          "/var/chef/roles"
  
 validation_client_name "chef-validator"
 validation_key         "/etc/chef/validation.pem"
 client_key             "/etc/chef/client.pem"
 web_ui_client_name     "chef-webui"
 web_ui_key             "/etc/chef/webui.pem"
  
 web_ui_admin_user_name "admin"
 web_ui_admin_default_password "somerandompasswordhere"
 
 supportdir = "/srv/chef/support"
 solr_jetty_path File.join(supportdir, "solr", "jetty")
 solr_data_path  File.join(supportdir, "solr", "data")
 solr_home_path  File.join(supportdir, "solr", "home")
 solr_heap_size  "256M"
  
 umask 0022
 
 Mixlib::Log::Formatter.show_time = false

 
「chef_server_url」を任意のURLに変更します。「web_ui_admin_default_password」のパスワード値が少し長いので
任意のパスワード名に変更します。
 

Chef Indexer、Chef SOLR Server、Chef Serverを起動する。

Chef Indexer、Chef SOLR Server、Chef Serverをそれぞれ起動します。プログラムがフォアグラウンドで
起動されるので、「nohup command &」として起動しても良いと思います。

 $sudo chef-solr-indexer
  $sudo chef-solr
  $sudo chef-server -N -e production
  $sudo chef-server-webui -p 4040 -e production

 
「Chef Solr」は、Javaで動いているようでした。「Apache solr」が利用されているようで、起動オプションを
いろいろ設定できるようです。

Name Listen Port Example Program Name in ps (Erlang programs truncated)
Chef Solr 8983 /usr/bin/java -Xmx250M -Xms250M -Dsolr.data.dir=/opscode/chef/features/data/solr/data -Dsolr.solr.home=/opscode/chef/features/data/solr/home -jar /opscode/chef/features/data/solr/jetty/start.jar

 

起動後、管理画面を試す

無事起動ができると、Chef Serverのwebuiをブラウザから閲覧することができます。
http://hostname:4040/」でアクセスすると、ログイン画面が表示されるので、server.rbで設定した「web_ui_admin_user_name」「web_ui_admin_default_password」を利用してログインします。

 
管理画面から、userを追加したり、ノードの設定、cookbookの編集?など、いろいろできるようです。
 

今回はまったこと

今回、いろいろ理解が乏しく、結構、はまりました。そこで、何度かサービスを立ち上げたり、OSを再起動してみたのですが
それでもエラーが消えず、元からデータを削除してみたりしました。

 $rm -r /var/chef/

 
「/etc/chef/server.rb」によると、「file_cache_path」やら「search_index_path」やらがあったので
エラーの内容と関係あるのかわからずとりあえず消していました。
それでも、couchdbにログインできないuseridなどが消えなかったので、格納しているファイル自体消したりしました。
couchdbの管理画面から消してみたりはしてみたのだが、エラーが改善できなかったので最終手段)

 rm /var/lib/couchdb/chef.couch
 rm /var/log/couchdb/couch.log

 
chef.couchの中身は、jsonデータのようです。couch.logはログファイルですが、ついでに消しました。

次回は、なんとか「Hello World example」までたどり着いてcookbookを
利用してみたいとです。また、余力があれば「How to Proxy Chef Server with Apache」も試してみたいと思います。