Ниже мой шаблон для nginx.
Я столкнулся с проблемой 22. Мне нужно установить шаблон init.d. Итак, у меня есть шаблон nginx erb, который я помещаю в /etc/init.d/nginx.
Я даже пытался поместить код поверх рецепта. Рецепт зависит от файла init.d, но не выполняется, пока не станет слишком поздно, и в результате я получаю эту ошибку:
STDERR: update-rc.d: /etc/init.d/nginx: file does not exist
---- End output of "bash" "/tmp/chef-script20120330-26326-3ologp-0" ----
Ran "bash" "/tmp/chef-script20120330-26326-3ologp-0" returned 1
[Fri, 30 Mar 2012 06:22:15 +0000] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
[Fri, 30 Mar 2012 06:22:15 +0000] ERROR: Sleeping for 60 seconds before trying again
При следующем запуске клиента chef все работает, потому что тогда был создан шаблон.
Как выполнить шаблон непосредственно перед тем, как зарегистрировать ресурс службы для nginx? Быстрое решение состоит в том, что я создаю рецепт, который будет запускать шаблон перед nginx, чтобы установить шаблон, но это кажется довольно абсурдным.
Этот шаблон должен быть установлен до регистрации службы.
template "nginx" do
path "/etc/init.d/nginx"
source "nginx.erb"
owner "root"
group "root"
mode "0755"
end
Затем зарегистрируйте сервер.
service "nginx" do
supports :restart => true, :start => true, :stop => true, :reload => true
action [ :enable, :start]
end
####################################
#Install Nginx
####################################
#http://wiki.nginx.org/HttpLuaModule#Installation
version = node[:nginx][:version]
package "libpcre3" do
action :install
end
package "libpcre3-dev" do
action :install
end
package "libpcre++-dev" do
action :install
end
package "openssl" do
action :install
end
template "nginx" do
path "/etc/init.d/nginx"
source "nginx.erb"
owner "root"
group "root"
mode "0755"
end
#mkdir /var/log/nginx
directory "/var/log/nginx" do
owner "root"
group "root"
mode "0755"
action :create
#not_if "test -f /etc/nginx/lock"
end
remote_file "/tmp/nginx-#{version}.tar.gz" do
source "http://nginx.org/download/nginx-#{version}.tar.gz"
checksum node[:nginx][:checksum]
action :create_if_missing
notifies :run, "bash[install_nginx]", :immediately
end
bash "install_nginx" do
user "root"
cwd "/tmp"
code <<-EOH
tar -xvf nginx-#{version}.tar.gz
cd nginx-#{version}
./configure --with-http_stub_status_module
make -j2
make install
ln -s /usr/local/nginx/conf/ /etc/nginx
/usr/sbin/update-rc.d -f nginx defaults
EOH
action :nothing
creates "/usr/sbin/nginx"
notifies :restart, "service[nginx]"
#not_if "test -f /etc/redis/lock"
end
service "nginx" do
supports :restart => true, :start => true, :stop => true, :reload => true
action [ :enable, :start]
end
#ln -s /usr/local/nginx/conf/ /etc/nginx
#link "/usr/local/nginx/conf/" do
# to "/etc/nginx"
# link_type :hard
#end
link "/usr/local/nginx/logs/access.log" do
to "/var/log/nginx/access.log"
end
link "/usr/local/nginx/logs/error.log" do
to "/var/log/nginx/error.log"
end
file "/etc/nginx/lock" do
owner "root"
group "root"
mode "0755"
action :create_if_missing
end
template "nginx.conf" do
path "/etc/nginx/nginx.conf"
source "nginx.conf.erb"
owner "root"
group "root"
mode "0644"
#notifies :reload, "service[nginx]"
notifies :reload, resources(:service => "nginx"), :immediately
end
Спасибо