diff options
| -rw-r--r-- | provider_base/lib/macros/haproxy.rb | 11 | ||||
| -rw-r--r-- | puppet/modules/site_haproxy/manifests/init.pp | 42 | ||||
| -rw-r--r-- | puppet/modules/site_haproxy/templates/couch.erb | 32 | ||||
| -rw-r--r-- | puppet/modules/site_haproxy/templates/haproxy.cfg.erb | 11 | ||||
| -rw-r--r-- | puppet/modules/site_haproxy/templates/haproxy_couchdb.cfg.erb | 23 | 
5 files changed, 70 insertions, 49 deletions
| diff --git a/provider_base/lib/macros/haproxy.rb b/provider_base/lib/macros/haproxy.rb index db0d4db8..c0f9ede5 100644 --- a/provider_base/lib/macros/haproxy.rb +++ b/provider_base/lib/macros/haproxy.rb @@ -40,17 +40,18 @@ module LeapCli        # create the first pass of the servers hash        servers = node_list.values.inject(Config::ObjectList.new) do |hsh, node|          weight = default_weight -        if self['location'] && node['location'] -          if self.location['name'] == node.location['name'] -            weight = local_weight -          end -        end +        try { +          weight = local_weight if self.location.name == node.location.name +        }          hsh[node.name] = Config::Object[            'backup', false,            'host', 'localhost',            'port', accept_ports[node.name] || 0,            'weight', weight          ] +        if node.services.include?('couchdb') +          hsh[node.name]['writable'] = node.couch.mode != 'mirror' +        end          hsh        end diff --git a/puppet/modules/site_haproxy/manifests/init.pp b/puppet/modules/site_haproxy/manifests/init.pp index 6bcf3f5c..b28ce80e 100644 --- a/puppet/modules/site_haproxy/manifests/init.pp +++ b/puppet/modules/site_haproxy/manifests/init.pp @@ -2,25 +2,25 @@ class site_haproxy {      $haproxy     = hiera('haproxy')      class { 'haproxy': -    enable           => true, -    manage_service   => true, -    global_options   => { -      'log'     => '127.0.0.1 local0', -      'maxconn' => '4096', -      'stats'   => 'socket /var/run/haproxy.sock user haproxy group haproxy', -      'chroot'  => '/usr/share/haproxy', -      'user'    => 'haproxy', -      'group'   => 'haproxy', -      'daemon'  => '' -    }, -    defaults_options => { -      'log'             => 'global', -      'retries'         => '3', -      'option'          => 'redispatch', -      'timeout connect' => '4000', -      'timeout client'  => '20000', -      'timeout server'  => '20000' -    } +      enable           => true, +      manage_service   => true, +      global_options   => { +        'log'     => '127.0.0.1 local0', +        'maxconn' => '4096', +        'stats'   => 'socket /var/run/haproxy.sock user haproxy group haproxy', +        'chroot'  => '/usr/share/haproxy', +        'user'    => 'haproxy', +        'group'   => 'haproxy', +        'daemon'  => '' +      }, +      defaults_options => { +        'log'             => 'global', +        'retries'         => '3', +        'option'          => 'redispatch', +        'timeout connect' => '4000', +        'timeout client'  => '20000', +        'timeout server'  => '20000' +      }    }    # monitor haproxy @@ -34,8 +34,8 @@ class site_haproxy {    concat::fragment { 'leap_haproxy_webapp_couchdb':      target  => '/etc/haproxy/haproxy.cfg',      order   => '20', -    content => template('site_haproxy/haproxy_couchdb.cfg.erb'), +    content => template('site_haproxy/haproxy.cfg.erb'),    } -   +    include site_check_mk::agent::haproxy  } diff --git a/puppet/modules/site_haproxy/templates/couch.erb b/puppet/modules/site_haproxy/templates/couch.erb new file mode 100644 index 00000000..baa31486 --- /dev/null +++ b/puppet/modules/site_haproxy/templates/couch.erb @@ -0,0 +1,32 @@ +frontend couch +  bind localhost:<%= @listen_port %> +  mode     http +  option   httplog +  option   dontlognull +  option   http-server-close    # use client keep-alive, but close server connection. +  use_backend couch_write if METH_POST +  default_backend couch_read + +backend couch_write +  mode http +  balance  roundrobin +  option   httpchk GET /        # health check using simple get to root +  option   allbackups           # balance among all backups, not just one. +  default-server inter 3000 fastinter 1000 downinter 1000 rise 2 fall 1 +<%- @servers.sort.each do |name,server| -%> +<%-   next unless server['writable'] -%> +    # <%=name%> +    server couchdb_<%=server['port']%> <%=server['host']%>:<%=server['port']%> <%='backup' if server['backup']%> weight <%=server['weight']%> check +<%- end -%> + +backend couch_read +  mode http +  balance  roundrobin +  option   httpchk GET /        # health check using simple get to root +  option   allbackups           # balance among all backups, not just one. +  default-server inter 3000 fastinter 1000 downinter 1000 rise 2 fall 1 +<%- @servers.sort.each do |name,server| -%> +    # <%=name%> +    server couchdb_<%=server['port']%> <%=server['host']%>:<%=server['port']%> <%='backup' if server['backup']%> weight <%=server['weight']%> check +<%- end -%> + diff --git a/puppet/modules/site_haproxy/templates/haproxy.cfg.erb b/puppet/modules/site_haproxy/templates/haproxy.cfg.erb new file mode 100644 index 00000000..8311b1a5 --- /dev/null +++ b/puppet/modules/site_haproxy/templates/haproxy.cfg.erb @@ -0,0 +1,11 @@ +<%- @haproxy.each do |frontend, options| -%> +<%-   if options['servers'] -%> + +## +## <%= frontend %> +## + +<%=     scope.function_templatewlv(["site_haproxy/#{frontend}.erb", options]) %> +<%-   end -%> +<%- end -%> + diff --git a/puppet/modules/site_haproxy/templates/haproxy_couchdb.cfg.erb b/puppet/modules/site_haproxy/templates/haproxy_couchdb.cfg.erb deleted file mode 100644 index 1fa01b96..00000000 --- a/puppet/modules/site_haproxy/templates/haproxy_couchdb.cfg.erb +++ /dev/null @@ -1,23 +0,0 @@ - -listen bigcouch-in -  mode     http -  balance  roundrobin -  option   httplog -  option   dontlognull -  option   httpchk GET /        # health check using simple get to root -  option   http-server-close    # use client keep-alive, but close server connection. -  option   allbackups           # balance among all backups, not just one. - -  bind localhost:4096 - -  default-server inter 3000 fastinter 1000 downinter 1000 rise 2 fall 1 - -<%- if @haproxy['servers'] -%> -<%-   @haproxy['servers'].sort.each do |name,server| -%> -<%-     backup = server['backup'] ? 'backup' : '' -%> -  # <%=name%> -  server couchdb_<%=server['port']%> <%=server['host']%>:<%=server['port']%> <%=backup%> weight <%=server['weight']%> check - -<%-   end -%> -<%- end -%> - | 
