のぶLab.

流しのソフトウェアエンジニアの雑記帳. Android, Scala, Clojure, Ruby on Railsなど

cookbookを自作する[Vagrant][Chef]

サードパーティのcookbookではなく自作したcookbookを使って、nginxの設定ファイルを任意に設定してみます。

0.自作cookbookを格納するディレクトリの作成

mkdir site-cookbooks

1.自作cookbookのためのテンプレートを作成

cd site-cookbooks
berks cookbook nginx

2.default.rbの編集

#site-cookbook/nginx/recipes/default.rb
 
package "nginx" do
	action :install
end
 
service "nginx" do
	supports :status => true, :restart => true, :reload => true
	action [:enable, :start]
end
 
template "nginx.conf" do
	path "/etc/nginx/nginx.conf"
	source "nginx.conf.erb"
	owner "root"
	group "root"
	mode 0644
 
	notifies :reload, "service[nginx]"
end

3.nginxの設定ファイル作成

手動でnginx.conf.erbを作成

touch nginx-app/templates/default/nginx.conf.erb

編集します。

#site-cookbook/nginx/templates/default/nginx.conf.erb
 
user nginx;
 
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
 
events {
	worker_connections 1024;
}
 
http {
	include /etc/nginx/mim.types;
	default_type application/octet-stream;
 
	server {
		listen <%= node["nginx"]["port"] %>;
		server_name _;
		location / {
			root /usr/share/nginx/html;
			index index.html index.htm;
		}
	}
}

4.Berksfileの編集

#repo/Berkshelf
cookbook 'nginx', '~> 0.1.0', path: 'site-cookbooks/nginx'

5.Vagrantfileの編集

#repo/Vagrantfile
    ...
    
    chef.add_recipe "nginx"
 
    ...
    
    chef.json = {
      
      ...,
      "nginx" => {
        "port" => 3000,
      }
    }
    ...

6.起動

vagrant up