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