Defined Type: pulsevtm::pools

Defined in:
manifests/pools.pp

Overview

Define: pulsevtm::pools

Pool The “conf/pools” directory contains configuration files for backend node pools. The name of a file is the name of the pool it defines. Pools can be configured under the “Services > Pools” section of the Admin Server UI or by using functions under the “Pool” section of the SOAP API and CLI.

Parameters

basic__bandwidth_class

The Bandwidth Management Class this pool uses, if any.

basic__failure_pool

If all of the nodes in this pool have failed, then requests can be diverted to another pool.

basic__lard_size

The size of the LARD cache. This is used when recording unique URLs to provide request affinity, where the same request is sent to the same node.

basic__max_connection_attempts

The maximum number of nodes to which the traffic manager will attempt to send a request before returning an error to the client. Requests that are non-retryable will be attempted against only one node. Zero signifies no limit.

basic__max_idle_connections_pernode

The maximum number of unused HTTP keepalive connections that should be maintained to an individual node. Zero signifies no limit.

basic__max_timed_out_connection_attempts

The maximum number of connection attempts the traffic manager will make where the server fails to respond within the time limit defined by the “max_reply_time” setting. Zero signifies no limit.

basic__monitors

The monitors assigned to this pool, used to detect failures in the back end nodes. Type:array Properties:

basic__node_close_with_rst

Whether or not connections to the back-end nodes should be closed with a RST packet, rather than a FIN packet. This avoids the TIME_WAIT state, which on rare occasions allows wandering duplicate packets to be safely ignored.

basic__node_connection_attempts

The number of times the software will attempt to connect to the same back-end node before marking it as failed. This is only used when “passive_monitoring” is enabled.

basic__node_delete_behavior

Specify the deletion behavior for nodes in this pool.

basic__node_drain_to_delete_timeout

The maximum time that a node will be allowed to remain in a draining state after it has been deleted. A value of 0 means no maximum time.

basic__nodes_table

A table of all nodes in this pool. A node should be specified as a “<ip>:<port>” pair, and has a state, weight and priority. Type:array Properties:node is a combination of an ip address and port”, “type”=>“string”, “priority”=>priority of the node, higher values signify higher priority. If a priority is not specified for a node it is assumed to be "1".”, “type”=>“integer”, “minimum”=>0, “default”=>1, “state”=>state of the pool, which can either be Active, Draining or Disabled”, “type”=>“string”, “default”=>“active”, “enum”=>[“active”, “disabled”, “draining”], “weight”=>for the node. The actual value in isolation does not matter: As long as it is a valid integer 1-100, the per-node weightings are calculated on the relative values between the nodes.”, “type”=>“integer”, “minimum”=>1, “maximum”=>100, “default”=>1, “source_ip”=>source address the Traffic Manager uses to connect to this node.”, “type”=>“string”, “default”=>“”}

basic__note

A description of the pool.

basic__passive_monitoring

Whether or not the software should check that ‘real’ requests (i.e. not those from monitors) to this pool appear to be working. This should normally be enabled, so that when a node is refusing connections, responding too slowly, or sending back invalid data, it can mark that node as failed, and stop sending requests to it.
If this is disabled, you should ensure that suitable health monitors are configured to check your servers instead, otherwise failed requests will not be detected and subsequently retried.

basic__persistence_class

The default Session Persistence class this pool uses, if any.

basic__transparent

Whether or not connections to the back-ends appear to originate from the source client IP address.

auto_scaling__addnode_delaytime

The time in seconds from the creation of the node which the traffic manager should wait before adding the node to the autoscaled pool. Set this to allow applications on the newly created node time to intialize before being sent traffic.

auto_scaling__cloud_credentials

The Cloud Credentials object containing authentication credentials to use in cloud API calls.

auto_scaling__cluster

The ESX host or ESX cluster name to put the new virtual machine instances on.

auto_scaling__data_center

The name of the logical datacenter on the vCenter server. Virtual machines will be scaled up and down under the datacenter root folder.

auto_scaling__data_store

The name of the datastore to be used by the newly created virtual machine.

auto_scaling__enabled

Are the nodes of this pool subject to autoscaling? If yes, nodes will be automatically added and removed from the pool by the chosen autoscaling mechanism.

