Ruby2.0でchefを動かす

とりあえず、やってみたので、メモ。環境はScientific Linuxの6.3

sh-4.1$ sudo yum install gcc make cloog-ppl cpp glibc-devel glibc-headers kernel-headers libgomp mpfr ppl
sh-4.1$ wget ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.gz
sh-4.1$ tar xvzf ./ruby-2.0.0-p0.tar.gz
sh-4.1$ cd ruby-2.0.0-p0
sh-4.1$ ./configure
sh-4.1$ make
sh-4.1$ sudo make install
sh-4.1$ which ruby
/usr/local/bin/ruby
sh-4.1$ ruby -v
ruby 2.0.0p0 (2013-02-24 revision 39474) [i686-linux]
sh-4.1$ sudo yum install autoconf curl-devel expat-devel gettext-devel perl-ExtUtils-MakeMaker
sh-4.1$ cd /hoge
sh-4.1$ wget https://git-core.googlecode.com/files/git-1.8.1.3.tar.gz
sh-4.1$ tar xvzf ./git-1.8.1.3.tar.gz
sh-4.1$ cd git-1.8.1.3
sh-4.1$ ./configure
sh-4.1$ make
sh-4.1$ sudo make install
sh-4.1$ which git
/usr/local/bin/git
sh-4.1$ git --version
git version 1.8.1.3
sh-4.1$ gem --version
2.0.0
sh-4.1$ sudo /usr/local/bin/gem install chef
sh-4.1$ sudo mkdir /var/chef
sh-4.1$ sudo mkdir /var/chef/cookbooks
sh-4.1$ sudo mkdir /var/log/chef
sh-4.1$ sudo mkdir /tmp/chef-solo
sh-4.1$ sudo mkdir /etc/chef
sh-4.1$ sudo vi /etc/chef/solo.rb
sh-4.1$ sudo cat /etc/chef/solo.rb
file_cache_path "/var/chef"
cookbook_path "/var/chef/cookbooks"
log_level :info

sh-4.1$ sudo /usr/local/bin/knife cookbook create mycookbook -o /var/chef/cookbooks
sh-4.1$ sudo /usr/local/bin/knife cookbook create mysql -o /var/chef/cookbooks
sh-4.1$ sudo vi /var/chef/cookbooks/mysql/recipes/default.rb
sh-4.1$ sudo cat /var/chef/cookbooks/mysql/recipes/default.rb
#
# Cookbook Name:: mysql
# Recipe:: default
#
# Copyright 2013, YOUR_COMPANY_NAME
#
# All rights reserved - Do Not Redistribute
#
%w{mysql-server}.each do |pkg|
  package pkg do
    action :install
  end
end
service "mysqld" do
  supports :status => true, :restart => true, :reload => true
  action [ :enable, :start ]
end

sh-4.1$ sudo mv /var/chef/cookbooks/mysql/recipes/default.rb /var/chef/cookbooks/mysql/recipes/mysql-server.rb
sh-4.1$ sudo vi /etc/chef/chef.json
sh-4.1$ sudo /usr/local/bin/gem list --local

*** LOCAL GEMS ***

bigdecimal (1.2.0)
chef (11.4.0)
erubis (2.7.0)
highline (1.6.15)
io-console (0.4.2)
ipaddress (0.8.0)
json (1.7.7)
mime-types (1.21)
minitest (4.3.2)
mixlib-authentication (1.3.0)
mixlib-cli (1.3.0)
mixlib-config (1.1.2)
mixlib-log (1.4.1)
mixlib-shellout (1.1.0)
net-ssh (2.6.6)
net-ssh-gateway (1.2.0)
net-ssh-multi (1.1)
ohai (6.16.0)
psych (2.0.0)
rake (0.9.6)
rdoc (4.0.0)
rest-client (1.6.7)
systemu (2.5.2)
test-unit (2.0.0.0)
yajl-ruby (1.1.0)
sh-4.1$ sudo /usr/local/bin/gem update --system 1.8.25
Updating rubygems-update
Fetching: rubygems-update-1.8.25.gem (100%)
Successfully installed rubygems-update-1.8.25
Parsing documentation for rubygems-update-1.8.25
Installing ri documentation for rubygems-update-1.8.25
Installing darkfish documentation for rubygems-update-1.8.25
Done installing documentation for rubygems-update (2 sec).
Installing RubyGems 1.8.25
RubyGems 1.8.25 installed

== 1.8.25/ 2013-01-24

