Defined Type: apache::balancer
- Defined in:
- manifests/balancer.pp
Overview
Define Resource Type: apache::balancer
This type will create an apache balancer cluster file inside the conf.d directory. Each balancer cluster needs one or more balancer members (that can be declared with the apache::balancermember defined resource type). Using storeconfigs, you can export the apache::balancermember resources on all balancer members, and then collect them on a single apache load balancer server.
Requirement/Dependencies:
Currently requires the puppetlabs/concat module on the Puppet Forge and uses storeconfigs on the Puppet Master to export/collect resources from all balancer members.
Parameters
- name
-
The namevar of the defined resource type is the balancer clusters name. This name is also used in the name of the conf.d file
- proxy_set
-
Hash, default empty. If given, each key-value pair will be used as a ProxySet line in the configuration.
- target
-
String, default undef. If given, path to the file the balancer definition will be written.
- collect_exported
-
Boolean, default ‘true’. True means ‘collect exported @@balancermember resources’ (for the case when every balancermember node exports itself), false means ‘rely on the existing declared balancermember resources’ (for the case when you know the full set of balancermembers in advance and use apache::balancermember with array arguments, which allows you to deploy everything in 1 run)
- options
-
Array, default empty. If given, additional directives may be added to the <Proxy balancer://xyz OPTIONS> block.
Examples
Exporting the resource for a balancer member:
apache::balancer { ‘puppet00’: }
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'manifests/balancer.pp', line 48
define apache::balancer (
$proxy_set = {},
$collect_exported = true,
$target = undef,
$options = [],
) {
include ::apache::mod::proxy_balancer
if versioncmp($apache::mod::proxy_balancer::apache_version, '2.4') >= 0 {
$lbmethod = $proxy_set['lbmethod'] ? {
undef => 'byrequests',
default => $proxy_set['lbmethod'],
}
ensure_resource('apache::mod', "lbmethod_${lbmethod}")
}
if $target {
$_target = $target
} else {
$_target = "${::apache::confd_dir}/balancer_${name}.conf"
}
if !empty($options) {
$_options = " ${join($options, ' ')}"
} else {
$_options = ''
}
concat { "apache_balancer_${name}":
owner => '0',
group => '0',
path => $_target,
mode => $::apache::file_mode,
notify => Class['Apache::Service'],
}
concat::fragment { "00-${name}-header":
target => "apache_balancer_${name}",
order => '01',
content => "<Proxy balancer://${name}${_options}>\n",
}
if $collect_exported {
Apache::Balancermember <<| balancer_cluster == $name |>>
}
# else: the resources have been created and they introduced their
# concat fragments. We don't have to do anything about them.
concat::fragment { "01-${name}-proxyset":
target => "apache_balancer_${name}",
order => '19',
content => inline_template("<% @proxy_set.keys.sort.each do |key| %> Proxyset <%= key %>=<%= @proxy_set[key] %>\n<% end %>"),
}
concat::fragment { "01-${name}-footer":
target => "apache_balancer_${name}",
order => '20',
content => "</Proxy>\n",
}
}
|