From 00f120fc8272cb0780cafb778901de96190ad17e Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sun, 13 Apr 2014 21:35:06 +0100 Subject: [PATCH 1/1] Add support for upgrading the chef server --- cookbooks/chef/attributes/default.rb | 3 ++ cookbooks/chef/recipes/server.rb | 80 ++++++++++++++++++++-------- 2 files changed, 61 insertions(+), 22 deletions(-) diff --git a/cookbooks/chef/attributes/default.rb b/cookbooks/chef/attributes/default.rb index 63fc2cf37..c359c85f5 100644 --- a/cookbooks/chef/attributes/default.rb +++ b/cookbooks/chef/attributes/default.rb @@ -1,6 +1,9 @@ # Add the opscode APT source for chef default[:apt][:sources] = node[:apt][:sources] | [ "opscode" ] +# Set the default server version +default[:chef][:server][:version] = "11.0.12-1" + # Set the default client version default[:chef][:client][:version] = "11.12.2-1" diff --git a/cookbooks/chef/recipes/server.rb b/cookbooks/chef/recipes/server.rb index fc0a6ac6c..51df04baa 100644 --- a/cookbooks/chef/recipes/server.rb +++ b/cookbooks/chef/recipes/server.rb @@ -19,20 +19,52 @@ include_recipe "apache::ssl" -service "chef-server-runsvdir" do - provider Chef::Provider::Service::Upstart - action [ :enable, :start ] - supports :status => true, :restart => true, :reload => true +chef_platform = case node[:platform_version] + when "12.10" then "12.04" + else node[:platform_version] + end + +chef_package = "chef-server_#{node[:chef][:server][:version]}.ubuntu.#{chef_platform}_amd64.deb" + +directory "/var/cache/chef" do + owner "root" + group "root" + mode 0755 end -apache_module "alias" -apache_module "proxy_http" +Dir.glob("/var/cache/chef/chef-server_*.deb").each do |deb| + if deb != "/var/cache/chef/#{chef_package}" + file deb do + action :delete + backup false + end + end +end -execute "chef-server-reconfigure" do - action :nothing - command "chef-server-ctl reconfigure" - user "root" +remote_file "/var/cache/chef/#{chef_package}" do + source "https://opscode-omnibus-packages.s3.amazonaws.com/ubuntu/#{chef_platform}/x86_64/#{chef_package}" + owner "root" group "root" + mode 0644 + backup false +end + +dpkg_package "chef-erver" do + source "/var/cache/chef/#{chef_package}" + version node[:chef][:server][:version] + notifies :run, "execute[chef-server-reconfigure]" +end + +ruby_block "/opt/chef-server/embedded/service/chef-server-webui/app/controllers/status_controller.rb" do + block do + rc = Chef::Util::FileEdit.new("/opt/chef-server/embedded/service/chef-server-webui/app/controllers/status_controller.rb") + rc.search_file_delete(/&rows=20/) + rc.write_file + + if rc.file_edited? + resources(:execute => "chef-server-reconfigure").run_action(:run) + end + end end template "/etc/chef-server/chef-server.rb" do @@ -43,6 +75,22 @@ template "/etc/chef-server/chef-server.rb" do notifies :run, "execute[chef-server-reconfigure]" end +execute "chef-server-reconfigure" do + action :nothing + command "chef-server-ctl reconfigure" + user "root" + group "root" +end + +service "chef-server-runsvdir" do + provider Chef::Provider::Service::Upstart + action [ :enable, :start ] + supports :status => true, :restart => true, :reload => true +end + +apache_module "alias" +apache_module "proxy_http" + apache_site "chef.openstreetmap.org" do template "apache.erb" end @@ -53,15 +101,3 @@ template "/etc/cron.daily/chef-server-backup" do group "root" mode 0755 end - -ruby_block "/opt/chef-server/embedded/service/chef-server-webui/app/controllers/status_controller.rb" do - block do - rc = Chef::Util::FileEdit.new("/opt/chef-server/embedded/service/chef-server-webui/app/controllers/status_controller.rb") - rc.search_file_delete(/&rows=20/) - rc.write_file - - if rc.file_edited? - resources(:execute => "chef-server-reconfigure").run_action(:run) - end - end -end -- 2.43.2