Chefのレシピを書く

Chefのレシピを書く練習を始めた。
今回はどこにもあるかもしれないがApacheを入れるもの
まず、Berkshelfを使って雛形を作成する


$ cd site-cookbooks
$ berks cookbook httpd

次に出来上がったファイルを編集する
まずは、site-cookbooks/httpd/recipes/default.rbを編集する。

  1 #
  2 # Cookbook Name:: httpd
  3 # Recipe:: default
  4 #
  5 # Copyright (C) 2013 YOUR_NAME
  6 #
  7 # All rights reserved - Do Not Redistribute
  8 #
  9 #execute "yum-get update" do
 10 #   command "yum update"
 11 #end
 12 package "httpd" do
 13   action :install
 14 end
 15 #bash "rewrite" do
 16 #  code <<-EOC
 17 #      sudo a2enmod rewrite
 18 #  EOC
 19 #end
 20 #service "apache2" do
 21 #  supports :status => true, :restart => true, :reload => true
 22 #  action [:enable, :start]
 23 #end

続いてBerksfileを編集する

  1 site :opscode
  2 cookbook "hello" , path:  "site-cookbooks/hello"
  3 cookbook "java"
  4 cookbook "mysql"
  5 cookbook "yum"
  6 cookbook "git"
  7 cookbook "httpd", path: "site-cookbooks/httpd"

ここでは、Javamysqlyumのアップデートやgitのインストールもしています。
Vagrantfileを編集して終わりです。

・・・途中省略・・・
 99    config.vm.provision :chef_solo do |chef|
100 #     chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
101 #     chef.validation_key_path = "ORGNAME-validator.pem"
102       chef.run_list = [
103           "hello",
104           "yum::epel",
105           "mysql::client",
106           "mysql::server",
107           "recipe[java]",
108           "httpd"
109           ]
110       chef.json = {
111         mysql: {
112           server_root_password: "hoge",
113           server_repl_password: "iloverandompasswordsbutthiswilldo",
114           server_debian_password: "iloverandompasswordsbutthiswilldo",
115           bind_address: "127.0.0.1"
116         }
117       }
118    end
・・・途中省略・・・

以上です。
site-cookbooks/httpd/recipes/default.rbのリソースの書き方などは、ここを参考にするといい。
以上になります。

個人的にrecipeを増やしていこうと思っています。