Version information
This version is compatible with:
- Puppet Enterprise >=3.2.0 <4.0.0
- Puppet 3.x
This module has been deprecated by its author since Nov 20th 2018.
The author has suggested f5-f5 as its replacement.
This module is licensed for use with Puppet Enterprise. You may also evaluate this module for up to 90 days.Learn More
Start using this module
Documentation
#f5
####Table of Contents
- Overview
- Module Description - What the module does and why it is useful
- [Setup - The basics of getting started with f5(#setup)
- Usage - Configuration options and additional functionality
- Reference - An under-the-hood peek at what the module is doing and how
- Limitations - OS compatibility, etc.
- Development - Guide for contributing to the module
##Overview
The F5 module allows you to centralize the management of your F5 devices (running 11.0+) via many different types and providers. This module, and the current design of it, is to be deprecated shortly with the introduction of a new REST based module written from scratch. We have recently overhauled this module to work with Puppet 3+ and modern versions of Ruby, but the new module will be substantially different.
As a result of the new planned development this module has been only lightly tested and we welcome bug reports on any issues you find with it.
##Module Description
This module uses SOAP to manage F5 devices running 11.0+. It consists of nineteen resources covering everything from users to irules.
##Setup
###What f5 affects
- F5 device configuration.
- Puppet device configuration.
###Setup Requirements
As F5 devices cannot run Puppet natively we require the use of a proxy system. This system must be running Puppet and have the "Savon"(http://www.savonrb.com) Ruby gem installed on it for working with the SOAP api.
The following profile class would deploy an appropriate configuration as well as setup a cron job to run the F5 configuration once an hour.
class profile::f5_proxy(
$hostname = 'f5.puppetlabs.lan',
$username = 'admin',
$password = 'admin'
) {
include f5
f5::config { $hostname:
username => $username,
password => $password,
url => $hostname,
target => "${::settings::confdir}/device/${hostname}"
}
cron { "bigip-puppet-device-run":
command => "puppet device --deviceconfig ${::settings::confdir}/device/${hostname}",
minute => fqdn_rand(60),
}
}
Once you've run this on a proxy you can then create a class and apply it to a node with the name of the f5 (in the above example f5.puppetlabs.lan).
class profile:f5_users {
f5_user { 'test':
ensure => present,
password => {'is_encrypted' => 'false', 'password' => 'test'}
}
}
###Beginning with [Modulename]
To begin with you can simply call the types from the proxy system we set up earlier. You can run puppet resource directly.
$ FACTER_url=https://admin:admin@f5.puppetlabs.lan/ puppet resource f5_user
You can change a property by hand this way too.
$ FACTER_url=https://admin:admin@f5.puppetlabs.lan/ puppet resource f5_user test ensure=absent
##Usage
You can explore the providers and the options they allow by running puppet resource f5_x for each provider to see what's already on your F5 as a starting point. Beyond that all the parameters available for each resource can be found below.
##Reference
###Global
All resource names are required to be in the format of /Partition/name.
###f5_certificate
f5_certificate
can be used to manage SSL certificates on the F5.
####name
The name of the certificate to manage.
####content
The certificate content in PEM format. (sha1 fingerprint).
####real_content
The actual certificate content in PEM format.
####mode
The management mode of the certificate.
Valid options are: MANAGEMENT_MODE_DEFAULT, MANAGEMENT_MODE_WEBSERVER, MANAGEMENT_MODE_EM, MANAGEMENT_MODE_IQUERY, MANAGEMENT_MODE_IQUERY_BIG3D
###f5_external_class
f5_external_class
manages external classes (datagroups).
####name
The name of the external class to manage.
####file_format
The file format for the specified classes.
Valid options are: FILE_FORMAT_UNKNOWN, FILE_FORMAT_CSV
####file_mode
The file modes for the specified classes.
Valid options are: FILE_MODE_UNKNOWN, FILE_MODE_TYPE_READ, FILE_MODE_TYPE_READ_WRITE
####file_name
The file names for the specified classes.
####data_separator
The data seperator for the specified classes.
####type
The class types for the specified classes.
Valid options are: CLASS_TYPE_UNDEFINED, CLASS_TYPE_ADDRESS, CLASS_TYPE_STRING, CLASS_TYPE_VALUE
###f5_file
f5_file
manages arbitary files on the f5.
####path
The absolute filepath to a file on the F5.
####content
The contents of the file.
###f5_inet
f5_inet
manages the inet properties on the F5.
#####name
The BigIP hostname.
#####hostname
The BigIP hostname.
#####ntp_server_address
The NTP server address.
###f5_key
f5_key
manages security keys on the F5.
####name
The name of the key to manage.
####content
The certificate key in PEM format (sha1 fingerprint).
####real_content
Stores actual key PEM-formatted content.
####mode
The key management mode.
Valid options are: MANAGEMENT_MODE_DEFAULT, MANAGEMENT_MODE_WEBSERVER, MANAGEMENT_MODE_EM, MANAGEMENT_MODE_IQUERY, MANAGEMENT_MODE_IQUERY_BIG3D
###f5_monitor
####name
The name of the monitor to manage.
####is_directly_usable
Determines if the specified monitor templates can be used directly, or if a user-defined monitor based on each monitor must be created first before it can be used.
Valid options are: true (default), false
####is_read_only
Determines if the specified monitor templates are read-only. The user can only modify properties for read/write monitor templates.
Valid options are: true, false (default)
####manual_resume_state
The monitor templates' manual resume states. When enabled and a monitor has marked an object down, that object will not be marked up by the monitor, i.e. the object will be manually marked up.
Valid options are: STATE_DISABLED, STATE_ENABLED
####parent_template
The parent monitor templates from which the specified monitor templates are derived. A user-defined monitor template will get its defaults from its parent monitor template.
Default: ''
####template_destination
The destination IP:port values for the specified templates. NOTE: This should only be done when the monitor templates in 'template_names' have NOT been associated to any node addresses or pool members.
Default: ['ATYPE_STAR_ADDRESS_STAR_PORT', ':']
####template_integer_property
The integer property values of the specified monitor templates.
Default: { 'ITYPE_INTERVAL' => 5, 'ITYPE_TIMEOUT' => 16 }
####template_state
The monitor templates' enabled/disabled states. This will enable/disable all instances that use the specified templates. This serves as a quick and convenient method to enable/disable all instances, but if you want only to enable/disable a specific instance, use set_instance_enabled.
Valid options: STATE_DISABLED, STATE_ENABLED
####template_string_property
The string property values of the specified monitor templates.
####template_type
The template types of the specified monitor templates.
Valid options: TTYPE_UNSET, TTYPE_ICMP, TTYPE_TCP, TTYPE_TCP_ECHO, TTYPE_EXTERNAL, TTYPE_HTTP, TTYPE_HTTPS, TTYPE_NNTP, TTYPE_FTP, TTYPE_POP3, TTYPE_SMTP, TTYPE_MSSQL, TTYPE_GATEWAY, TTYPE_IMAP, TTYPE_RADIUS, TTYPE_LDAP, TTYPE_WMI, TTYPE_SNMP_DCA_BASE, TTYPE_SNMP_DCA, TTYPE_REAL_SERVER, TTYPE_UDP, TTYPE_NONE, TTYPE_ORACLE, TTYPE_SOAP, TTYPE_GATEWAY_ICMP, TTYPE_SIP, TTYPE_TCP_HALF_OPEN, TTYPE_SCRIPTED, TTYPE_WAP, TTYPE_RPC, TTYPE_SMB, TTYPE_SASP, TTYPE_MODULE_SCORE, TTYPE_FIREPASS, TTYPE_INBAND, TTYPE_RADIUS_ACCOUNTING, TTYPE_DIAMETER, TTYPE_VIRTUAL_LOCATION, TTYPE_MYSQL, TTYPE_POSTGRESQL
####template_transparent_mode
The monitor template transparent mode.
Valid options: true, false
###f5_node
Manage F5 nodes.
####name
The nodes hostname.
####connection_limit
The connection limits for the specified node addresses.
####dynamic_ratio
The dynamic ratios of a node addresses.
####addresses
The IP addresses of the specified node addresses.
####ratios
The ratios for the specified node addresses.
####session_enabled_state
The states that allows new sessions to be established for the specified node addresses.
Valid options: STATE_DISABLED, STATE_ENABLED
###f5_pool
Manage F5 pools.
####name
The name of the pool to manage.
####action_on_service_down
The action to take when the node goes down for the specified pools.
Valid options: SERVICE_DOWN_ACTION_NONE, SERVICE_DOWN_ACTION_RESET, SERVICE_DOWN_ACTION_DROP, SERVICE_DOWN_ACTION_RESELECT
####allow_nat_state
The states indicating whether NATs are allowed for the specified pool.
Valid options: STATE_DISABLED, STATE_ENABLED
####allow_snat_state
The states indicating whether SNATs are allowed for the specified pools.
Valid options: STATE_DISABLED, STATE_ENABLED
####client_ip_tos
The IP ToS values for client traffic for the specified pools.
####client_link_qos
The link QoS values for client traffic for the specified pools.
####gateway_failsafe_device
The gateway failsafe devices for the specified pools.
####lb_method
The load balancing methods for the specified pools.
Valid options: LB_METHOD_ROUND_ROBIN, LB_METHOD_RATIO_MEMBER, LB_METHOD_LEAST_CONNECTION_MEMBER, LB_METHOD_OBSERVED_MEMBER, LB_METHOD_PREDICTIVE_MEMBER, LB_METHOD_RATIO_NODE_ADDRESS, LB_METHOD_LEAST_CONNECTION_NODE_ADDRESS, LB_METHOD_FASTEST_NODE_ADDRESS, LB_METHOD_OBSERVED_NODE_ADDRESS, LB_METHOD_PREDICTIVE_NODE_ADDESS, LB_METHOD_DYNAMIC_RATIO, LB_METHOD_FASTEST_APP_RESPONSE, LB_METHOD_LEAST_SESSIONS, LB_METHOD_DYNAMIC_RATIO_MEMBER, LB_METHOD_L3_ADDR, LB_METHOD_UNKNOWN, LB_METHOD_WEIGHTED_LEAST_CONNECTION_MEMBER, LB_METHOD_WEIGHTED_LEAST_CONNECTION_NODE_ADDRESS, LB_METHOD_RATIO_SESSION, LB_METHOD_RATIO_LEAST_CONNECTION_MEMBER, LB_METHOD_RATIO_LEAST_CONNECTION_NODE_ADDRESS
####member
The list of pool members.
####minimum_active_member
The minimum active member counts for the specified pools.
####minimum_up_member
The minimum member counts that are required to be in the up state for the specified pools.
####minimum_up_member_action
The actions to be taken if the minimum number of members required to be UP for the specified pools is not met.
####minimum_up_member_enabled_state
The states indicating that the feature that requires a minimum number of members to be UP is enabled/disabled for the specified pools.
####monitor_association
The monitor associations for the specified pools, i.e. the monitor rules used by the pools. The pool monitor association should be specified as a hash consisting of the following keys:
{ 'monitor_templates' => [],
'quorum' => '0',
'type' => 'MONITOR_RULE_TYPE_AND_LIST' }
####server_ip_tos
The IP ToS values for server traffic for the specified pools.
####server_link_qos
The link QoS values for server traffic for the specified pools.
####simple_timeout
The simple timeouts for the specified pools.
####slow_ramp_time
The ramp-up time (in seconds) to gradually ramp up the load on newly added or freshly detected UP pool members.
###f5_profileclientssl
Manage F5 Client SSL profiles.
####name
The name of the client SSL profile to manage.
####certificate_file
The certificate filenames to be used by BIG-IP acting as an SSL server.
####key_file
The key filenames to be used by BIG-IP acting as an SSL server. If a full path is not specified, the file name is relative to /config/ssl/ssl.key."
####ca_file
The CA to use to validate client certificates.
####client_certificate_ca_file
The CA to use to validate client certificates.
####peer_certification_mode
The peer certification modes for the specified client SSL profiles.
####chain_file
The certificate chain filenames for the specified client SSL profiles.
###f5_profilepersistence
Manage the loadbalancer's persistence profile.
####name
The persistence profile name.
####across_pool_state
The states to indicate whether persistence entries added under this profile are available across pools.
####across_service_state
The states to indicate whether persistence entries added under this profile are available across services.
####across_virtual_state
The states to indicate whether persistence entries added under this profile are available across virtuals.
####cookie_expiration
The cookie expiration in seconds for the specified Persistence profiles. Applicable when peristence mode is PERSISTENCE_MODE_COOKIE.
####cookie_hash_length
The cookie hash lengths for the specified profiles. Applicable when peristence mode is PERSISTENCE_MODE_COOKIE, and cookie persistence method is COOKIE_PERSISTENCE_METHOD_HASH.
####cookie_hash_offset
The cookie hash offsets for the specified profiles. Applicable when peristence mode is PERSISTENCE_MODE_COOKIE, and cookie persistence method is COOKIE_PERSISTENCE_METHOD_HASH
####cookie_name
The cookie names for the specified Persistence profiles. Applicable when peristence mode is PERSISTENCE_MODE_COOKIE.
####cookie_persistence_method
The cookie persistence methods to be used when in cookie persistence mode. Applicable when peristence mode is PERSISTENCE_MODE_COOKIE.
####default_profile
The names of the default profiles from which the specified profiles will derive default values for its attributes.
####description
The descriptions for a set of persistence profiles.
####ending_hash_pattern
The pattern marking the end of the section of payload data whose hashed value is used for the persistence value for a set of persistence profiles. This only returns useful values if the persistence mode is PERSISTENCE_MODE_HASH and the hash method is PERSISTENCE_HASH_CARP.
####hash_length
The length of payload data whose hashed value is used for the persistence value for a set of persistence profiles. This only returns useful values if the persistence mode is PERSISTENCE_MODE_HASH and the hash method is PERSISTENCE_HASH_CARP.
####hash_method
The hash method used to generate the persistence values for a set of persistence profiles. This only returns useful values if the persistence mode is PERSISTENCE_MODE_HASH.
####hash_more_data_state
The enabled state whether to perform another hash operation after the current hash operation completes for a set of persistence profiles. This only returns useful values if the persistence mode is PERSISTENCE_MODE_HASH and the hash method is PERSISTENCE_HASH_CARP.
####hash_offset
The offset to the start of the payload data whose hashed value is used as the persistence value for a set of persistence profiles. This only returns useful values if the persistence mode is PERSISTENCE_MODE_HASH and the hash method is PERSISTENCE_HASH_CARP.
####map_proxy_address
The proxy map address used when map proxies state is enabled on source address persistence mode.
####map_proxy_class
The proxy map IP address class/datagroup name used when map known proxies state is enabled on source address persistence mode.
####map_proxy_state
The states to indicate whether to map known proxies when the persistence mode is source address affinity.
####mask
The masks used in either simple or sticky persistence mode.
####maximum_hash_buffer_size
The maximum size of the buffer used to hold the section of the payload data whose hashed value is used for the persistence value for a set of persistence values. This only returns useful values if the persistence mode is PERSISTENCE_MODE_HASH and the hash method is PERSISTENCE_HASH_CARP.
####mirror_state
The mirror states for the specified Persistence profiles.
####msrdp_without_session_directory_state
The states to indicate whether MS terminal services have been configured without a session directory for the specified Persistence profiles.
####override_connection_limit_state
The state indicating, when enabled, that the pool member connection limits are not enforced for persisted clients.
####persistence_mode
The persistence modes for the specified Persistence profiles.
####rule
The UIE rules for the specified Persistence profiles. Applicable when peristence mode is PERSISTENCE_MODE_UIE.
####sip_info
The sip_info headers for the specified Persistence profiles. Applicable when peristence mode is PERSISTENCE_MODE_SIP.
####starting_hash_pattern
The pattern marking the start of the section of payload data whose hashed value is used for the persistence value for a set of persistence profiles. This only returns useful values if the persistence mode is PERSISTENCE_MODE_HASH and the hash method is PERSISTENCE_HASH_CARP.
####timeout
The timeout for the specified Persistence profiles. The number of seconds to timeout a persistence entry.
###f5_route
Manage static routes within the F5.
####name
The name of the routing object to manage.
####description
Description of the route.
####destination
Destination of the route
####netmask
Netmask of the route.
####mtu
MTU of the route
####gateway
Gateway of the route
####pool
Pool to route to.
####vlan
VLAN to route to.
###f5_rule
####name
The name of the rule to manage.
####definition
The rule definition.
###f5_snat
#####name
The name of the snat to manage.
#####connection_mirror_state
The connection mirror states for a specified SNATs.
Valid options are: STATE_DISABLED, STATE_ENABLED
#####original_address
The list of original client addresses used to filter the traffic to the SNATs."
#####source_port_behavior
The source port behavior for the specified SNATs.
Valid options are: SOURCE_PORT_PRESERVE, SOURCE_PORT_PRESERVE_STRICT, SOURCE_PORT_CHANGE
#####translation_target
The translation targets for the specified SNATs. If the target type is SNAT_TYPE_AUTOMAP, then the translation object should be empty.
#####vlan
The list of VLANs on which access to the specified SNATs is disabled/enabled.
###f5_snatpool
####name
The name of the snatpool to manage.
####membership
Membes of the snat pool.
####member
The list of members belonging to the specified SNAT pools.
###f5_snattranslationaddress
####name
The snat translation address to manage.
####addresses
The IP addresses of the specified SNAT translation address/
####arp_state
The ARP states for the specified translation SNAT address.
Valid options are: STATE_DISABLED, STATE_ENABLED
####connection_limit
The connection limits of the specified original SNAT translation address.
####enabled_state
The state of a SNAT translation address.
Valid options are: STATE_DISABLED, STATE_ENABLED
####ip_timeout
The IP idle timeouts of the specified SNAT translation address.
####tcp_timeout
The TCP idle timeouts of the specified SNAT translation address.
####udp_timeout
The UDP idle timeouts of the specified SNAT translation addresses.
###f5_snmpconfiguration
WARNING: The backend API for snmpconfiguration is extremely brittle and any mistaken input can easily crash the SOAP handler.
####name
The name to show via SNMP.
####access_info
Creates access maps from group/securitymodel/security level to a view.
####agent_group_id
Sets the agent group id.
####agent_interface
Sets the interface information for the agent
####agent_listen_address
Sets a list of agent listen addresses. This makes the agent listen on the specified list of sockets instead of the default port, which is 161.
####agent_trap_state
Sets the authentication trap enabled state.
####agent_user_id
The agent user id.
####auth_trap_state
The auth trap state.
####check_disk
Create a disk check instance.
####check_file
Create a file check instance.
####check_load
Create a load check instance.
####check_process
Create a process check instance.
####client_access
Creates a list of client access controls. These are stored in the /etc/hosts.allow file.
####community_to_security_info
Creates mappings from a source/community pair to security names. The first source/community combination that matches the incoming packet is selected.
####create_user
Creates SNMPV3 users.
####engine_id
Sets the snmp engine identifier.
####exec
Creates a program instance.
####exec_fix
Sets an exec fix instance that registers a command that knows how to fix errors with the given program.
####generic_traps_v2
Creates generic traps that allows any type of trap destination to be specified with any version of SNMP.
####group_info
Creates mappings from securitymodel/securityname to group.
####ignore_disk
Adds disk devices to the ignore list.
####pass_through
Creates a list of pass through controls.
####pass_through_persist
Creates a list of persist pass through controls.
####process_fix
Sets a process fix instance that registers a command that knows how to fix errors with the given process.
####proxy
Creates a list of snmp proxies.
####readonly_community
Creates read-only communities that can be used to access the agent.
####readonly_user
Creates SNMPv3 USM read-only users in the VACM access configuration tables.
####readwrite_community
Creates read-write communities that can be used to access the agent.
####readwrite_user
Creates SNMPv3 USM read-write users in the VACM access configuration tables.
####system_information
Sets the system location, system contact, and system name for the agent.
####trap_community
Sets the trap community string.
####view_info
Creates named views.
###f5_string_class
####name
The name of the string class to manage.
####members
The string class members.
###f5_user
####name
The user name to manage.
####user_permission
The list of user permissions.
####description
The description for the specified user.
####fullname
The full name for the specified user.
####password
The password for the specified user.
####login_shell
The login shell for the specified user.
###f5_virtualserver
####name
The virtual server name.
####clone_pool
The virtual server clone pool.
####cmp_enabled_state
The virtual server cmp enable state.
Valid options are: STATE_DISABLED, STATE_ENABLED
####connection_limit
The virtual server connection limit.
####connection_mirror_state
The virtual server connection limit.
Valid options are: STATE_DISABLED, STATE_ENABLED
####default_pool_name
The virtual server default pool name.
####destination
The virtual server destination virtual address and port.
####enabled_state
The virtual server state.
####fallback_persistence_profile
The virtual server fallback persistent profile.
####gtm_score
The virtual server gtm score.
####last_hop_pool
The virtual server lasnat64 state.
####nat64_state
The virtual server nat64 state.
Valid options are: STATE_DISABLED, STATE_ENABLED
####protocol
The virtual server protocol.
Valid options are: PROTOCOL_ANY, PROTOCOL_IPV6, PROTOCOL_ROUTING, PROTOCOL_NONE, PROTOCOL_FRAGMENT, PROTOCOL_DSTOPTS, PROTOCOL_TCP, PROTOCOL_UDP, PROTOCOL_ICMP, PROTOCOL_ICMPV6, PROTOCOL_OSPF, PROTOCOL_SCTP
####rate_class
The virtual server rate class.
####persistence_profile
The virtual server persistence profiles.
####profile
The virtual server profiles.
####rule
The virtual server rules. The rule order isn't enforced since F5 API does not provide ability to reorder rules, use irule priority to dictate rule processing order
####snat_type
The virtual server snat type.
Valid options are: SNAT_TYPE_NONE, SNAT_TYPE_TRANSLATION_ADDRESS, SNAT_TYPE_SNATPOOL, SNAT_TYPE_AUTOMAP
####snat_pool
Virtual server snat_pool.
####source_port_behavior
The virtual server source port behavior.
Valid options are: SOURCE_PORT_PRESERVE, SOURCE_PORT_PRESERVE_STRICT, SOURCE_PORT_CHANGE
####translate_address_state
The virtual server translate address state.
Valid options are: STATE_DISABLED, STATE_ENABLED
####translate_port_state
The virtual server translate port state.
Valid options are: STATE_DISABLED, STATE_ENABLED
####type
The virtual server type.
Valid options are: RESOURCE_TYPE_POOL, RESOURCE_TYPE_IP_FORWARDING, RESOURCE_TYPE_L2_FORWARDING, RESOURCE_TYPE_REJECT, RESOURCE_TYPE_FAST_L4, RESOURCE_TYPE_FAST_HTTP, RESOURCE_TYPE_STATELESS
####vlan
The virtual server vlan.
####wildmask
The virtual server wildmask.
##Limitations
- F5 v11.0+
- Nori 2.4
- Savon X
##Development
Puppet Labs modules on the Puppet Forge are open projects, and community contributions are essential for keeping them great. We can’t access the huge number of platforms and myriad of hardware, software, and deployment configurations that Puppet is intended to serve.
We want to keep it as easy as possible to contribute changes so that our modules work in your environment. There are a few guidelines that we need contributors to follow so that we can have a chance of keeping on top of things.
You can read the complete module contribution guide on the Puppet Labs wiki.
Types in this module release
##2014-07-29 - Release 0.6.1 ###Summary
This release fixes the validation for f5node{} to allow 's in the name.
##2014-07-24 - Release 0.6.0 ###Summary
This release fixes a couple of minor bugs, makes sure addresses is able to be managed within nodes, and adds two new providers to manage vlans and self ip.
Big thanks to Drew Blessing for his work on those!
##2014-07-15 - Release 0.5.2 ###Summary
Released with a changed metadata.json to allow the module to be upgraded or uninstalled.
##2014-05-16 - Release 0.5.1 ###Summary
Released with just metadata changes to make it easier to find on the forge.
##2014-05-14 - Release 0.5.0 ###Summary
This module has been almost completely rewritten internally to use Savon for SOAP calls. There have been significant changes to every single provider.
0.3.1 2012-02-14 Nan Liu nan@puppetlabs.com
- f5_external_class supports refresh of external data.
- Fix bug with f5_virtualserver profile_persistence attribute.
0.3.0 2012-01-30 Nan Liu nan@puppetlabs.com
- Add F5 file type/provider support.
- Add F5 profilepersistence type/provider support.
- Add F5 datagroup string_class, external_class support.
- Add spec tests for most f5 types.
- Fix bug with f5 key/certificates where key/cert are bundled in same PEM.
- Fix bug with f5 cert bundles.
- Fix some facts value that were inaccessible.
- Fix F5_profileclientssl iniitialzing f5 device during compilation.
- Update f5::config define type and template to support partition.
- Updatd type documentation to match iControl API documentation.
0.2.0 2011-10-20 Nan Liu nan@puppetlabs.com
- Add F5 partition support.
- Add F5 monitor type/provider support.
- Add contributor documentation.
- Expand F5 virtual server type attributes.
- Improve F5 virtual server provider behavior.
- Change F5 pool monitor_association to a hash instead of array.
0.1.0 2011-9-15 Nan Liu nan@puppetlabs.com
- Initial release.
Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright 2013 Puppet Labs Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.