## haproxy_cd::server::proxy.pp # Module name: haproxy_cd # Author: Arne Teuke (arne_teuke@ConfDroid.com) # @summary Define manages the proxies for haproxy_cd. # @param [Array] 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 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 port to bind. # @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 # @param [String] be_balance what kind of balance should be used # @param [String] be_mode which backend mode should be used # @param [String] default_backend value for the default backend # @param [String] be_option value for a backend option # @param [String] fe_tcp_request value for a frontend tcp request # @param [String] fe_http_request value for a frontend http request # @param [String] fe_option value for a frontend option # @param [String] acl_rule_front value for a frontend acl rule # @param [String] acl_rule_back value for a backend acl rule # @param [Array] backend_configs array of values for the backend # @param [String] be_stick_table value for the backend stickiness # @param [String] be_stick_on value for th backend stickiness # @param [String] be_http_check value for backend http check # @param [String] be_http_request value for a backend http request # @param [String] be_acl_rule value for a backend acl rule ############################################################################### define haproxy_cd::server::proxy ( Array $haproxy_fqdn = undef, String $frontend_name = undef, String $frontend_mode = undef, String $fe_use_backend = '', String $fe_bind_mode = undef, String $fe_option = '', String $frontend_order = '010', String $acl_rule_front = '', String $acl_rule_back = '', String $backend_name = '', String $backend_order = '030', String $fe_maxconn = '', String $be_server_name = '', String $be_balance = '', String $be_mode = '', String $default_backend = '', String $be_option = '', String $fe_tcp_request = '', String $fe_http_request = '', Array $backend_configs = [], String $be_stick_table = '', String $be_stick_on = '', String $be_http_check = '', String $be_http_request = '', String $be_acl_rule = '', ) { $hy_main_config = '/etc/haproxy/haproxy.cfg' $hy_frontendrule = 'haproxy_cd/haproxy_frontend_rule.erb' $hy_backendrule = 'haproxy_cd/haproxy_backend_rule.erb' $hy_acl_rule = 'haproxy_cd/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, } # Ensure backends are only created once ensure_resource('concat::fragment', "backends_${name}", { 'target' => $hy_main_config, 'content' => template($hy_backendrule), 'order' => $backend_order, }) # open specific firewall ports }