auto_scaling__external

Whether or not autoscaling is being handled by an external system. Set this value to Yes if all aspects of autoscaling are handled by an external system, such as RightScale. If set to No, the traffic manager will determine when to scale the pool and will communicate with the cloud provider to create and destroy nodes as necessary.

auto_scaling__extraargs

Any extra arguments to the autoscaling API. Each argument can be separated by comma. E.g in case of EC2, it can take extra parameters to the Amazon’s RunInstance API say DisableApiTermination=false,Placement.Tenancy=default.

auto_scaling__hysteresis

The time period in seconds for which a change condition must persist before the change is actually instigated.

auto_scaling__imageid

The identifier for the image of the instances to create.

auto_scaling__ips_to_use

Which type of IP addresses on the node to use. Choose private IPs if the traffic manager is in the same cloud as the nodes, otherwise choose public IPs.

auto_scaling__last_node_idle_time

The time in seconds for which the last node in an autoscaled pool must have been idle before it is destroyed. This is only relevant if min_nodes is 0.

auto_scaling__max_nodes

The maximum number of nodes in this autoscaled pool.

auto_scaling__min_nodes

The minimum number of nodes in this autoscaled pool.

auto_scaling__name

The beginning of the name of nodes in the cloud that are part of this autoscaled pool.

auto_scaling__port

The port number to use for each node in this autoscaled pool.

auto_scaling__refractory

The time period in seconds after the instigation of a re-size during which no further changes will be made to the pool size.

auto_scaling__response_time

The expected response time of the nodes in ms. This time is used as a reference when deciding whether a node’s response time is conforming. All responses from all the nodes will be compared to this reference and the percentage of conforming responses is the base for decisions about scaling the pool up or down.

auto_scaling__scale_down_level

The fraction, in percent, of conforming requests above which the pool size is decreased. If the percentage of conforming requests exceeds this value, the pool is scaled down.

auto_scaling__scale_up_level

The fraction, in percent, of conforming requests below which the pool size is increased. If the percentage of conforming requests drops below this value, the pool is scaled up.

auto_scaling__securitygroupids

List of security group IDs to associate to the new EC2 instance. Type:array Properties:

auto_scaling__size_id

The identifier for the size of the instances to create.

auto_scaling__subnetids

List of subnet IDs where the new EC2-VPC instance(s) will be launched. Instances will be evenly distributed among the subnets. If the list is empty, instances will be launched inside EC2-Classic. Type:array Properties:

connection__max_connect_time

How long the pool should wait for a connection to a node to be established before giving up and trying another node.

connection__max_connections_per_node

The maximum number of concurrent connections allowed to each back-end node in this pool per machine. A value of 0 means unlimited connections.

connection__max_queue_size

The maximum number of connections that can be queued due to connections limits. A value of 0 means unlimited queue size.

connection__max_reply_time

How long the pool should wait for a response from the node before either discarding the request or trying another node (retryable requests only).

connection__queue_timeout

The maximum time to keep a connection queued in seconds.

dns_autoscale__enabled

When enabled, the Traffic Manager will periodically resolve the hostnames in the “hostnames” list using a DNS query, and use the results to automatically add, remove or update the IP addresses of the nodes in the pool.

dns_autoscale__hostnames

A list of hostnames which will be used for DNS-derived autoscaling Type:array Properties:

dns_autoscale__port

The port number to use for each node when using DNS-derived autoscaling

ftp__support_rfc_2428

Whether or not the backend IPv4 nodes understand the EPRT and EPSV command from RFC 2428. It is always assumed that IPv6 nodes support these commands.

http__keepalive

Whether or not the pool should maintain HTTP keepalive connections to the nodes.

http__keepalive_non_idempotent

Whether or not the pool should maintain HTTP keepalive connections to the nodes for non-idempotent requests.

kerberos_protocol_transition__principal

The Kerberos principal the traffic manager should use when performing Kerberos Protocol Transition.

kerberos_protocol_transition__target

The Kerberos principal name of the service this pool targets.

load_balancing__algorithm

The load balancing algorithm that this pool uses to distribute load across its nodes.

load_balancing__priority_enabled

