61 lines
1.5 KiB
Ruby
61 lines
1.5 KiB
Ruby
require 'puppet/provider/a2mod'
|
|
|
|
Puppet::Type.type(:a2mod).provide(:redhat, :parent => Puppet::Provider::A2mod) do
|
|
desc "Manage Apache 2 modules on RedHat family OSs"
|
|
|
|
commands :apachectl => "apachectl"
|
|
|
|
confine :osfamily => :redhat
|
|
defaultfor :osfamily => :redhat
|
|
|
|
require 'pathname'
|
|
|
|
# modpath: Path to default apache modules directory /etc/httpd/mod.d
|
|
# modfile: Path to module load configuration file; Default: resides under modpath directory
|
|
# libfile: Path to actual apache module library. Added in modfile LoadModule
|
|
|
|
attr_accessor :modfile, :libfile
|
|
class << self
|
|
attr_accessor :modpath
|
|
def preinit
|
|
@modpath = "/etc/httpd/mod.d"
|
|
end
|
|
end
|
|
|
|
self.preinit
|
|
|
|
def create
|
|
File.open(modfile,'w') do |f|
|
|
f.puts "LoadModule #{resource[:identifier]} #{libfile}"
|
|
end
|
|
end
|
|
|
|
def destroy
|
|
File.delete(modfile)
|
|
end
|
|
|
|
def self.instances
|
|
modules = apachectl("-M").lines.collect { |line|
|
|
m = line.match(/(\w+)_module \(shared\)$/)
|
|
m[1] if m
|
|
}.compact
|
|
|
|
modules.map do |mod|
|
|
new(
|
|
:name => mod,
|
|
:ensure => :present,
|
|
:provider => :redhat
|
|
)
|
|
end
|
|
end
|
|
|
|
def modfile
|
|
modfile ||= "#{self.class.modpath}/#{resource[:name]}.load"
|
|
end
|
|
|
|
# Set libfile path: If absolute path is passed, then maintain it. Else, make it default from 'modules' dir.
|
|
def libfile
|
|
libfile = Pathname.new(resource[:lib]).absolute? ? resource[:lib] : "modules/#{resource[:lib]}"
|
|
end
|
|
end
|