From b07ff42db7a14a660ce257352804efc2adf323ea Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Tue, 21 Nov 2017 19:41:13 +0000 Subject: [PATCH] Modernise apache LWRPs --- cookbooks/apache/providers/conf.rb | 79 ------------------------ cookbooks/apache/providers/module.rb | 92 ---------------------------- cookbooks/apache/providers/site.rb | 72 ---------------------- cookbooks/apache/resources/conf.rb | 68 ++++++++++++++++++-- cookbooks/apache/resources/module.rb | 81 ++++++++++++++++++++++-- cookbooks/apache/resources/site.rb | 63 ++++++++++++++++--- 6 files changed, 193 insertions(+), 262 deletions(-) delete mode 100644 cookbooks/apache/providers/conf.rb delete mode 100644 cookbooks/apache/providers/module.rb delete mode 100644 cookbooks/apache/providers/site.rb diff --git a/cookbooks/apache/providers/conf.rb b/cookbooks/apache/providers/conf.rb deleted file mode 100644 index 16759e86f..000000000 --- a/cookbooks/apache/providers/conf.rb +++ /dev/null @@ -1,79 +0,0 @@ -# -# 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 - -use_inline_resources - -action :create do - create_conf -end - -action :enable do - enable_conf -end - -action :disable do - disable_conf -end - -action :delete do - delete_conf -end - -def create_conf - template available_name do - cookbook new_resource.cookbook - source new_resource.template - owner "root" - group "root" - mode 0o644 - variables new_resource.variables - end -end - -def enable_conf - link enabled_name do - to available_name - owner "root" - group "root" - end -end - -def disable_conf - link enabled_name do - action :delete - end -end - -def delete_conf - file available_name do - action :delete - end -end - -def available_name - "/etc/apache2/conf-available/#{new_resource.name}.conf" -end - -def enabled_name - "/etc/apache2/conf-enabled/#{new_resource.name}.conf" -end diff --git a/cookbooks/apache/providers/module.rb b/cookbooks/apache/providers/module.rb deleted file mode 100644 index d3f069b7f..000000000 --- a/cookbooks/apache/providers/module.rb +++ /dev/null @@ -1,92 +0,0 @@ -# -# Cookbook Name:: apache -# Provider:: apache_module -# -# Copyright 2013, 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 - -use_inline_resources - -action :install do - package package_name unless installed? - - if new_resource.conf # ~FC023 - template available_name("conf") do - source new_resource.conf - owner "root" - group "root" - mode 0o644 - variables new_resource.variables - end - end -end - -action :enable do - execute "a2enmod-#{new_resource.name}" do - command "a2enmod #{new_resource.name}" - user "root" - group "root" - not_if { ::File.exist?(enabled_name("load")) } - end - - link enabled_name("load") do - to available_name("load") - owner "root" - group "root" - end - - link enabled_name("conf") do - to available_name("conf") - owner "root" - group "root" - only_if { ::File.exist?(available_name("conf")) } - end -end - -action :disable do - link enabled_name("load") do - action :delete - end - - link enabled_name("conf") do - action :delete - end -end - -action :delete do - package package_name do - action :remove - end -end - -def package_name - new_resource.package || "libapache2-mod-#{new_resource.name}" -end - -def available_name(extension) - "/etc/apache2/mods-available/#{new_resource.name}.#{extension}" -end - -def enabled_name(extension) - "/etc/apache2/mods-enabled/#{new_resource.name}.#{extension}" -end - -def installed? - ::File.exist?(available_name("load")) -end diff --git a/cookbooks/apache/providers/site.rb b/cookbooks/apache/providers/site.rb deleted file mode 100644 index 4deae2782..000000000 --- a/cookbooks/apache/providers/site.rb +++ /dev/null @@ -1,72 +0,0 @@ -# -# Cookbook Name:: apache -# Provider:: apache_site -# -# Copyright 2013, 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 - -use_inline_resources - -action :create do - template available_name do - cookbook new_resource.cookbook - source new_resource.template - owner "root" - group "root" - mode 0o644 - variables new_resource.variables.merge(:name => new_resource.name, :directory => site_directory) - end -end - -action :enable do - link enabled_name do - to available_name - owner "root" - group "root" - end -end - -action :disable do - link enabled_name do - action :delete - end -end - -action :delete do - file available_name do - action :delete - end -end - -def site_directory - new_resource.directory || "/var/www/#{new_resource.name}" -end - -def available_name - "/etc/apache2/sites-available/#{new_resource.name}.conf" -end - -def enabled_name - case new_resource.name - when "default" - "/etc/apache2/sites-enabled/000-default.conf" - else - "/etc/apache2/sites-enabled/#{new_resource.name}.conf" - end -end diff --git a/cookbooks/apache/resources/conf.rb b/cookbooks/apache/resources/conf.rb index a6487c98c..2f6eff5cb 100644 --- a/cookbooks/apache/resources/conf.rb +++ b/cookbooks/apache/resources/conf.rb @@ -17,14 +17,70 @@ # 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 => {} -attribute :reload_apache, :kind_of => [TrueClass, FalseClass], :default => true +property :conf, :kind_of => String, :name_attribute => true +property :cookbook, :kind_of => String +property :template, :kind_of => String, :required => true +property :variables, :kind_of => Hash, :default => {} +property :reload_apache, :kind_of => [TrueClass, FalseClass], :default => true + +action :create do + create_conf +end + +action :enable do + enable_conf +end + +action :disable do + disable_conf +end + +action :delete do + delete_conf +end + +action_class do + def create_conf + declare_resource :template, available_name do + cookbook new_resource.cookbook + source new_resource.template + owner "root" + group "root" + mode 0o644 + variables new_resource.variables + end + end + + def enable_conf + link enabled_name do + to available_name + owner "root" + group "root" + end + end + + def disable_conf + link enabled_name do + action :delete + end + end + + def delete_conf + file available_name do + action :delete + end + end + + def available_name + "/etc/apache2/conf-available/#{new_resource.conf}.conf" + end + + def enabled_name + "/etc/apache2/conf-enabled/#{new_resource.conf}.conf" + end +end def after_created notifies :reload, "service[apache2]" if reload_apache diff --git a/cookbooks/apache/resources/module.rb b/cookbooks/apache/resources/module.rb index cded39a47..7947071e7 100644 --- a/cookbooks/apache/resources/module.rb +++ b/cookbooks/apache/resources/module.rb @@ -17,14 +17,83 @@ # limitations under the License. # -actions :install, :enable, :disable, :remove default_action [:install, :enable] -attribute :name, :kind_of => String, :name_attribute => true -attribute :package, :kind_of => String -attribute :conf, :kind_of => String -attribute :variables, :kind_of => Hash, :default => {} -attribute :restart_apache, :kind_of => [TrueClass, FalseClass], :default => true +property :module, :kind_of => String, :name_attribute => true +property :package, :kind_of => String +property :conf, :kind_of => String +property :variables, :kind_of => Hash, :default => {} +property :restart_apache, :kind_of => [TrueClass, FalseClass], :default => true + +action :install do + package package_name unless installed? + + if new_resource.conf # ~FC023 + template available_name("conf") do + source new_resource.conf + owner "root" + group "root" + mode 0o644 + variables new_resource.variables + end + end +end + +action :enable do + execute "a2enmod-#{new_resource.module}" do + command "a2enmod #{new_resource.module}" + user "root" + group "root" + not_if { ::File.exist?(enabled_name("load")) } + end + + link enabled_name("load") do + to available_name("load") + owner "root" + group "root" + end + + link enabled_name("conf") do + to available_name("conf") + owner "root" + group "root" + only_if { ::File.exist?(available_name("conf")) } + end +end + +action :disable do + link enabled_name("load") do + action :delete + end + + link enabled_name("conf") do + action :delete + end +end + +action :delete do + package package_name do + action :remove + end +end + +action_class do + def package_name + new_resource.package || "libapache2-mod-#{new_resource.module}" + end + + def available_name(extension) + "/etc/apache2/mods-available/#{new_resource.module}.#{extension}" + end + + def enabled_name(extension) + "/etc/apache2/mods-enabled/#{new_resource.module}.#{extension}" + end + + def installed? + ::File.exist?(available_name("load")) + end +end def after_created notifies :restart, "service[apache2]" if restart_apache diff --git a/cookbooks/apache/resources/site.rb b/cookbooks/apache/resources/site.rb index 0e6a2fedf..8aa9c78a1 100644 --- a/cookbooks/apache/resources/site.rb +++ b/cookbooks/apache/resources/site.rb @@ -17,15 +17,64 @@ # limitations under the License. # -actions :create, :enable, :disable, :delete default_action [:create, :enable] -attribute :name, :kind_of => String, :name_attribute => true -attribute :directory, :kind_of => String -attribute :cookbook, :kind_of => String -attribute :template, :kind_of => String, :required => true -attribute :variables, :kind_of => Hash, :default => {} -attribute :reload_apache, :kind_of => [TrueClass, FalseClass], :default => true +property :site, :kind_of => String, :name_attribute => true +property :directory, :kind_of => String +property :cookbook, :kind_of => String +property :template, :kind_of => String, :required => true +property :variables, :kind_of => Hash, :default => {} +property :reload_apache, :kind_of => [TrueClass, FalseClass], :default => true + +action :create do + declare_resource :template, available_name do + cookbook new_resource.cookbook + source new_resource.template + owner "root" + group "root" + mode 0o644 + variables new_resource.variables.merge(:name => new_resource.site, :directory => site_directory) + end +end + +action :enable do + link enabled_name do + to available_name + owner "root" + group "root" + end +end + +action :disable do + link enabled_name do + action :delete + end +end + +action :delete do + file available_name do + action :delete + end +end + +action_class do + def site_directory + new_resource.directory || "/var/www/#{new_resource.site}" + end + + def available_name + "/etc/apache2/sites-available/#{new_resource.site}.conf" + end + + def enabled_name + case new_resource.site + when "default" + "/etc/apache2/sites-enabled/000-default.conf" + else + "/etc/apache2/sites-enabled/#{new_resource.site}.conf" + end + end +end def after_created notifies :reload, "service[apache2]" if reload_apache -- 2.43.2