Enable priority lists.

load_balancing__priority_nodes

Minimum number of highest-priority active nodes.

node__close_on_death

Close all connections to a node once we detect that it has failed.

node__retry_fail_time

The amount of time, in seconds, that a traffic manager will wait before re-trying a node that has been marked as failed by passive monitoring.

service_discovery__enabled

Are the nodes of this pool determined by a Service Discovery plugin? If yes, nodes will be automatically added and removed from the pool by the traffic manager.

service_discovery__interval

The minimum time before rerunning the Service Discovery plugin

service_discovery__plugin

The plugin script a Service Discovery autoscaled pool should use to retrieve the list of nodes.

service_discovery__plugin_args

The arguments for the script specified in “service_discovery!plugin”, e.g. a common instance tag, or name of a managed group of cloud instances.

service_discovery__timeout

The maximum time a plugin should be allowed to run before timing out. Set to 0 for no timeout.

smtp__send_starttls

If we are encrypting traffic for an SMTP connection, should we upgrade to SSL using STARTTLS.

ssl__cipher_suites

The SSL/TLS cipher suites to allow for connections to a back-end node. Leaving this empty will make the pool use the globally configured cipher suites, see configuration key <a href=“?fold_open=SSL%20Configuration&section=Global%20Settings#a_ssl!cipher_su ites”> “ssl!cipher_suites”</a> in the Global Settings section of the System tab. See there for how to specify SSL/TLS cipher suites.

ssl__client_auth

Whether or not a suitable certificate and private key from the SSL Client Certificates catalog be used if the back-end server requests client authentication.

ssl__common_name_match

A list of names against which the ‘common name’ of the certificate is matched; these names are used in addition to the node’s hostname or IP address as specified in the config file or added by the autoscaler process. Type:array Properties:

ssl__elliptic_curves

The SSL elliptic curve preference list for SSL connections from this pool using TLS version 1.0 or higher. Leaving this empty will make the pool use the globally configured preference list. The named curves P256, P384 and P521 may be configured. Type:array Properties:

ssl__enable

Whether or not the pool should encrypt data before sending it to a back-end node.

ssl__enhance

SSL protocol enhancements allow your traffic manager to prefix each new SSL connection with information about the client. This enables Pulse Secure Virtual Traffic Manager virtual servers referenced by this pool to discover the original client’s IP address. Only enable this if you are using nodes for this pool which are Pulse Secure vTMs, whose virtual servers have the “ssl_trust_magic” setting enabled.

ssl__send_close_alerts

Whether or not to send an SSL/TLS “close alert” when initiating a socket disconnection.

ssl__server_name

Whether or not the software should use the TLS 1.0 server_name extension, which may help the back-end node provide the correct certificate. Enabling this setting will force the use of at least TLS 1.0.

ssl__session_cache_enabled

Whether or not the SSL client cache will be used for this pool. Choosing the global setting means the value of the configuration key <a href=“?fold_open=SSL%20Configuration&section=Global%20Settings#a_ssl!client_ca che!enabled”> “ssl!client_cache!enabled”</a> from the Global Settings section of the System tab will be enforced.

ssl__session_tickets_enabled

Whether or not SSL session tickets will be used for this pool if the session cache is also enabled. Choosing the global setting means the value of the configuration key <a href=“?fold_open=SSL%20Configuration&section=Global%20Settings#a_ssl!client_ca che!tickets_enabled”> “ssl!client_cache!enabled”</a> from the Global Settings section of the System tab will be enforced.

ssl__signature_algorithms

The SSL signature algorithms preference list for SSL connections from this pool using TLS version 1.2 or higher. Leaving this empty will make the pool use the globally configured preference list, “signature_algorithms” in the “ssl” section of the “global_settings” resource. See there and in the online help for how to specify SSL signature algorithms.

ssl__strict_verify

Whether or not strict certificate verification should be performed. This will turn on checks to disallow server certificates that don’t match the server name or a name in the ssl_common_name_match list, are self-signed, expired, revoked, or have an unknown CA.

ssl__support_ssl3

