Puppet module for configuring the squid caching service.
The set up a simple squid server with a cache to forward http port 80 requests.
class{'::squid':}
squid::acl{'Safe_ports':
type => port,
entries => ['80'],
}
squid::http_access{'Safe_ports':
action => allow,
}
squid::http_access{'!Safe_ports':
action => deny,
}
Parameters to the squid class almost map 1 to 1 to squid.conf parameters themselves.
ensure_service
The ensure value of the squid service, defaults torunning
.enable_service
The enable value of the squid service, defaults totrue
.config
Location of squid.conf file, defaults to/etc/squid/squid.conf
.cache_mem
defaults to256 MB
. cache_mem docs.memory_cache_shared
defaults to undef. memory_cache_shared docs.maximum_object_size_in_memory
defaults to512 KB
. maximum_object_size_in_memory docsaccess_log
defaults todaemon:/var/logs/squid/access.log squid
. access_log docscoredump_dir
defaults to undef. coredump_dir docs.max_filedescriptors
defaults to undef. max_filedescriptors docs.workers
defaults to undef. workers docs.acls
defaults to undef. If you pass in a hash of acl entries, they will be defined automatically. acl entries.http_access
defaults to undef. If you pass in a hash of http_access entries, they will be defined automatically. http_access entries.http_ports
defaults to undef. If you pass in a hash of http_port entries, they will be defined automatically. http_port entries.snmp_ports
defaults to undef. If you pass in a hash of snmp_port entries, they will be defined automatically. snmp_port entries.cache_dirs
defaults to undef. If you pass in a hash of cache_dir entries, they will be defined automatically. cache_dir entries.
class{'::squid':
cache_mem => '512 MB',
workers => 3,
coredump_dir => '/var/spool/squid',
}
class{'::squid':
cache_mem => '512 MB',
workers => 3,
coredump_dir => '/var/spool/squid',
acls => { 'remote_urls' => {
type => 'url_regex',
entries => ['http://example.org/path',
'http://example.com/anotherpath'],
},
},
http_access => { 'our_networks hosts' => { action => 'allow', },
http_ports => { '10000' => { options => 'accel vhost'} },
snmp_ports => { '1000' => { process_number => 3 },
cache_dirs => { '/data/' => { type => 'ufs', options => '15000 32 256 min-size=32769', process_number => 2 }},
}
The acls, http_access, http_ports, snmp_port, cache_dirs lines above are equivalent to their examples below.
Defines acl entries for a squid server.
squid::acl{'remote_urls':
type => 'url_regex',
entries => ['http://example.org/path',
'http://example.com/anotherpath'],
}
would result in a multi entry squid acl
acl remote_urls url_regex http://example.org/path
acl remote_urls url_regex http://example.com/anotherpath
These may be defined as a hash passed to ::squid
type
The acltype of the acl, must be defined, e.g url_regex, urlpath_regex, port, ..aclname
The name of acl, defaults to thetitle
.entries
An array of acl entries, multiple members results in multiple lines in squid.conf.order
Each ACL has an order05
by default this can be specified if order of ACL definition matters.
Defines cache_dir entries for a squid server.
squid::cache_dir{'/data':
type => 'ufs',
options => '15000 32 256 min-size=32769',
process_number => 2,
}
Results in the squid configuration of
if ${processor} = 2
cache_dir ufs 15000 32 256 min-size=32769
endif
type
the type of cache, e.g ufs. defaults toufs
.path
defaults to the namevar, file path to cache.options
String of options for the cache. Defaults to empty string.process_number
if specfied as an integer the cache will be wrapped in aif $proceess_number
statement so the cache will be used by only one process. Default is undef.
Defines http_access entries for a squid server.
squid::http_access{'our_networks hosts':
action => 'allow',
}
Adds a squid.conf line
http_access allow our_networks hosts
These may be defined as a hash passed to ::squid
value
defaults to thenamevar
the rule to allow or deny.action
must bedeny
orallow
. By default it is allow. The squid.conf file is ordered so by default all allows appear before all denys. This can be overidden with theorder
parameter.order
by default is05
Defines http_port entries for a squid server.
squid::http_port{'10000':
options => 'accel vhost'
}
Results in a squid configuration of
http_port 10000 accel vhost
port
defaults to the namevar and is the port number.options
A string to specify any options for the default. By default and empty string.
Defines snmp_port entries for a squid server.
squid::snmp_port{'1000':
process_number => 3
}
Results in a squid configuration of
if ${process_number} = 3
snmp_port 1000
endif
port
defautls to the namevar and is the port number.options
A string to specify any options for the default. By default and empty string.process_number
If set to and integer the snmp_port is enabled only for a particular squid thread. Defaults to undef.
Defines auth_param entries for a squid server.
squid::auth_param{ 'basic auth_param'
scheme => 'basic',
entries => ['program /usr/lib64/squid/basic_ncsa_auth /etc/squid/.htpasswd',
'children 5',
'realm Squid Basic Authentication',
'credentialsttl 5 hours'],
}
would result in multi entry squid auth_param
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/.htpasswd
auth_param basic children 5
auth_param basic realm Squid Basic Authentication
auth_param basic credentialsttl 5 hours
These may be defined as a hash passed to ::squid
scheme
the scheme used for authentication must be definedentries
An array of entries, multiple members results in multiple lines in squid.conforder
by default is '40'