はじめてのChef post

目標

母艦であるところの Mac から、VirtualBox で構築した VM や VPS に対して環境を構築したい。 が、最初は、 Chef で遊んでみることに。

準備

とりあえず、 VirtualBox で VM を立ち上げて確認してみる。

母艦であるところの Mac 側で、 Chef と knife-solo と berkshelf をインストールします。

VM 側は、後で Mac 側からインストールするので特に何もインストールする必要はないですが、SSHの設定はやっておくのが吉っぽいです。

まず始めに、

$ gem install chef

したら

You don't have write permissions into the /Library/Ruby/Gems/1.8 directory.

ってしばらくして怒られたので、権限を与えて実行

$ sudo gem install chef

で、やっぱりしばらくしたら、

ERROR:  Error installing chef:
mime-types requires Ruby version >= 1.9.2.

って Ruby の新しいバージョンが必要だよって怒られた(´・ω・`)

確認したら、

$ ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]

確かに古いね。

ってことで、新しいバージョンをインストール

$ ruby -v
ruby 1.9.3p545 (2014-02-24 revision 45159) [x86_64-darwin12.5.0]

で、

$ sudo gem install chef --no-ri --no-rdoc
Fetching: mixlib-config-2.1.0.gem (100%)
                   :
25 gems installed

今度は大丈夫。

$ chef-client -v
Chef: 11.12.2

次に、 knife-solo をインストール

$ sudo gem install knife-solo --no-ri --no-rdoc
               :
Successfully installed knife-solo-0.4.1
1 gem installed

で、こっちはすんなりインストール

続いて、 Berkshelf をインストール

$ sudo gem install berkshelf --no-ri --no-rdoc

knife configure

$ knife configure
WARNING: No knife configuration file found
Where should I put the config file? [/Users/***/.chef/knife.rb] 
ERROR: Ohai::Exceptions::DependencyNotFound: Can not find a plugin for dependency os

Chef 11.12.2のknife configureが失敗する - Qiita」によると、バグッてるので古いバージョンを使えってことのよう(´・ω・`)

とりあえず、エラー表示でググるのって大事だよねってことで。

$ sudo gem uninstall chef ; sudo gem install chef --no-ri --no-rdoc -v 11.10.0

で、古いバージョンをインストール。

$ chef-client -v
Chef: 11.10.0

気を取り直して、

$ knife configure
WARNING: No knife configuration file found
Where should I put the config file? [/Users/***/.chef/knife.rb] 
Please enter the chef server URL: [https://****:443] 
                    :
Configuration file written to /Users/***/.chef/knife.rb
$

今度はうまく行きました。

レポジトリの作成

chef-repo って名前でレポジトリを作成します。

$ knife solo init chef-repo
Creating kitchen...
Creating knife.rb in kitchen...
Creating cupboards...
Setting up Berkshelf...
$ cd chef-repo

この時、 Berkshelf がインストール済みだと、一緒に Berksfile ファイルも作ってくれます。 とりあえず、 nginx を Berkshelf を使いインストールしてみます。

$ echo cookbook 'yum'>>Berkshelf
$ echo cookbook 'nginx'>>Berkshelf
$ berks install

で、VM 側に Chef をインストール。

$ knife solo prepare root@192.168.56.102

SSH鍵を使う場合は

$ knife solo prepare -i path/to/key_file root@192.168.56.102

ってするようです。

Chef Soloの正しい始め方 | tsuchikazu blog」に書いてあるように、

{"run_list":[
  "yum::epel", 
  "nginx"
]}

として、

$ knife solo cook root@192.168.56.102

実行すると、

could not find recipe epel for cookbook yum

ってエラーが出るので、

{"run_list":[
  "yum", 
  "nginx"
]}

と、書き換えて、

$ knife cookbook create base -o site-cookbooks/
$ open -e site-cookbooks/base/recipesdefault.rb

として、「サードパーティ製chefレシピ使ってたの忘れてた - わすれっぽいきみえ」を参考に追加。

# add the EPEL repo
yum_repository 'epel' do
  description 'Extra Packages for Enterprise Linux'
  mirrorlist 'http://mirrors.fedoraproject.org/mirrorlist?repo=epel-6&arch=$basearch'
  fastestmirror_enabled true
  gpgkey 'http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6'
  action :create
end

# add the Remi repo
yum_repository 'remi' do
  description 'Les RPM de Remi - Repository'
  baseurl 'http://rpms.famillecollet.com/enterprise/6/remi/x86_64/'
  gpgkey 'http://rpms.famillecollet.com/RPM-GPG-KEY-remi'
  fastestmirror_enabled true
  action :create
end

で、

$ knife solo cook root@192.168.56.102

を実行し、しばらくすると、完了します。

ブラウザでアクセスすると、、、、見えませんでした。 少し考えて、 VM 側に SSH で入り

# netstat -apn|grep "LISTEN "
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      2124/nginx          
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      987/sshd            
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1063/master         
tcp        0      0 :::22                       :::*                        LISTEN      987/sshd            
tcp        0      0 ::1:25                      :::*                        LISTEN      1063/master         

確認したところ、LISTENは出来てる所が確認できたところで、FWでブロックされていることに気が付きました。

ってところで、以下次回?

参考


 /  変更履歴  /  Permalink  /  このエントリーをはてなブックマークに追加
カテゴリ: ブログ  /  タグ: Chef