## cd_haproxy::server::proxy.pp # Module name: cd_haproxy # Author: Arne Teuke (arne_teuke@ConfDroid.com) # @summary Define manages the proxies for cd_haproxy. # @param [string] haproxy_fqdn the fqdn of the haproxy server in question. # @param [string] frontend_name the name for the frontend section rule. # @param [string] frontend_order the order where the concat should appear # in the file. # @param [string] frontend_mode mode for the loadbalancer instance: http or tcp # @param [string] fe_use_backend which backend to use. if left empty, the # default backend will be used. # @param [string] fe_bind_mode which bind mode to use, i.e. to which interface # and poort to bind. # @param [string] acl_rule an ACL rule to be inserted if required. Empty values # will not be populated. # @param [string] acl_order the order where the acl rule should be inserted, # so it will be within the correct lb instance configuration. # @param [string] backend_name the backend name to be used for the rule. # @param [string] backend_order the order for the backend name, so it will be # within the correct lb instance configuration. # @param [string] fe_maxconn the maximum connections for the lb instance. # @param [string] be_server_name set the name for the backend server ############################################################################### define cd_haproxy::server::proxy ( $haproxy_fqdn = undef, $frontend_name = undef, $frontend_mode = undef, $fe_use_backend = '', $fe_bind_mode = undef, $fe_option = '', $frontend_order = '010', $acl_rule_front = '', $acl_rule_back = '', $backend_name = '', $backend_order = '030', $fe_maxconn = '', $be_server_name = '', $be_balance = '', $be_mode = '', $default_backend = '', $be_option = '', $fe_tcp_request = '', $fe_http_request = '', $backend_configs = [], ) { $hy_main_config = '/etc/haproxy/haproxy.cfg' $hy_frontendrule = 'cd_haproxy/haproxy_frontend_rule.erb' $hy_backendrule = 'cd_haproxy/haproxy_backend_rule.erb' $hy_acl_rule = 'cd_haproxy/haproxy_acl_rule.erb' # Ensure acl_rule_front and acl_rule_back are arrays $acl_rule_front_array = split($acl_rule_front, ';') $acl_rule_back_array = split($acl_rule_back, ';') $fe_use_backend_array = split($fe_use_backend,';') $backend_name_array = split($backend_name, ';') $be_server_name_array = split($be_server_name, ';') $be_option_array = split($be_option, ';') $fe_tcp_request_array = split($fe_tcp_request, ';') $fe_option_array = split($fe_option, ';') $fe_http_request_array = split($fe_http_request, ';') # create frontend section concat::fragment { "frontend_${name}": target => $hy_main_config, content => template($hy_frontendrule), order => $frontend_order, } # Create backend sections dynamically based on $backend_configs $backend_configs.each |$index, $backend_config| { concat::fragment { "backend_${name}_${index}": target => $hy_main_config, content => template($hy_backendrule), order => $backend_order, # Use variables from the backend config for each backend variables => $backend_config, } } # # create backend section # concat::fragment { "backend_${name}": # target => $hy_main_config, # content => template($hy_backendrule), # order => $backend_order, # } }