We do something similar with chef where we've turned each backend config 
associated with an application into json and can dynamically build configs 
based on an application list. Completely avoiding using a template. 

That being said would love to see haproxy support includes.

Michael Glenney
Sent from my iPhone

On Feb 5, 2013, at 2:59 PM, Robin Lee Powell <[email protected]> wrote:

> This is what we do, using puppet's erb templating system:
> 
>        <% haproxy_https_servers.keys.each do |server| %>
>          <% haproxy_https_servers[server].each do |subserver| %>
>            <% extra_conditions=''
>            if subserver.has_key?('extra_conditions')
>              extra_conditions=subserver['extra_conditions']
>            end %>
>            # content switching based on cookie, having had them set in 
> previous sessions
>            use_backend <%= server %>-https-<%= subserver['name'] %> if { 
> hdr_sub(cookie) SITE=<%= server %> } <%= extra_conditions %>
>            # content switching based on SNI
>            use_backend <%= server %>-https-<%= subserver['name'] %> if { 
> ssl_fc_sni -i <%= server %> } <%= extra_conditions %>
>          <% end %>
>        <% end %>
> 
> -Robin
> 
> On Tue, Feb 05, 2013 at 02:53:13PM -0700, William Attwood wrote:
>> I would imagine you would dynamically create the haproxy configuration
>> based on the sources you're using to fill your variables.  I'll be doing
>> something similar, soon, where the configuration is dynamically built based
>> on entries in a database.
>> 
>> 
>> Thank you,
>> William Attwood
>> System Engineer, Co-Founder
>> Open Box I.T. Solutions, LLC
>> c. 801-634-6479
>> 
>> 
>> On Tue, Feb 5, 2013 at 2:50 PM, Joel Krauska <[email protected]> wrote:
>> 
>>> I know there's been some pushback about adding 'include' support in to
>>> haproxy config files.
>>> 
>>> One of the main reasons I would like that feature is to allow for more
>>> dynamic configs.
>>> 
>>> I've come to wonder if some templating/loops couldn't be built in to the
>>> haproxy config parser itself.
>>> 
>>> eg.
>>> 
>>> backend foo
>>>        # List of servers
>>>        %
>>>         for (var i=1;i<8;i++)
>>>          {server app-$i app-$1:8080 maxconn 255 weight 10}
>>>        %
>>> 
>>> Any other interest in seeing this?
>>> 
>>> I imagine there are standardized approaches for doing this sort of thing.
>>> 
>>> --Joel
> 

Reply via email to