先に結論です。
- 使うならitamaeがいい。chef zeroは何か辛かった(すみません)
そもそも何故Chef zeroを見てみようかと思った?
構成管理ツールとしてchefは有名ですが、このツール、結構使いこなすのが大変です。インフラまわりを「Infrastructure as Code」というようにコードで管理するのは魅力的ですが、結構ハマってしまうこともあったので敷居が高いなという印書です。
ただそういった中Chefをより簡単に使えるようにしたものとしてChef Solo(この本が参考になりました)がありました。
これがあったお陰でローカルマシンからVMやEC2などに比較的簡単にchefを適用させることができるようになりました。
ところが、ところがです・・・。chef soloが非推奨になり代わりにchef zeroを使えということになりました。これは非常に残念・・・・。
なのでchef zeroみてみました
環境
使うもの
- ruby2.1.5 (インストール済みとする)
- chef zero
- knife zero
- virtual box
- vagrant
- centos65
インストール
virtual box
ここから入手
vagrant
- ここから入手
- インストール後
vagrant init
してみる。Vagrantfileが作成されればOK。
virtual boxでcentosを使えるようにする
$ vagrant box add centos65 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.1/centos65-x86_64-20131205.box
試しにログインしてみる。
$vagrant up
$vagrant ssh
これで入れたらOK。
- .ssh/configに追加しておく
vagrant ssh-config >> ~/.ssh/config
chef zero/knife zeroを入れる
macの場合はここのサイトからダウンロードしいれるか、Gemfileを作成する。今回はGemfileを作って入れます
source "https://rubygems.org"
gem 'chef'
gem 'knife-zero'
#リポジトリを作成する
bundle exec chef generate repo chef-repo
.chef/knife.rbを作成する
echo "local_mode true" >> .chef/knife.rb
#レシピを作ってみる
まずはenvironmentを作成する。
# 以下を実行するとenvironmentを作成
bundle exec knife environment create development
次にknife zeroのbootstrapを実施。
bundle exec knife zero bootstrap melody -x vagrant --sudo -E development
#レシピを実行してみる
bundle exec knife zero chef_client 'chef_environment:development' -a hostname -x vagrant
これで実行できれば良いのだが、うまくできない。
どうもVM上へのknife zero chef_clientができない(?)。bootstrapはできるがchef_client実施時はsessionの確率ができない。同じようなこと言っている人もいる。
これはもっと調べる必要ある。。。(Chef solo楽だったなー)
nodeの存在は確認できる
bundle exec knife node list
詳細もみれる
bundle exec knife node show [node_name]
結局上で使わなかったChefdkを使ってChefをいれて、そこに含まれているchef-provisioningを使うと、まー、VMへレシピを適用することはできました。
itamae使う
chef-provisioningは何かうーん、って感じだったので、itamaeを使ってみた。これはchef soloに似ているしライトな感じで使いやすそう。
環境
- itamae 1.1.24
- ruby 2.1.5
試してみる
- 最初にitamaeのレシピ等作るため、適当にディレクトリ作ります。
mkdir itamae_sample
cd itamae_sample
- Gemfileを作成しbundle install
source 'https://rubygems.org'
gem 'itamae', '1.0.13'
- レシピを作成する
nginxをインストールするレシピ。
package 'nginx' do
action :install
end
service 'nginx' do
action [:enable, :start]
end
- レシピを実行
レシピを実行してみる。
bundle exec itamae ssh -h default --vagrant nginx_recip.rb
成功すると上の画面のようなります。
vagrant ssh でVMに入るとインストールされていることがわかると思います。
## 感想
使ってみた感触としては、itamaeが手軽でいい気がします。recipeをあらかじめ用意しておくと、いざという時の環境構築やライブラリアップデートなどが誰でも簡単にできるようになり、良いなと思っています。
itamaeのレシピに関するナレッジとか書いていければなと思っています