Whether or not SSLv3 is enabled for this pool. Choosing the global setting means the value of the configuration key <a href=“?fold_open=SSL%20Configuration&section=Global%20Settings#a_ssl!support_s sl3”> “ssl!support_ssl3”</a> from the Global Settings section of the System tab will be enforced.

ssl__support_tls1

Whether or not TLSv1.0 is enabled for this pool. Choosing the global setting means the value of the configuration key <a href=“?fold_open=SSL%20Configuration&section=Global%20Settings#a_ssl!support_t ls1”> “ssl!support_tls1”</a> from the Global Settings section of the System tab will be enforced.

ssl__support_tls1_1

Whether or not TLSv1.1 is enabled for this pool. Choosing the global setting means the value of the configuration key <a href=“?fold_open=SSL%20Configuration&section=Global%20Settings#a_ssl!support_t ls1_1”> “ssl!support_tls1_1”</a> from the Global Settings section of the System tab will be enforced.

ssl__support_tls1_2

Whether or not TLSv1.2 is enabled for this pool. Choosing the global setting means the value of the configuration key <a href=“?fold_open=SSL%20Configuration&section=Global%20Settings#a_ssl!support_t ls1_2”> “ssl!support_tls1_2”</a> from the Global Settings section of the System tab will be enforced.

tcp__nagle

Whether or not Nagle’s algorithm should be used for TCP connections to the back-end nodes.

udp__accept_from

The IP addresses and ports from which responses to UDP requests should be accepted. If set to accept responses from a specific set of IP addresses, you will need to enter a CIDR Mask (such as 10.100.0.0/16).

udp__accept_from_mask

The CIDR mask that matches IPs we want to receive responses from.

udp__response_timeout

The maximum length of time that a node is permitted to take after receiving a UDP request packet before sending a reply packet. Zero indicates that there is no maximum, preventing a node that does not send replies from being presumed to have failed.

Examples

pulsevtm::pools { ‘example’:

ensure => present,

}

Authors

Pulse Secure <puppet-vadc@pulsesecure.net>

Copyright 2018 Pulse Secure