* 6 bug fixes:

  * Added 11627 to setup bin_file location to protect against errors. Fixes #328 by ConradIrwin
  * Specification#ruby_code didn't handle Requirement with multiple
  * Fix error on creating a Version object with a frozen string.
  * Fix incremental index updates
  * Fix missing load_yaml in YAML-related requirement.rb code.
  * Manually backport encoding-aware YAML gemspec


------------------------------------------------------------------------------

RubyGems installed the following executables:
        /usr/local/bin/gem

RubyGems system software updated
sh-4.1$ sudo /usr/local/bin/gem list --local

*** LOCAL GEMS ***

chef (11.4.0)
erubis (2.7.0)
highline (1.6.15)
ipaddress (0.8.0)
mime-types (1.21)
mixlib-authentication (1.3.0)
mixlib-cli (1.3.0)
mixlib-config (1.1.2)
mixlib-log (1.4.1)
mixlib-shellout (1.1.0)
net-ssh (2.6.6)
net-ssh-gateway (1.2.0)
net-ssh-multi (1.1)
ohai (6.16.0)
rest-client (1.6.7)
rubygems-update (1.8.25)
systemu (2.5.2)
yajl-ruby (1.1.0)
sh-4.1$ sudo /usr/local/bin/gem install json
Fetching: json-1.7.7.gem (100%)
Building native extensions.  This could take a while...
Successfully installed json-1.7.7
1 gem installed
Installing ri documentation for json-1.7.7...
unable to convert "\xD8" from ASCII-8BIT to UTF-8 for lib/json/ext/generator.so, skipping
unable to convert "\xD8" from ASCII-8BIT to UTF-8 for lib/json/ext/parser.so, skipping
Installing RDoc documentation for json-1.7.7...
unable to convert "\xD8" from ASCII-8BIT to UTF-8 for lib/json/ext/generator.so, skipping
unable to convert "\xD8" from ASCII-8BIT to UTF-8 for lib/json/ext/parser.so, skipping
sh-4.1$ sudo /usr/local/bin/chef-solo -c /etc/chef/solo.rb -j /etc/chef/chef.json
Starting Chef Client, version 11.4.0
[2013-03-05T00:31:45+09:00] INFO: *** Chef 11.4.0 ***
[2013-03-05T00:31:47+09:00] INFO: Setting the run_list to ["recipe[mysql::mysql-server]"] from JSON
[2013-03-05T00:31:47+09:00] INFO: Run List is [recipe[mysql::mysql-server]]
[2013-03-05T00:31:47+09:00] INFO: Run List expands to [mysql::mysql-server]
[2013-03-05T00:31:47+09:00] INFO: Starting Chef Run for centos63-01
[2013-03-05T00:31:47+09:00] INFO: Running start handlers
[2013-03-05T00:31:47+09:00] INFO: Start handlers complete.
Compiling Cookbooks...
Converging 2 resources
Recipe: mysql::mysql-server
  * package[mysql-server] action install[2013-03-05T00:31:47+09:00] INFO: Processing package[mysql-server] action install (mysql::mysql-server line 10)
[2013-03-05T00:31:50+09:00] INFO: package[mysql-server] installing mysql-server-5.1.67-1.el6_3 from sl-security repository

    - install version 5.1.67-1.el6_3 of package mysql-server

  * service[mysqld] action enable[2013-03-05T00:33:03+09:00] INFO: Processing service[mysqld] action enable (mysql::mysql-server line 14)
[2013-03-05T00:33:04+09:00] INFO: service[mysqld] enabled

    - enable service service[mysqld]

  * service[mysqld] action start[2013-03-05T00:33:04+09:00] INFO: Processing service[mysqld] action start (mysql::mysql-server line 14)
[2013-03-05T00:33:08+09:00] INFO: service[mysqld] started

    - start service service[mysqld]

[2013-03-05T00:33:08+09:00] INFO: Chef Run complete in 81.291905601 seconds
[2013-03-05T00:33:08+09:00] INFO: Running report handlers
[2013-03-05T00:33:08+09:00] INFO: Report handlers complete
Chef Client finished, 3 resources updated
sh-4.1$ sudo service mysqld status
mysqld (pid  17717) is running...

と、いうわけで、rubygems-updateをダウングレードしないとうまく動かなかった。どううまく動かないのかはやってみて。

参考:
http://blog.az-tek.co.uk/2013/03/knife-bootstrap-failure-no-such-file-to.html