Vendor the external cookbooks
Knife-Zero doesn't include Berkshelf support, so vendoring everything in the repo is convenient again
This commit is contained in:
219
cookbooks/apache2/recipes/default.rb
Normal file
219
cookbooks/apache2/recipes/default.rb
Normal file
@@ -0,0 +1,219 @@
|
||||
#
|
||||
# Cookbook:: apache2
|
||||
# Recipe:: default
|
||||
#
|
||||
# Copyright:: 2008-2013, Chef Software, Inc.
|
||||
# Copyright:: 2014-2015, Alexander van Zoest
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
package 'apache2' do # ~FC009 only available in apt_package. See #388
|
||||
package_name node['apache']['package']
|
||||
default_release node['apache']['default_release'] unless node['apache']['default_release'].nil?
|
||||
end
|
||||
|
||||
%w(sites-available sites-enabled mods-available mods-enabled conf-available conf-enabled).each do |dir|
|
||||
directory "#{node['apache']['dir']}/#{dir}" do
|
||||
mode '0755'
|
||||
owner 'root'
|
||||
group node['apache']['root_group']
|
||||
end
|
||||
end
|
||||
|
||||
%w(default default.conf 000-default 000-default.conf).each do |site|
|
||||
link "#{node['apache']['dir']}/sites-enabled/#{site}" do
|
||||
action :delete
|
||||
not_if { site == "#{node['apache']['default_site_name']}.conf" && node['apache']['default_site_enabled'] }
|
||||
end
|
||||
|
||||
file "#{node['apache']['dir']}/sites-available/#{site}" do
|
||||
action :delete
|
||||
backup false
|
||||
not_if { site == "#{node['apache']['default_site_name']}.conf" && node['apache']['default_site_enabled'] }
|
||||
end
|
||||
end
|
||||
|
||||
directory node['apache']['log_dir'] do
|
||||
mode '0755'
|
||||
recursive true
|
||||
end
|
||||
|
||||
# perl is needed for the a2* scripts
|
||||
package node['apache']['perl_pkg']
|
||||
|
||||
package 'perl-Getopt-Long-Descriptive' if platform?('fedora')
|
||||
|
||||
%w(a2ensite a2dissite a2enmod a2dismod a2enconf a2disconf).each do |modscript|
|
||||
link "/usr/sbin/#{modscript}" do
|
||||
action :delete
|
||||
only_if { ::File.symlink?("/usr/sbin/#{modscript}") }
|
||||
end
|
||||
|
||||
template "/usr/sbin/#{modscript}" do
|
||||
source "#{modscript}.erb"
|
||||
mode '0700'
|
||||
owner 'root'
|
||||
group node['apache']['root_group']
|
||||
action :create
|
||||
end
|
||||
end
|
||||
|
||||
unless platform_family?('debian')
|
||||
cookbook_file '/usr/local/bin/apache2_module_conf_generate.pl' do
|
||||
source 'apache2_module_conf_generate.pl'
|
||||
mode '0755'
|
||||
owner 'root'
|
||||
group node['apache']['root_group']
|
||||
end
|
||||
|
||||
execute 'generate-module-list' do
|
||||
command "/usr/local/bin/apache2_module_conf_generate.pl #{node['apache']['lib_dir']} #{node['apache']['dir']}/mods-available"
|
||||
action :nothing
|
||||
end
|
||||
end
|
||||
|
||||
if platform_family?('freebsd')
|
||||
|
||||
directory "#{node['apache']['dir']}/Includes" do
|
||||
action :delete
|
||||
recursive true
|
||||
end
|
||||
|
||||
directory "#{node['apache']['dir']}/extra" do
|
||||
action :delete
|
||||
recursive true
|
||||
end
|
||||
end
|
||||
|
||||
if platform_family?('suse')
|
||||
|
||||
directory "#{node['apache']['dir']}/vhosts.d" do
|
||||
action :delete
|
||||
recursive true
|
||||
end
|
||||
|
||||
%w(charset.conv default-vhost.conf default-server.conf default-vhost-ssl.conf errors.conf listen.conf mime.types mod_autoindex-defaults.conf mod_info.conf mod_log_config.conf mod_status.conf mod_userdir.conf mod_usertrack.conf uid.conf).each do |file|
|
||||
file "#{node['apache']['dir']}/#{file}" do
|
||||
action :delete
|
||||
backup false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
%W(
|
||||
#{node['apache']['dir']}/ssl
|
||||
#{node['apache']['cache_dir']}
|
||||
).each do |path|
|
||||
directory path do
|
||||
mode '0755'
|
||||
owner 'root'
|
||||
group node['apache']['root_group']
|
||||
end
|
||||
end
|
||||
|
||||
directory node['apache']['lock_dir'] do
|
||||
mode '0755'
|
||||
if node['platform_family'] == 'debian'
|
||||
owner node['apache']['user']
|
||||
else
|
||||
owner 'root'
|
||||
end
|
||||
group node['apache']['root_group']
|
||||
end
|
||||
|
||||
# Set the preferred execution binary - prefork or worker
|
||||
template "/etc/sysconfig/#{node['apache']['package']}" do
|
||||
source 'etc-sysconfig-httpd.erb'
|
||||
owner 'root'
|
||||
group node['apache']['root_group']
|
||||
mode '0644'
|
||||
notifies :restart, 'service[apache2]', :delayed
|
||||
only_if { platform_family?('rhel', 'amazon', 'fedora', 'suse') }
|
||||
end
|
||||
|
||||
template "#{node['apache']['dir']}/envvars" do
|
||||
source 'envvars.erb'
|
||||
owner 'root'
|
||||
group node['apache']['root_group']
|
||||
mode '0644'
|
||||
notifies :reload, 'service[apache2]', :delayed
|
||||
only_if { platform_family?('debian') }
|
||||
end
|
||||
|
||||
template 'apache2.conf' do
|
||||
if platform_family?('rhel', 'amazon', 'fedora', 'arch', 'freebsd')
|
||||
path "#{node['apache']['conf_dir']}/httpd.conf"
|
||||
elsif platform_family?('debian')
|
||||
path "#{node['apache']['conf_dir']}/apache2.conf"
|
||||
elsif platform_family?('suse')
|
||||
path "#{node['apache']['conf_dir']}/httpd.conf"
|
||||
end
|
||||
action :create
|
||||
source 'apache2.conf.erb'
|
||||
owner 'root'
|
||||
group node['apache']['root_group']
|
||||
mode '0644'
|
||||
notifies :reload, 'service[apache2]', :delayed
|
||||
end
|
||||
|
||||
%w(security charset).each do |conf|
|
||||
apache_conf conf do
|
||||
enable true
|
||||
end
|
||||
end
|
||||
|
||||
apache_conf 'ports' do
|
||||
enable false
|
||||
conf_path node['apache']['dir']
|
||||
end
|
||||
|
||||
if node['apache']['version'] == '2.4'
|
||||
if node['apache']['mpm_support'].include?(node['apache']['mpm'])
|
||||
include_recipe "apache2::mpm_#{node['apache']['mpm']}"
|
||||
else
|
||||
Chef::Log.warn("apache2: #{node['apache']['mpm']} module is not supported and must be handled separately!")
|
||||
end
|
||||
end
|
||||
|
||||
node['apache']['default_modules'].each do |mod|
|
||||
module_recipe_name = mod =~ /^mod_/ ? mod : "mod_#{mod}"
|
||||
include_recipe "apache2::#{module_recipe_name}"
|
||||
end
|
||||
|
||||
if node['apache']['default_site_enabled']
|
||||
web_app node['apache']['default_site_name'] do
|
||||
template 'default-site.conf.erb'
|
||||
enable node['apache']['default_site_enabled']
|
||||
end
|
||||
end
|
||||
|
||||
apache_service_name = node['apache']['service_name']
|
||||
|
||||
service 'apache2' do
|
||||
service_name apache_service_name
|
||||
case node['platform_family']
|
||||
when 'rhel'
|
||||
if node['platform_version'].to_f < 7.0 && node['apache']['version'] != '2.4'
|
||||
restart_command "/sbin/service #{apache_service_name} restart && sleep 1"
|
||||
reload_command "/sbin/service #{apache_service_name} graceful && sleep 1"
|
||||
end
|
||||
when 'debian'
|
||||
provider Chef::Provider::Service::Debian
|
||||
when 'arch'
|
||||
service_name apache_service_name
|
||||
end
|
||||
supports [:start, :restart, :reload, :status]
|
||||
action [:enable, :start]
|
||||
only_if "#{node['apache']['binary']} -t", environment: { 'APACHE_LOG_DIR' => node['apache']['log_dir'] }, timeout: 10
|
||||
end
|
||||
Reference in New Issue
Block a user