summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHunter Haugen <h.haugen@gmail.com>2012-10-10 17:03:04 -0700
committerHunter Haugen <h.haugen@gmail.com>2012-10-10 17:03:04 -0700
commitc09e5a07cef578e1017af546e315f1c3826bf9a7 (patch)
treecaba811a27f5b967f2b7e0d01ab74f319b851bc4
parentd7ffbc326a8172bb0d0ecb888ed12d2c7e3eb7fd (diff)
Allow multiple ports to be passed
haproxy supports a single port or port range, but also muliples of those. This commit changes the 'virtual_ip_port' parameter to 'ports' and updates the template to accept an array of ports
-rw-r--r--manifests/config.pp13
-rw-r--r--spec/defines/config_spec.rb36
-rw-r--r--templates/haproxy_config_block.erb2
3 files changed, 35 insertions, 16 deletions
diff --git a/manifests/config.pp b/manifests/config.pp
index f47e387..415c5f6 100644
--- a/manifests/config.pp
+++ b/manifests/config.pp
@@ -20,9 +20,10 @@
# The namevar of the defined resource type is the listening service's name.
# This name goes right after the 'listen' statement in haproxy.cfg
#
-# [*virtual_ip_port*]
-# A unique port, or a port range for which the proxy will accept connections
-# for the ip address specified in the virtual_ip parameter.
+# [*ports*]
+# Ports on which the proxy will listen for connections on the ip address
+# specified in the virtual_ip parameter. Accepts either a single string or
+# an array of strings which may be a unique port or a hyphenated port range.
#
# [*order*]
# The order, or numerical weight, of the fragment created by this defined
@@ -40,14 +41,14 @@
# [*haproxy_config_options*]
# A hash of options that are inserted into the listening service
# configuration block.
-#
+#
# [*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 haproxy::balancermember
# with array arguments, which allows you to deploy everything in 1 run)
-#
+#
#
# === Examples
#
@@ -67,7 +68,7 @@
# Gary Larizza <gary@puppetlabs.com>
#
define haproxy::config (
- $virtual_ip_port,
+ $ports,
$order = '20',
$virtual_ip = $::ipaddress,
$mode = 'tcp',
diff --git a/spec/defines/config_spec.rb b/spec/defines/config_spec.rb
index 89993ee..a30737e 100644
--- a/spec/defines/config_spec.rb
+++ b/spec/defines/config_spec.rb
@@ -3,15 +3,33 @@ require 'spec_helper'
describe 'haproxy::config' do
let(:title) { 'tyler' }
let(:facts) {{ :ipaddress => '1.1.1.1' }}
- let(:params) do
- { :name => 'croy',
- :virtual_ip_port => '18140'
- }
+ context "when only one port is provided" do
+ let(:params) do
+ { :name => 'croy',
+ :ports => '18140'
+ }
+ end
+
+ it { should contain_concat__fragment('croy_config_block').with(
+ 'order' => '20',
+ 'target' => '/etc/haproxy/haproxy.cfg',
+ 'content' => "\nlisten croy 1.1.1.1:18140\n balance roundrobin\n option tcplog\n option ssl-hello-chk\n"
+ ) }
end
+ context "when an array of ports is provided" do
+ let(:params) do
+ { :name => 'apache',
+ :ports => [
+ '80',
+ '443',
+ ]
+ }
+ end
- it { should contain_concat__fragment('croy_config_block').with(
- 'order' => '20',
- 'target' => '/etc/haproxy/haproxy.cfg',
- 'content' => "\nlisten croy 1.1.1.1:18140\n balance roundrobin\n option tcplog\n option ssl-hello-chk\n"
+ it { should contain_concat__fragment('apache_config_block').with(
+ 'order' => '20',
+ 'target' => '/etc/haproxy/haproxy.cfg',
+ 'content' => "\nlisten apache 1.1.1.1:80,1.1.1.1:443\n balance roundrobin\n option tcplog\n option ssl-hello-chk\n"
) }
-end \ No newline at end of file
+ end
+end
diff --git a/templates/haproxy_config_block.erb b/templates/haproxy_config_block.erb
index 8737dfc..42d0e06 100644
--- a/templates/haproxy_config_block.erb
+++ b/templates/haproxy_config_block.erb
@@ -1,5 +1,5 @@
-listen <%= name %> <%= virtual_ip %>:<%= virtual_ip_port %>
+listen <%= name %> <%= virtual_ip %>:<%= Array(ports).join(",#{virtual_ip}:") %>
<% haproxy_config_options.sort.each do |key, val| -%>
<% if val.is_a?(Array) -%>
<% val.each do |item| -%>