Parameters:

  • ensure (Any)
  • basic__bandwidth_class (Any) (defaults to: undef)
  • basic__failure_pool (Any) (defaults to: undef)
  • basic__max_connection_attempts (Any) (defaults to: 0)
  • basic__max_idle_connections_pernode (Any) (defaults to: 50)
  • basic__max_timed_out_connection_attempts (Any) (defaults to: 2)
  • basic__monitors (Any) (defaults to: '[]')
  • basic__node_close_with_rst (Any) (defaults to: false)
  • basic__node_connection_attempts (Any) (defaults to: 3)
  • basic__node_delete_behavior (Any) (defaults to: 'immediate')
  • basic__node_drain_to_delete_timeout (Any) (defaults to: 0)
  • basic__nodes_table (Any) (defaults to: '[]')
  • basic__note (Any) (defaults to: undef)
  • basic__passive_monitoring (Any) (defaults to: true)
  • basic__persistence_class (Any) (defaults to: undef)
  • basic__transparent (Any) (defaults to: false)
  • auto_scaling__addnode_delaytime (Any) (defaults to: 0)
  • auto_scaling__cloud_credentials (Any) (defaults to: undef)
  • auto_scaling__cluster (Any) (defaults to: undef)
  • auto_scaling__data_center (Any) (defaults to: undef)
  • auto_scaling__data_store (Any) (defaults to: undef)
  • auto_scaling__enabled (Any) (defaults to: false)
  • auto_scaling__external (Any) (defaults to: true)
  • auto_scaling__extraargs (Any) (defaults to: undef)
  • auto_scaling__hysteresis (Any) (defaults to: 20)
  • auto_scaling__imageid (Any) (defaults to: undef)
  • auto_scaling__ips_to_use (Any) (defaults to: 'publicips')
  • auto_scaling__last_node_idle_time (Any) (defaults to: 3600)
  • auto_scaling__max_nodes (Any) (defaults to: 4)
  • auto_scaling__min_nodes (Any) (defaults to: 1)
  • auto_scaling__name (Any) (defaults to: undef)
  • auto_scaling__port (Any) (defaults to: 80)
  • auto_scaling__refractory (Any) (defaults to: 180)
  • auto_scaling__response_time (Any) (defaults to: 1000)
  • auto_scaling__scale_down_level (Any) (defaults to: 95)
  • auto_scaling__scale_up_level (Any) (defaults to: 40)
  • auto_scaling__securitygroupids (Any) (defaults to: '[]')
  • auto_scaling__size_id (Any) (defaults to: undef)
  • auto_scaling__subnetids (Any) (defaults to: '[]')
  • connection__max_connect_time (Any) (defaults to: 4)
  • connection__max_connections_per_node (Any) (defaults to: 0)
  • connection__max_queue_size (Any) (defaults to: 0)
  • connection__max_reply_time (Any) (defaults to: 30)
  • connection__queue_timeout (Any) (defaults to: 10)
  • dns_autoscale__enabled (Any) (defaults to: false)
  • dns_autoscale__hostnames (Any) (defaults to: '[]')
  • dns_autoscale__port (Any) (defaults to: 80)
  • ftp__support_rfc_2428 (Any) (defaults to: false)
  • http__keepalive (Any) (defaults to: true)
  • http__keepalive_non_idempotent (Any) (defaults to: false)
  • kerberos_protocol_transition__principal (Any) (defaults to: undef)
  • kerberos_protocol_transition__target (Any) (defaults to: undef)
  • load_balancing__algorithm (Any) (defaults to: 'round_robin')
  • load_balancing__priority_enabled (Any) (defaults to: false)
  • load_balancing__priority_nodes (Any) (defaults to: 1)
  • node__close_on_death (Any) (defaults to: false)
  • node__retry_fail_time (Any) (defaults to: 60)
  • service_discovery__enabled (Any) (defaults to: false)
  • service_discovery__interval (Any) (defaults to: 10)
  • service_discovery__plugin (Any) (defaults to: undef)
  • service_discovery__plugin_args (Any) (defaults to: undef)
  • service_discovery__timeout (Any) (defaults to: 0)
  • smtp__send_starttls (Any) (defaults to: true)
  • ssl__cipher_suites (Any) (defaults to: undef)
  • ssl__client_auth (Any) (defaults to: false)
  • ssl__common_name_match (Any) (defaults to: '[]')
  • ssl__elliptic_curves (Any) (defaults to: '[]')
  • ssl__enable (Any) (defaults to: false)
  • ssl__enhance (Any) (defaults to: false)
  • ssl__send_close_alerts (Any) (defaults to: true)
  • ssl__server_name (Any) (defaults to: false)
  • ssl__session_cache_enabled (Any) (defaults to: 'use_default')
  • ssl__session_tickets_enabled (Any) (defaults to: 'use_default')
  • ssl__signature_algorithms (Any) (defaults to: undef)
  • ssl__strict_verify (Any) (defaults to: false)
  • ssl__support_ssl3 (Any) (defaults to: 'use_default')
  • ssl__support_tls1 (Any) (defaults to: 'use_default')
  • ssl__support_tls1_1 (Any) (defaults to: 'use_default')
  • ssl__support_tls1_2 (Any) (defaults to: 'use_default')
  • tcp__nagle (Any) (defaults to: true)
  • udp__accept_from (Any) (defaults to: 'dest_only')
  • udp__accept_from_mask (Any) (defaults to: undef)
  • udp__response_timeout (Any) (defaults to: 0)


430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
# File 'manifests/pools.pp', line 430

