From a615c8af6b389f613acf1c80a7b56da48d780cc0 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Tue, 3 Jun 2014 08:57:17 +0100 Subject: [PATCH 1/1] Add support for managing apache configuration fragments --- cookbooks/apache/providers/conf.rb | 112 +++++++++++++++++++++++++++++ cookbooks/apache/resources/conf.rb | 26 +++++++ 2 files changed, 138 insertions(+) create mode 100644 cookbooks/apache/providers/conf.rb create mode 100644 cookbooks/apache/resources/conf.rb diff --git a/cookbooks/apache/providers/conf.rb b/cookbooks/apache/providers/conf.rb new file mode 100644 index 000000000..beef75ea5 --- /dev/null +++ b/cookbooks/apache/providers/conf.rb @@ -0,0 +1,112 @@ +# +# Cookbook Name:: apache +# Provider:: apache_conf +# +# Copyright 2014, OpenStreetMap Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +def whyrun_supported? + true +end + +action :create do + if node[:lsb][:release].to_f >= 14.04 + create_conf + end +end + +action :enable do + if node[:lsb][:release].to_f >= 14.04 + enable_conf + else + create_conf + end +end + +action :disable do + if node[:lsb][:release].to_f >= 14.04 + disable_conf + else + delete_conf + end +end + +action :delete do + if node[:lsb][:release].to_f >= 14.04 + delete_conf + end +end + +def create_conf + t = template available_name do + cookbook new_resource.cookbook + source new_resource.template + owner "root" + group "root" + mode 0644 + variables new_resource.variables + notifies :reload, "service[apache2]" if enabled? or available_name == enabled_name + end + + new_resource.updated_by_last_action(t.updated_by_last_action?) +end + +def enable_conf + l = link enabled_name do + to available_name + owner "root" + group "root" + notifies :reload, "service[apache2]" + end + + new_resource.updated_by_last_action(l.updated_by_last_action?) +end + +def disable_conf + l = link enabled_name do + action :delete + notifies :reload, "service[apache2]" + end + + new_resource.updated_by_last_action(l.updated_by_last_action?) +end + +def delete_conf + f = file available_name do + action :delete + end + + new_resource.updated_by_last_action(f.updated_by_last_action?) +end + +def available_name + if node[:lsb][:release].to_f >= 14.04 + "/etc/apache2/conf-available/#{new_resource.name}" + else + "/etc/apache2/conf.d/#{new_resource.name}" + end +end + +def enabled_name + if node[:lsb][:release].to_f >= 14.04 + "/etc/apache2/conf-enabled/#{new_resource.name}" + else + "/etc/apache2/conf.d/#{new_resource.name}" + end +end + +def enabled? + ::File.exists?(enabled_name) +end diff --git a/cookbooks/apache/resources/conf.rb b/cookbooks/apache/resources/conf.rb new file mode 100644 index 000000000..e17d25bbb --- /dev/null +++ b/cookbooks/apache/resources/conf.rb @@ -0,0 +1,26 @@ +# +# Cookbook Name:: apache +# Resource:: apache_conf +# +# Copyright 2014, OpenStreetMap Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +actions :create, :enable, :disable, :delete +default_action [:create, :enable] + +attribute :name, :kind_of => String, :name_attribute => true +attribute :cookbook, :kind_of => String +attribute :template, :kind_of => String, :required => true +attribute :variables, :kind_of => Hash, :default => {} -- 2.43.2