要件
- chef-solo と knife を使いたい
- 新規に chef をインストールすることは出来る
- 既に稼働中の環境に Chef というシチュエーションもあるはず
- なので CentOS 5.x な環境に Chef-solo をインストールするぞ
いきなり問題点
ruby のバージョンアップをしよう
下準備
checkinstall を使って rpm からインストールしようという算段なので、それに必要なパッケージをインストール
sudo yum install rpm-build sudo yum install gcc sudo yum install git
checkinstall のインストール
cd /tmp/ git clone http://checkinstall.izto.org/checkinstall.git cd checkinstall/ make sudo make install sudo checkinstall sudo cd /usr/src/redhat/RPMS/x86_64/ sudo rpm -Uvh --test checkinstall-20121125-1.x86_64.rpm sudo rpm -Uvh checkinstall-20121125-1.x86_64.rpm
ruby のバージョンアップ
最新版の ruby の取得(1.8 系の最新版を使用)
cd /tmp/ wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p371.tar.gz tar zxvf ruby-1.8.7-p371.tar.gz
最新版の ruby のインストール
ruby-1.8.7-p371 ./configure --prefix=/usr sudo make sudo checkinstall --fstrans=no sudo rpm --test -Uvh /usr/src/redhat/RPMS/x86_64/ruby-1.8.7-p371-1.x86_64.rpm sudo rpm -Uvh /usr/src/redhat/RPMS/x86_64/ruby-1.8.7-p371-1.x86_64.rpm
最新版の ruby の確認
ruby -v ruby 1.8.7 (2012-10-12 patchlevel 371) [x86_64-linux]
chef のインストールとレシピのテスト
rubygems のインストール
cd /tmp wget http://rubyforge.org/frs/download.php/70696/rubygems-1.3.7.tgz tar zxvf rubygems-1.3.7.tgz cd rubygems-1.3.7 ruby setup.rb
rake のインストール
gem install rake --no-ri --no-rdoc
chef のインストール
gem install chef --no-ri --no-rdoc
やっと chef-solo...
chef-solo をいじるユーザーを作る
groupadd -g 1000 services useradd -g services -u 1001 chefsolo chmod 755 /home/chefsolo
chef リポジトリ雛形を GitHub から拝借
cd ~ git clone git://github.com/opscode/chef-repo.git cd chef-repo mkdir .chef mkdir ~/tmp
chef-solo 実行時の cookbook 等を設定する
vim .chef/solo.rb
以下のように記載する。
file_cache_path "/home/chefsolo/tmp/chef-solo" cookbook_path "/home/chefsolo/chef-repo/cookbooks"
cookbook を作る
su - chefsolo cd ~/chef-repo rake new_cookbook COOKBOOK=packages_install
適当にレシピを書く
$ vim cookbooks/packages_install/recipes/default.rb
とりあえず tmux と zsh あたりをインストールしてみる。
%w{tmux zsh}.each do |package_name| package package_name do action :install end end
chef-solo を実行
sudo chef-solo -c /home/chefsolo/chef-repo/.chef/solo.rb -j /home/chefsolo/chef-repo/.chef/chef.json
こんな感じでパッケージがインストールされる。
Starting Chef Client, version 11.4.0 Compiling Cookbooks... Converging 2 resources Recipe: packages_install::default * package[tmux] action install - install version 1.6-1.el5.rf of package tmux * package[zsh] action install - install version 4.2.6-6.el5 of package zsh Chef Client finished, 2 resources updated