ようへいの日々精進XP

よかろうもん

EC2 インスタンスで chef-solo を使ってみる一部始終

概要

世の中は puppet よりも chef らしい...ということで、puppet もそこそこに chef を弄ってみることにした。

要件

AMI:Amazon Linux AMI x86_64 EBS

インストール

今回は chef-server ではなく、お手軽に chef を体験出来るらしい chef-solo をインストールしてみる。

1. 必要なパッケージをインストールする

# yum install ruby ruby-devel ruby-ri ruby-rdoc ruby-shadow gcc gcc-c++ automake autoconf make curl dmidecode
# yum install rubygems
# yum install git
# gem install rake
# gem install chef --no-ri --no-rdoc

2. chef-solo 用のユーザーを作成する

# groupadd -g 1000 services
# useradd -g services -u 1001 chefsolo
#chmod 755 /home/chefsolo
# su - chefsolo 

3. Chef リポジトリ雛形を GitHub から拝借

$ cd ~
$ git clone git://github.com/opscode/chef-repo.git
$ cd chef-repo
$ mkdir .chef
$ mkdir ~/tmp

4. chef-solo 実行時の cookbook 等を設定する

$ vim .chef/solo.rb

以下のように記載する。

file_cache_path "/home/chefsolo/tmp/chef-solo"
cookbook_path "/home/chefsolo/chef-repo/cookbooks"

5. JSON で適用するレシピを設定する

$ vim .chef/chef.json

以下のように記載する。

{
  "run_list": [ "recipe[packages_install]" ]
}

7. cookbook を作る

# su - chefsolo
$ cd ~/chef-repo
$ rake new_cookbook COOKBOOK=packages_install。

8. レシピを作成する

$ vim cookbooks/packages_install/recipes/default.rb

以下のように記載する。ruby っぽいな。

%w{tmux httpd php php-mysql}.each do |package_name|
  package package_name do
    action :install
  end
end

今回は以下のパッケージをインストールした。

9. 改めて chef-solo を実行!

sudo chef-solo -c /home/chefsolo/chef-repo/.chef/solo.rb -j /home/chefsolo/chef-repo/.chef/chef.json

次の目標

  • 引き続き chef-solo で各種設定周りを実現してみる
  • chef-server をセットアップしてみる

謝辞(有難うございました)

BGM

  • if / MonkyMajik