teketeke_55の日記

技術メモとか

fedora 16 へchefをinstall その3

[fedora][chef]

公式サイトのrecipeを使ってapacheインストールを試す。

githubからrecipe集をインストール

cd /var/chef/cookbooks
git clone https://github.com/opscode/cookbooks

そのままUPLOADしても読み込んでくれなかったので、

mv cookbooks/* .

# knife cookbook upload -a
Uploading 7-zip                         [1.0.0]
Uploading COOKBOOK                      [0.0.1]
Uploading activemq                      [1.0.2]
Uploading ant                           [0.10.1]
Uploading apache2                       [1.0.4]
Uploading apparmor                      [0.9.0]
省略

web-uiで確認してみる
正常にUPLOADできたようだ。

f:id:teketeke_55:20111212205801p:image

clientへapacheをインストールしてみる

apache用jsonファイルを作成
# vim chef-apache.json

{
    "run_list": [
       "recipe[apache2]"
    ]
}
chef-client コマンドを実行する
# chef-client -j /root/.chef/chef-apache.json
[Mon, 12 Dec 2011 20:24:23 +0900] INFO: *** Chef 0.10.4 ***
[Mon, 12 Dec 2011 20:24:25 +0900] INFO: Setting the run_list to ["recipe[apache2]"] from JSON
[Mon, 12 Dec 2011 20:24:25 +0900] INFO: Run List is [recipe[apache2]]
[Mon, 12 Dec 2011 20:24:25 +0900] INFO: Run List expands to [apache2]
[Mon, 12 Dec 2011 20:24:25 +0900] INFO: Starting Chef Run for SL6
[Mon, 12 Dec 2011 20:24:25 +0900] INFO: Loading cookbooks [apache2]

省略

[Mon, 12 Dec 2011 20:24:45 +0900] INFO: Processing service[apache2] action restart (apache2::default line 32)
[Mon, 12 Dec 2011 20:24:47 +0900] INFO: service[apache2] restarted
[Mon, 12 Dec 2011 20:24:47 +0900] INFO: Chef Run complete in 22.739 seconds
[Mon, 12 Dec 2011 20:24:47 +0900] INFO: Running report handlers
[Mon, 12 Dec 2011 20:24:47 +0900] INFO: Report handlers complete
確認
# rpm -qa |grep httpd
httpd-tools-2.2.15-9.sl6.3.x86_64
httpd-2.2.15-9.sl6.3.x86_64

インストールされている。

  • http.confを見てみる
# cat /etc/httpd/conf/httpd.conf

#
# Generated by Chef
#
# Based on the Ubuntu apache2.conf

ServerRoot "/etc/httpd"
省略

chefのrecipiから生成されているようだ。
どこが反映されているか確認してみる

  • /var/chef/cookbooks/apache2/templates/default/apache2.conf.erb

※該当箇所抜粋

# Generated by Chef
#
# Based on the Ubuntu apache2.conf

ServerRoot "<%= node[:apache][:dir] %>"
  • /var/chef/cookbooks/apache2/recipes/default.rb

※該当箇所抜粋

template "apache2.conf" do
  case node[:platform]
  when "redhat", "centos", "scientific", "fedora", "arch"
    path "#{node[:apache][:dir]}/conf/httpd.conf"
  when "debian","ubuntu"
    path "#{node[:apache][:dir]}/apache2.conf"
  end
  source "apache2.conf.erb"
  owner "root"
  group "root"
  mode 0644
  notifies :restart, resources(:service => "apache2")
end

その他めも

公式のレポジトリでは細かな設定ができるように構成されているが、
単純にパッケージのインストールのみしたい場合は以下の様にするだけ。

# vim testcookbook/recipes/default.rb
yum_package "MySQL-server" do
end

yum_packageを指定するとyumを使用してインストールを試みてくれる。
あとは同じように上記recipiを読み込むjsonファイルを作成してchef-clientを実行する
レポジトリからではなく直接rpmファイルを指定したい場合は以下の様にすればよい

package "[filename]" do
  action :install
  source "[filename].rpm"
  provider Chef::Provider::Package::Rpm
end

参照:http://wiki.opscode.com/display/chef/Resources