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':
http_ports => { '3128' => {} },
}
squid::acl { 'Safe_ports':
type => port,
entries => ['80'],
}
squid::http_access { 'Safe_ports':
action => allow,
}
squid::http_access{ '!Safe_ports':
action => deny,
}This module will set the SELINUX-context for the cache_dir and/or port, requires puppet-selinux
Parameters to the squid class almost map 1 to 1 to squid.conf parameters themselves.
-
ensure_serviceThe ensure value of the squid service, defaults torunning. -
enable_serviceThe enable value of the squid service, defaults totrue. -
configLocation of squid.conf file, defaults to/etc/squid/squid.conf. -
config_useruser which owns the config file, default depends on$operatingsystem -
config_groupgroup which owns the config file, default depends on$operatingsystem -
daemon_useruser which runs the squid daemon, this is used for ownership of the cache directory, default depends on$operatingsystem -
daemon_groupgroup which runs the squid daemon, this is used for ownership of the cache directory, default depends on$operatingsystem -
cache_memdefaults to256 MB. cache_mem docs. -
cache_replacement_policydefaults to undef. cache_replacement_policy docs. -
memory_replacement_policydefaults to undef. memory_replacement_policy docs. -
memory_cache_shareddefaults to undef. memory_cache_shared docs. -
maximum_object_size_in_memorydefaults to512 KB. maximum_object_size_in_memory docs -
url_rewrite_programdefaults to undef url_rewrite_program_docs -
url_rewrite_childrendefaults to undef url_rewrite_children_docs -
url_rewrite_child_optionsdefaults to undef url_rewrite_child_options_docs -
access_logdefaults todaemon:/var/logs/squid/access.log squid. access_log docs -
coredump_dirdefaults to undef. coredump_dir docs. -
error_directorydefaults to undef. error_directory. -
err_page_stylesheetdefaults to undef. err_page_stylesheet. -
package_namename of the squid package to manage, default depends on$operatingsystem -
package_ensurepackage status and/or version, default to present -
service_namename of the squid service to manage, default depends on$operatingsystem -
max_filedescriptorsdefaults to undef. max_filedescriptors docs. -
workersdefaults to undef. workers docs. -
snmp_incoming_addressdefaults to undef. Can be set to an IP address to only listen for snmp requests on an individual interface. snmp_incoming_address. -
buffered_logsdefaults to undef. buffered_logs docs. -
aclsdefaults to undef. If you pass in a hash of acl entries, they will be defined automatically. acl entries. -
visible_hostnamedefaults to undef. visible_hostname docs -
viadefaults to undef. via docs -
httpd_suppress_version_stringdefaults to undef. httpd_suppress_version_string docs -
forwarded_fordefaults to undef. supported values are "on", "off", "transparent", "delete", "truncate". forwarded_for docs -
http_accessdefaults to undef. If you pass in a hash of http_access entries, they will be defined automatically. http_access entries. -
http_portsdefaults to undef. If you pass in a hash of http_port entries, they will be defined automatically. http_port entries. -
https_portsdefaults to undef. If you pass in a hash of https_port entries, they will be defined automatically. https_port entries. -
icp_accessdefaults to undef. If you pass in a hash of icp_access entries, they will be defined automatically. icp_access entries. -
logformatdefaults to undef. If you pass in a String (or Array of Strings), they will be defined automatically. logformat entries. -
refresh_patternsdefaults to undef. If you pass a hash of refresh_pattern entires, they will be defined automatically. refresh_pattern entries. -
snmp_portsdefaults to undef. If you pass in a hash of snmp_port entries, they will be defined automatically. snmp_port entries. -
send_hitdefaults to undef. If you pass in a hash of send_hit entries, they will be defined automatically. send_hit entries. -
cache_dirsdefaults to undef. If you pass in a hash of cache_dir entries, they will be defined automatically. cache_dir entries. -
ssl_bumpdefaults to undef. If you pass in a hash of ssl_bump entries, they will be defined automatically. ssl_bump entries. -
sslproxy_cert_errordefaults to undef. If you pass in a hash of sslproxy_cert_error entries, they will be defined automatically. sslproxy_cert_error entries. -
extra_config_sectionsdefaults to empty hash. If you pass in a hash ofextra_config_sectionresources, they will be defined automatically. -
service_restartdefaults to undef. Overrides service resource restart command to be executed. It can be used to perform a soft reload of the squid service. -
squid_bin_pathpath to the squid binary, default depends on$operatingsystem
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 }},
url_rewrite_program => '/usr/bin/squidguard -c /etc/squidguard/squidguard.conf',
url_rewrite_children => 12,
url_rewrite_child_options => startup=1,
}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
typeThe acltype of the acl, must be defined, e.g url_regex, urlpath_regex, port, ..aclnameThe name of acl, defaults to thetitle.entriesAn array of acl entries, multiple members results in multiple lines in squid.conf.orderEach ACL has an order05by 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
typethe type of cache, e.g ufs. defaults toufs.pathdefaults to the namevar, file path to cache.optionsString of options for the cache. Defaults to empty string.process_numberif specfied as an integer the cache will be wrapped in aif $proceess_numberstatement so the cache will be used by only one process. Default is undef.manage_dirBoolean value, if true puppet will attempt to create the directory, if false you will have to create it yourself. Make sure the directory has the correct owner, group and mode. Defaults to true.
Defines cache entries for a squid server.
squid::cache { 'our_network_hosts_acl':
action => 'deny',
comment => 'Our networks hosts are denied for caching',
}Adds a squid.conf line
# Our networks hosts denied for caching
cache deny our_network_hosts_acl
Defines http_access entries for a squid server.
squid::http_access { 'our_networks hosts':
action => 'allow',
}Adds a squid.conf line
# http_access fragment for out_networks hosts
http_access allow our_networks hosts
squid::http_access { 'our_networks hosts':
action => 'allow',
comment => 'Our networks hosts are allowed',
}Adds a squid.conf line
# Our networks hosts are allowed
http_access allow our_networks hosts
Defines send_hit for a squid server.
squid:::send_hit{'PragmaNoCache':
action => 'deny',
}Adds a squid.conf line
send_hit deny PragmaNoCache
value defaults to the namevar. The rule to allow or deny.
action must one of deny or allow
order by default is 05.
comment A comment to add to the configuration file.
Defines snmp_access entries for a squid server.
squid::snmp_access { 'monitoring hosts':
action => 'allow',
}Adds a squid.conf line
# snmp_access fragment for monitoring hosts
snmp_access allow monitoring hosts
squid::snmp_access { 'monitoring hosts':
action => 'allow',
comment => 'Our monitoring hosts are allowed',
}Adds a squid.conf line
# Our monitoring hosts are allowed
snmp_access allow monitoring hosts
These may be defined as a hash passed to squid
Defines icp_access entries for a squid server.
squid::icp_access { 'our_networks hosts':
action => 'allow',
}Adds a squid.conf line
icp_access allow our_networks hosts
These may be defined as a hash passed to squid
valuedefaults to thenamevarthe rule to allow or deny.actionmust bedenyorallow. 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 theorderparameter.orderby default is05
Defines http_port entries for a squid server.
By setting optional ssl parameter to true will create https_port entries instead.
squid::http_port { '10000':
options => 'accel vhost'
}
squid::http_port { '10001':
ssl => true,
options => 'cert=/etc/squid/ssl_cert/server.cert key=/etc/squid/ssl_cert/server.key'
}
squid::http_port { '127.0.0.1:3128':
}Results in a squid configuration of
http_port 10000 accel vhost
https_port 10001 cert=/etc/squid/ssl_cert/server.cert key=/etc/squid/ssl_cert/server.key
http_port 127.0.0.1:3128
- The title/namevar may be in the form
portorhost:portto provide the below values. Otherwise, specifyportexplicitly, andhostif desired. portdefaults to the port of the namevar and is the port number to listen on.hostdefaults to the host part of the namevar and is the interface to listen on. If not specified, Squid listens on all interfaces.optionsA string to specify any options for the default. By default and empty string.sslA boolean. When set totruecreates https_port entries. Defaults tofalse.
Defines https_port entries for a squid server.
As an alternative to using the Squid::Http_port defined type with ssl set to true, you can use this type instead. The result is the same. Internally this type uses Squid::Http_port to create the configuration entries.
portdefaults to the namevar and is the port number.optionsA string to specify any options to add to the https_port line. Defaults to an empty string.
Defines url_rewrite_program for a squid server.
squid::url_rewrite_program { '/usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf':
children => 8,
child_options => 'startup=0 idle=1 concurrency=0',
}would result in the following squid url rewrite program
url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf
url_rewrite_children 8 startup=0 idle=1 concurrency=0
Defines refresh_pattern entries for a squid server.
squid::refresh_pattern { '^ftp:':
min => 1440,
max => 10080,
percent => 20,
order => 60,
}
squid::refresh_pattern { '(/cgi-bin/|\?)':
case_sensitive => false,
min => 0,
max => 0,
percent => 0,
order => 61,
}would result in the following squid refresh patterns
# refresh_pattern fragment for ^ftp
refresh_pattern ^ftp: 1440 20% 10080
# refresh_pattern fragment for (/cgi-bin/|\?)
refresh_pattern (/cgi-bin/|\?) -i 0 0% 0
These may be defined as a hash passed to squid
YAML example:
squid::refresh_patterns:
'^ftp':
max: 10080
min: 1440
percent: 20
order: '60'
'^gopher':
max: 1440
min: 1440
percent: 0
order: '61'
'(/cgi-bin/|\?)':
case_sensitive: false
max: 0
min: 0
percent: 0
order: '62'
'.':
max: 4320
min: 0
percent: 20
order: '63'
case_sensitiveBoolean value, if true (default) the regex is case sensitive, when false the case insensitive flag '-i' is added to the patterncommentComment added before refresh rule, defaults to refresh_pattern fragment fortitleminMust be defined, the time (in minutes) an object without an explicit expiry time should be considered fresh.maxMust be defined, the upper limit (in minutes) on how long objects without an explicit expiry time will be considered fresh.percentMust be defined, is a percentage of the objects age (time since last modification age)optionsSee squid documentation for available options.orderEach refresh_pattern has an order05by default this can be specified if order of refresh_pattern definition matters.
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
portdefaults to the namevar and is the port number.optionsA string to specify any options for the default. By default and empty string.process_numberIf 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
schemethe scheme used for authentication must be definedentriesAn array of entries, multiple members results in multiple lines in squid.conforderby default is '40'
Defines ssl_bump entries for a squid server.
squid::ssl_bump { 'all':
action => 'bump',
}Adds a squid.conf line
ssl_bump bump all
These may be defined as a hash passed to squid
valueThe type of the ssl_bump, must be defined, e.g bump, peek, ..actionThe name of acl, defaults tobump.orderby default is05
Defines sslproxy_cert_error entries for a squid server.
squid::sslproxy_cert_error { 'all':
action => 'allow',
}Adds a squid.conf line
sslproxy_cert_error allow all
These may be defined as a hash passed to squid
valuedefaults to thenamevarthe rule to allow or deny.actionmust bedenyorallow. 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 theorderparameter.orderby default is05
Squid has a large number of configuration directives. Not all of these have been exposed individually in this module. For those that haven't, the extra_config_section defined type can be used.
Using a hash of config_entries:
squid::extra_config_section { 'mail settings':
order => '60',
config_entries => {
'mail_from' => '[email protected]',
'mail_program' => 'mail',
},
}Results in a squid configuration of
# mail settings
mail_from [email protected]
mail_program mail
Using an array of config_entries:
squid::extra_config_section { 'ssl_bump settings':
order => '60',
config_entries => {
'ssl_bump' => ['server-first', 'all'],
'sslcrtd_program' => ['/usr/lib64/squid/ssl_crtd', '-s', '/var/lib/ssl_db', '-M', '4MB'],
'sslcrtd_children' => ['8', 'startup=1', 'idle=1'],
}
}Results in a squid configuration of
# ssl_bump settings
ssl_bump server-first all
sslcrtd_program /usr/lib64/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB
sslcrtd_children 8 startup=1 idle=1
Using an array of hashes of config_entries:
squid::extra_config_section { 'always_directs':
order => '60',
config_entries => [{
'always_direct' => ['deny www.reallyreallybadplace.com',
'allow my-good-dst',
'allow my-other-good-dst'],
}],
}Results in a squid configuration of
# always_directs
always_direct deny www.reallyreallybadplace.com
always_direct allow my-good-dst
always_direct allow my-other-good-dst
commentdefaults to the namevar and is used as a section comment insquid.conf.config_entriesA hash of configuration entries to create in this section. The hash key is the name of the configuration directive. The value is either a string, or an array of strings to use as the configuration directive options.orderby default is '60'. It can be used to configure where insquid.confthis configuration section should occur.
