Listen on multiple virtual IP addresses
authorEugene Kirpichov <ekirpichov@gmail.com>
Tue, 6 Nov 2012 15:08:44 +0000 (19:08 +0400)
committerEugene Kirpichov <ekirpichov@gmail.com>
Tue, 6 Nov 2012 15:09:12 +0000 (19:09 +0400)
manifests/listen.pp
spec/defines/listen_spec.rb
templates/haproxy_listen_block.erb

index 5dea8a8..ee9e320 100644 (file)
@@ -69,7 +69,7 @@
 #
 define haproxy::listen (
   $ports,
-  $ipaddress        = $::ipaddress,
+  $ipaddress        = [$::ipaddress],
   $mode             = 'tcp',
   $collect_exported = true,
   $options          = {
index fa54409..6102285 100644 (file)
@@ -14,7 +14,7 @@ describe 'haproxy::listen' do
     it { should contain_concat__fragment('croy_listen_block').with(
       'order'   => '20-croy',
       '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"
+      'content' => "listen croy\n\n  bind 1.1.1.1:18140\n\n  balance  roundrobin\n  option  tcplog\n  option  ssl-hello-chk\n"
     ) }
   end
   context "when an array of ports is provided" do
@@ -32,7 +32,7 @@ describe 'haproxy::listen' do
     it { should contain_concat__fragment('apache_listen_block').with(
       'order'   => '20-apache',
       'target'  => '/etc/haproxy/haproxy.cfg',
-      'content' => "\nlisten apache 23.23.23.23:80,23.23.23.23:443\n  balance  roundrobin\n  option  tcplog\n  option  ssl-hello-chk\n"
+      'content' => "listen apache\n\n  bind 23.23.23.23:80\n\n  bind 23.23.23.23:443\n\n  balance  roundrobin\n  option  tcplog\n  option  ssl-hello-chk\n"
     ) }
   end
   context "when a comma-separated list of ports is provided" do
@@ -47,7 +47,7 @@ describe 'haproxy::listen' do
     it { should contain_concat__fragment('apache_listen_block').with(
       'order'   => '20-apache',
       'target'  => '/etc/haproxy/haproxy.cfg',
-      'content' => "\nlisten apache 23.23.23.23:80,23.23.23.23:443\n  balance  roundrobin\n  option  tcplog\n  option  ssl-hello-chk\n"
+      'content' => "listen apache\n\n  bind 23.23.23.23:80\n\n  bind 23.23.23.23:443\n\n  balance  roundrobin\n  option  tcplog\n  option  ssl-hello-chk\n"
     ) }
   end
 end
index 12f55f6..8b3767f 100644 (file)
@@ -1,5 +1,7 @@
-
-listen <%= name %> <%= ipaddress %>:<%= Array(ports).collect { |x| x.split(',')}.flatten.join(",#{ipaddress}:") %>
+listen <%= name %>
+<% Array(ipaddress).uniq.each do |virtual_ip| (ports.is_a?(Array) ? ports : Array(ports.split(","))).each do |port| %>
+  bind <%= virtual_ip %>:<%= port %>
+<% end end %>
 <% options.sort.each do |key, val| -%>
 <% if val.is_a?(Array) -%>
 <% val.each do |item| -%>