From: Tom Hughes Date: Fri, 8 Jan 2016 22:34:05 +0000 (+0000) Subject: Use a systemd unit for chef-client on Ubuntu 15.10 X-Git-Url: https://git.openstreetmap.org/chef.git/commitdiff_plain/9602537180be9f8fc17fbd6900b7df53cf2e85c6 Use a systemd unit for chef-client on Ubuntu 15.10 --- diff --git a/cookbooks/chef/recipes/default.rb b/cookbooks/chef/recipes/default.rb index f601031ab..2ab55ac60 100644 --- a/cookbooks/chef/recipes/default.rb +++ b/cookbooks/chef/recipes/default.rb @@ -52,13 +52,6 @@ dpkg_package "chef" do version node[:chef][:client][:version] end -template "/etc/init/chef-client.conf" do - source "chef-client.conf.erb" - owner "root" - group "root" - mode 0644 -end - directory "/etc/chef" do owner "root" group "root" @@ -117,12 +110,44 @@ directory "/var/log/chef" do mode 0755 end -service "chef-client" do - provider Chef::Provider::Service::Upstart - action [:enable, :start] - supports :status => true, :restart => true, :reload => true - subscribes :restart, "dpkg_package[chef]" - subscribes :restart, "template[/etc/init/chef-client.conf]" - subscribes :restart, "template[/etc/chef/client.rb]" - subscribes :restart, "template[/etc/chef/report.rb]" +if node[:lsb][:release].to_f >= 15.10 + execute "systemctl-daemon-reload" do + action :nothing + command "systemctl daemon-reload" + end + + template "/etc/systemd/system/chef-client.service" do + source "chef-client.service.erb" + owner "root" + group "root" + mode 0644 + notifies :run, "execute[systemctl-daemon-reload]" + end + + service "chef-client" do + provider Chef::Provider::Service::Systemd + action [:enable, :start] + supports :status => true, :restart => true, :reload => true + subscribes :restart, "dpkg_package[chef]" + subscribes :restart, "template[/etc/systemd/system/chef-client.service]" + subscribes :restart, "template[/etc/chef/client.rb]" + subscribes :restart, "template[/etc/chef/report.rb]" + end +else + template "/etc/init/chef-client.conf" do + source "chef-client.conf.erb" + owner "root" + group "root" + mode 0644 + end + + service "chef-client" do + provider Chef::Provider::Service::Upstart + action [:enable, :start] + supports :status => true, :restart => true, :reload => true + subscribes :restart, "dpkg_package[chef]" + subscribes :restart, "template[/etc/init/chef-client.conf]" + subscribes :restart, "template[/etc/chef/client.rb]" + subscribes :restart, "template[/etc/chef/report.rb]" + end end diff --git a/cookbooks/chef/templates/default/chef-client.service.erb b/cookbooks/chef/templates/default/chef-client.service.erb new file mode 100644 index 000000000..0b16414ff --- /dev/null +++ b/cookbooks/chef/templates/default/chef-client.service.erb @@ -0,0 +1,10 @@ +[Unit] +Description=Chef Client +After=network.target + +[Service] +ExecStart=/usr/bin/chef-client -i 1800 -s 20 +Restart=on-failure + +[Install] +WantedBy=multi-user.target