define pulsevtm::pools (
  $ensure,
  $basic__bandwidth_class                   = undef,
  $basic__failure_pool                      = undef,
  $basic__max_connection_attempts           = 0,
  $basic__max_idle_connections_pernode      = 50,
  $basic__max_timed_out_connection_attempts = 2,
  $basic__monitors                          = '[]',
  $basic__node_close_with_rst               = false,
  $basic__node_connection_attempts          = 3,
  $basic__node_delete_behavior              = 'immediate',
  $basic__node_drain_to_delete_timeout      = 0,
  $basic__nodes_table                       = '[]',
  $basic__note                              = undef,
  $basic__passive_monitoring                = true,
  $basic__persistence_class                 = undef,
  $basic__transparent                       = false,
  $auto_scaling__addnode_delaytime          = 0,
  $auto_scaling__cloud_credentials          = undef,
  $auto_scaling__cluster                    = undef,
  $auto_scaling__data_center                = undef,
  $auto_scaling__data_store                 = undef,
  $auto_scaling__enabled                    = false,
  $auto_scaling__external                   = true,
  $auto_scaling__extraargs                  = undef,
  $auto_scaling__hysteresis                 = 20,
  $auto_scaling__imageid                    = undef,
  $auto_scaling__ips_to_use                 = 'publicips',
  $auto_scaling__last_node_idle_time        = 3600,
  $auto_scaling__max_nodes                  = 4,
  $auto_scaling__min_nodes                  = 1,
  $auto_scaling__name                       = undef,
  $auto_scaling__port                       = 80,
  $auto_scaling__refractory                 = 180,
  $auto_scaling__response_time              = 1000,
  $auto_scaling__scale_down_level           = 95,
  $auto_scaling__scale_up_level             = 40,
  $auto_scaling__securitygroupids           = '[]',
  $auto_scaling__size_id                    = undef,
  $auto_scaling__subnetids                  = '[]',
  $connection__max_connect_time             = 4,
  $connection__max_connections_per_node     = 0,
  $connection__max_queue_size               = 0,
  $connection__max_reply_time               = 30,
  $connection__queue_timeout                = 10,
  $dns_autoscale__enabled                   = false,
  $dns_autoscale__hostnames                 = '[]',
  $dns_autoscale__port                      = 80,
  $ftp__support_rfc_2428                    = false,
  $http__keepalive                          = true,
  $http__keepalive_non_idempotent           = false,
  $kerberos_protocol_transition__principal  = undef,
  $kerberos_protocol_transition__target     = undef,
  $load_balancing__algorithm                = 'round_robin',
  $load_balancing__priority_enabled         = false,
  $load_balancing__priority_nodes           = 1,
  $node__close_on_death                     = false,
  $node__retry_fail_time                    = 60,
  $service_discovery__enabled               = false,
  $service_discovery__interval              = 10,
  $service_discovery__plugin                = undef,
  $service_discovery__plugin_args           = undef,
  $service_discovery__timeout               = 0,
  $smtp__send_starttls                      = true,
  $ssl__cipher_suites                       = undef,
  $ssl__client_auth                         = false,
  $ssl__common_name_match                   = '[]',
  $ssl__elliptic_curves                     = '[]',
  $ssl__enable                              = false,
  $ssl__enhance                             = false,
  $ssl__send_close_alerts                   = true,
  $ssl__server_name                         = false,
  $ssl__session_cache_enabled               = 'use_default',
  $ssl__session_tickets_enabled             = 'use_default',
  $ssl__signature_algorithms                = undef,
  $ssl__strict_verify                       = false,
  $ssl__support_ssl3                        = 'use_default',
  $ssl__support_tls1                        = 'use_default',
  $ssl__support_tls1_1                      = 'use_default',
  $ssl__support_tls1_2                      = 'use_default',
  $tcp__nagle                               = true,
  $udp__accept_from                         = 'dest_only',
  $udp__accept_from_mask                    = undef,
  $udp__response_timeout                    = 0,
){
  include pulsevtm
  $ip              = $pulsevtm::rest_ip
  $port            = $pulsevtm::rest_port
  $user            = $pulsevtm::rest_user
  $pass            = $pulsevtm::rest_pass
  $purge           = $pulsevtm::purge
  $purge_state_dir = $pulsevtm::purge_state_dir

  info ("Configuring pools ${name}")
  vtmrest { "pools/${name}":
    ensure   => $ensure,
    before   => Class[pulsevtm::purge],
    endpoint => "https://${ip}:${port}/api/tm/6.0/config/active",
    username => $user,
    password => $pass,
    content  => template('pulsevtm/pools.erb'),
    type     => 'application/json',
    internal => 'pools',
    failfast => $pulsevtm::failfast,
    debug    => $pulsevtm::debug,
  }

  if ( $purge ) {
    ensure_resource('file', "${purge_state_dir}/pools", {ensure => present})
    file_line { "pools/${name}":
      line => "pools/${name}",
      path => "${purge_state_dir}/pools",
    }
  }
}