chefを使ってみる

Posted on 2013/12/15 Tag : chef

環境の下準備

Macに入っているRubyのバージョンがberkshelfをインストールする際に古いと怒られる。
その辺までのRbenvのインストールなどは

AWS EC2サーバに対するknife solo実行環境構築手順 on Mac OS Xを一から整理してみる | Developers.IO
http://dev.classmethod.jp/cloud/knife-solo-env-prepare-memo/

を参考にした。

Vagrant

ssh出来るようにする

vagrant ssh-config --host hostname >> ~/.ssh/config

cpanmのインストールでこけるときは

yum -y install perl-core

あたりを試してみる

cookbookを使ってみる

cookbook色々

Opscode Community
http://community.opscode.com/cookbooks/

hjfuji/mtos-cookbook
https://github.com/hjfuji/mtos-cookbook

ChefでApache、PHP、MySQLをインストール

Vagrantの使い方 - Qiita [キータ]
http://qiita.com/skinoshita/items/57ac059ff8b1008f5e1d

test_vagrant5 でSSHできる様にする

$ vagrant ssh-config --host test_vagrant5 >> ~/.ssh/config

作業環境

$ cd ~/test_vagrant/
$ knife solo init chef-repo && cd chef-repo

-repo
Creating kitchen...
Creating knife.rb in kitchen...
Creating cupboards...
Setting up Berkshelf...

test_vagrant5 で操作出来るようにする

$ knife solo prepare test_vagrant5

色々ずらずらとインストールされる。

cookbookを作る

$ knife cookbook create lamp -o site-cookbooks

cookbook を修正

$ vi site-cookbooks/lamp/recipes/default.rb

以下を追記

# stop iptables
service "iptables" do
  action [:stop, :disable]
end

# install apache
%w{httpd httpd-devel}.each do |pkg|
  package pkg do
    action :install
  end
end

# install php
%w{php php-common php-devel php-mbstring php-xml php-pear php-mysql}.each do |pkg|
  package pkg do
    action :install
  end
end

# install mysql
%w{mysql-server mysql-devel}.each do |pkg|
  package pkg do
    action :install
  end
end

# service configuration

service "httpd" do
  supports :status => true, :restart => true, :reload => true
  action [:enable, :start]
end

service "mysqld" do
  action [:enable, :start]
end

json修正

$ vi nodes/test_vagrant5.json

以下の様に修正。

{
    "run_list":[
        "lamp"
    ]
}

vagrantファイルの修正

config.vm.provision :chef_solo do |chef|
  chef.cookbooks_path = "chef-repo/site-cookbooks"
  chef.roles_path = "chef-repo/roles"
  chef.data_bags_path = "chef-repo/data_bags"
  chef.add_recipe = "lamp"

  # You may also specify custom JSON attributes:
  chef.json = {}
end

仮想マシンを再起動

$ vagrant provision
$ knife solo prepare test_vagrant5

みたいなコマンドうつけど、 test_vagrant5 のところは、

$ vagrant ssh-config --host test_vagrant5 >> ~/.ssh/config

で追加したホストだとおもうんだけど、ここの名前が違うとかはとりあえず意識しなくてもいいのかな??
できあがった作業フォルダ内の Vagrantfile と cookbook だけを共有しておくとかでいいのか。コピペして立ち上がったみたいだし。

参考リンク