Version information
This version is compatible with:
- Puppet Enterprise 2023.8.x, 2023.7.x, 2023.6.x, 2023.5.x, 2023.4.x, 2023.3.x, 2023.2.x, 2023.1.x, 2023.0.x, 2021.7.x, 2021.6.x, 2021.5.x, 2021.4.x, 2021.3.x, 2021.2.x, 2021.1.x, 2021.0.x
- Puppet >= 7.0.0 < 9.0.0
- , , , , , , , , , , , ,
Start using this module
Add this module to your Puppetfile:
mod 'puppetlabs-stdlib', '9.7.0'
Learn more about managing modules with a PuppetfileDocumentation
stdlib
Table of Contents
Overview
This module provides a standard library of resources for Puppet modules.
Module Description
Puppet modules make heavy use of this standard library. The stdlib module adds the following resources to Puppet:
- Stages
- Facts
- Functions
- Defined types
- Data types
- Providers
Note: As of version 3.7, Puppet Enterprise no longer includes the stdlib module. If you're running Puppet Enterprise, you should install the most recent release of stdlib for compatibility with Puppet modules.
Setup
Install the stdlib module to add the functions, facts, and resources of this standard library to Puppet.
If you are authoring a module that depends on stdlib, be sure to specify dependencies in your metadata.json.
Usage
Most of stdlib's features are automatically loaded by Puppet. To use standardized run stages in Puppet, declare this class in your manifest with include stdlib
.
When declared, stdlib declares all other classes in the module. This currently consists of stdlib::manage
and stdlib::stages
.
The stdlib::stages
class declares various run stages for deploying infrastructure, language runtimes, and application layers. The high level stages are (in order):
- setup
- main
- runtime
- setup_infra
- deploy_infra
- setup_app
- deploy_app
- deploy
Sample usage:
node default {
include stdlib
class { java: stage => 'runtime' }
}
The stdlib::manage
class provides an interface for generating trivial resource declarations via the create_resources
parameter. Depending on your usage, you may want to set hiera
's lookup_options
for the stdlib::manage::create_resources:
element.
---
stdlib::manage::create_resources:
file:
/etc/somefile:
ensure: file
owner: root
group: root
package:
badpackage:
ensure: absent
Reference
For information on the classes and types, see the REFERENCE.md.
Data types
Stdlib::Absolutepath
A strict absolute path type. Uses a variant of Unixpath and Windowspath types.
Acceptable input examples:
/var/log
/usr2/username/bin:/usr/local/bin:/usr/bin:.
C:\\WINDOWS\\System32
Unacceptable input example:
../relative_path
Stdlib::Ensure::Service
Matches acceptable ensure values for service resources.
Acceptable input examples:
stopped
running
Unacceptable input example:
true
false
Stdlib::HTTPSUrl
Matches HTTPS URLs. It is a case insensitive match.
Acceptable input example:
https://hello.com
HTTPS://HELLO.COM
Unacceptable input example:
httds://notquiteright.org`
Stdlib::HTTPUrl
Matches both HTTPS and HTTP URLs. It is a case insensitive match.
Acceptable input example:
https://hello.com
http://hello.com
HTTP://HELLO.COM
Unacceptable input example:
httds://notquiteright.org
Stdlib::MAC
Matches MAC addresses defined in RFC5342.
Stdlib::Unixpath
Matches absolute paths on Unix operating systems.
Acceptable input example:
/usr2/username/bin:/usr/local/bin:/usr/bin:
/var/tmp
Unacceptable input example:
C:/whatever
some/path
../some/other/path
Stdlib::Filemode
Matches octal file modes consisting of one to four numbers and symbolic file modes.
Acceptable input examples:
0644
1777
a=Xr,g=w
Unacceptable input examples:
x=r,a=wx
0999
Stdlib::Windowspath
Matches paths on Windows operating systems.
Acceptable input example:
C:\\WINDOWS\\System32
C:\\
\\\\host\\windows
Valid values: A windows filepath.
Stdlib::Filesource
Matches paths valid values for the source parameter of the Puppet file type.
Acceptable input example:
http://example.com
https://example.com
file:///hello/bla
Valid values: A filepath.
Stdlib::Fqdn
Matches paths on fully qualified domain name.
Acceptable input example:
localhost
example.com
www.example.com
Valid values: Domain name of a server.
Stdlib::Host
Matches a valid host which could be a valid ipv4, ipv6 or fqdn.
Acceptable input example:
localhost
www.example.com
192.0.2.1
Valid values: An IP address or domain name.
Stdlib::Port
Matches a valid TCP/UDP Port number.
Acceptable input examples:
80
443
65000
Valid values: An Integer.
Stdlib::Port::Privileged
Matches a valid TCP/UDP Privileged port i.e. < 1024.
Acceptable input examples:
80
443
1023
Valid values: A number less than 1024.
Stdlib::Port::Unprivileged
Matches a valid TCP/UDP Privileged port i.e. >= 1024.
Acceptable input examples:
1024
1337
65000
Valid values: A number more than or equal to 1024.
Stdlib::Base32
Matches paths a valid base32 string.
Acceptable input example:
ASDASDDASD3453453
asdasddasd3453453=
ASDASDDASD3453453==
Valid values: A base32 string.
Stdlib::Base64
Matches paths a valid base64 string.
Acceptable input example:
asdasdASDSADA342386832/746+=
asdasdASDSADA34238683274/6+
asdasdASDSADA3423868327/46+==
Valid values: A base64 string.
Stdlib::Ipv4
This type is no longer available. To make use of this functionality, use Stdlib::IP::Address::V4.
Stdlib::Ipv6
This type is no longer available. To make use of this functionality, use Stdlib::IP::Address::V6.
Stdlib::Ip_address
This type is no longer available. To make use of this functionality, use Stdlib::IP::Address
Stdlib::IP::Address
Matches any IP address, including both IPv4 and IPv6 addresses. It will match them either with or without an address prefix as used in CIDR format IPv4 addresses.
Examples:
'127.0.0.1' =~ Stdlib::IP::Address # true
'10.1.240.4/24' =~ Stdlib::IP::Address # true
'52.10.10.141' =~ Stdlib::IP::Address # true
'192.168.1' =~ Stdlib::IP::Address # false
'FEDC:BA98:7654:3210:FEDC:BA98:7654:3210' =~ Stdlib::IP::Address # true
'FF01:0:0:0:0:0:0:101' =~ Stdlib::IP::Address # true
Stdlib::IP::Address::V4
Match any string consisting of an IPv4 address in the quad-dotted decimal format, with or without a CIDR prefix. It will not match any abbreviated form (for example, 192.168.1) because these are poorly documented and inconsistently supported.
Examples:
'127.0.0.1' =~ Stdlib::IP::Address::V4 # true
'10.1.240.4/24' =~ Stdlib::IP::Address::V4 # true
'192.168.1' =~ Stdlib::IP::Address::V4 # false
'FEDC:BA98:7654:3210:FEDC:BA98:7654:3210' =~ Stdlib::IP::Address::V4 # false
'12AB::CD30:192.168.0.1' =~ Stdlib::IP::Address::V4 # false
Valid values: An IPv4 address.
Stdlib::IP::Address::V6
Match any string consisting of an IPv6 address in any of the documented formats in RFC 2373, with or without an address prefix.
Examples:
'127.0.0.1' =~ Stdlib::IP::Address::V6 # false
'10.1.240.4/24' =~ Stdlib::IP::Address::V6 # false
'FEDC:BA98:7654:3210:FEDC:BA98:7654:3210' =~ Stdlib::IP::Address::V6 # true
'FF01:0:0:0:0:0:0:101' =~ Stdlib::IP::Address::V6 # true
'FF01::101' =~ Stdlib::IP::Address::V6 # true
Valid values: An IPv6 address.
Stdlib::IP::Address::Nosubnet
Match the same things as the Stdlib::IP::Address
alias, except it will not match an address that includes an address prefix (for example, it will match '192.168.0.6' but not '192.168.0.6/24').
Valid values: An IP address with no subnet.
Stdlib::IP::Address::V4::CIDR
Match an IPv4 address in the CIDR format. It will only match if the address contains an address prefix (for example, it will match '192.168.0.6/24' but not '192.168.0.6').
Valid values: An IPv4 address with a CIDR provided eg: '192.186.8.101/105'. This will match anything inclusive of '192.186.8.101' to '192.168.8.105'.
Stdlib::IP::Address::V4::Nosubnet
Match an IPv4 address only if the address does not contain an address prefix (for example, it will match '192.168.0.6' but not '192.168.0.6/24').
Valid values: An IPv4 address with no subnet.
Stdlib::IP::Address::V6::Full
Match an IPv6 address formatted in the "preferred form" as documented in section 2.2 of RFC 2373, with or without an address prefix as documented in section 2.3 of RFC 2373.
Stdlib::IP::Address::V6::Alternate
Match an IPv6 address formatted in the "alternative form" allowing for representing the last two 16-bit pieces of the address with a quad-dotted decimal, as documented in section 2.2.1 of RFC 2373. It will match addresses with or without an address prefix as documented in section 2.3 of RFC 2373.
Stdlib::IP::Address::V6::Compressed
Match an IPv6 address which may contain ::
used to compress zeros as documented in section 2.2.2 of RFC 2373. It will match addresses with or without an address prefix as documented in section 2.3 of RFC 2373.
Stdlib::IP::Address::V6::Nosubnet
Alias to allow Stdlib::IP::Address::V6::Nosubnet::Full
, Stdlib::IP::Address::V6::Nosubnet::Alternate
and Stdlib::IP::Address::V6::Nosubnet::Compressed
.
Stdlib::IP::Address::V6::Nosubnet::Full
Match an IPv6 address formatted in the "preferred form" as documented in section 2.2 of RFC 2373. It will not match addresses with address prefix as documented in section 2.3 of RFC 2373.
Stdlib::IP::Address::V6::Nosubnet::Alternate
Match an IPv6 address formatted in the "alternative form" allowing for representing the last two 16-bit pieces of the address with a quad-dotted decimal, as documented in section 2.2.1 of RFC 2373. It will only match addresses without an address prefix as documented in section 2.3 of RFC 2373.
Stdlib::IP::Address::V6::Nosubnet::Compressed
Match an IPv6 address which may contain ::
used to compress zeros as documented in section 2.2.2 of RFC 2373. It will only match addresses without an address prefix as documented in section 2.3 of RFC 2373.
Stdlib::IP::Address::V6::CIDR
Match an IPv6 address in the CIDR format. It will only match if the address contains an address prefix (for example, it will match 'FF01:0:0:0:0:0:0:101/32', 'FF01::101/60', '::/0', but not 'FF01:0:0:0:0:0:0:101', 'FF01::101', '::').
Stdlib::ObjectStore
Matches cloud object store uris.
Acceptable input example:
s3://mybucket/path/to/file
gs://bucket/file
Valid values: cloud object store uris.
Stdlib::ObjectStore::GSUri
Matches Google Cloud object store uris.
Acceptable input example:
gs://bucket/file
gs://bucket/path/to/file
Valid values: Google Cloud object store uris.
Stdlib::ObjectStore::S3Uri
Matches Amazon Web Services S3 object store uris.
Acceptable input example:
s3://bucket/file
s3://bucket/path/to/file
Valid values: Amazon Web Services S3 object store uris.
Stdlib::Syslogfacility
An enum that defines all syslog facilities defined in RFC5424. This is based on work in the voxpupuli/nrpe module.
Facts
package_provider
Returns the default provider Puppet uses to manage packages on this system.
is_pe
Returns whether Puppet Enterprise is installed. Does not report anything on platforms newer than PE 3.x.
pe_version
Returns the version of Puppet Enterprise installed. Does not report anything on platforms newer than PE 3.x.
pe_major_version
Returns the major version Puppet Enterprise that is installed. Does not report anything on platforms newer than PE 3.x.
pe_minor_version
Returns the minor version of Puppet Enterprise that is installed. Does not report anything on platforms newer than PE 3.x.
pe_patch_version
Returns the patch version of Puppet Enterprise that is installed.
puppet_vardir
Returns the value of the Puppet vardir setting for the node running Puppet or Puppet agent.
puppet_environmentpath
Returns the value of the Puppet environment path settings for the node running Puppet or Puppet agent.
puppet_server
Returns the Puppet agent's server
value, which is the hostname of the Puppet server with which the agent should communicate.
root_home
Determines the root home directory.
Determines the root home directory, which depends on your operating system. Generally this is '/root'.
service_provider
Returns the default provider Puppet uses to manage services on this system
Limitations
As of Puppet Enterprise 3.7, the stdlib module is no longer included in PE. PE users should install the most recent release of stdlib for compatibility with Puppet modules.
For an extensive list of supported operating systems, see metadata.json
License
This codebase is licensed under the Apache2.0 licensing, however due to the nature of the codebase the open source dependencies may also use a combination of AGPL, BSD-2, BSD-3, GPL2.0, LGPL, MIT and MPL Licensing.
Development
Puppet 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 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. For more information, see our module contribution guide.
To report or research a bug with any part of this module, please go to https://github.com/puppetlabs/puppetlabs-stdlib/issues.
Contributors
The list of contributors can be found at: https://github.com/puppetlabs/puppetlabs-stdlib/graphs/contributors.
Reference
Table of Contents
Classes
stdlib
: This module manages stdlib.stdlib::manage
: A simple place to define trivial resourcesstdlib::stages
: This class manages a standard set of run stages for Puppet. It is managed by the stdlib class, and should not be declared independently.
Resource types
anchor
: A simple resource type intended to be used as an anchor in a composite class.file_line
: Ensures that a given line is contained within a file.
Functions
any2array
: This converts any object to an array containing that object.any2bool
: Converts 'anything' to a boolean.assert_private
: Sets the current class or definition as private.base64
: Base64 encode or decode a string based on the command and the string submittedbasename
: Strips directory (and optional suffix) from a filenamebatch_escape
: DEPRECATED. Use the namespaced functionstdlib::batch_escape
instead.bool2num
: Converts a boolean to a number.bool2str
: Converts a boolean to a string using optionally supplied arguments.clamp
: Keeps value within the range [Min, X, Max] by sort based on integer value (parameter order doesn't matter).concat
: Appends the contents of multiple arrays into array 1.convert_base
: Converts a given integer or base 10 string representing an integer to a specified base, as a string.count
: Counts the number of elements in array.deep_merge
: Recursively merges two or more hashes together and returns the resulting hash.defined_with_params
: Takes a resource reference and an optional hash of attributes.delete
: Deletes all instances of a given element from an array, substring from a string, or key from a hash.delete_at
: Deletes a determined indexed value from an array.delete_regex
: Deletes all instances of a given element that match a regular expression from an array or key from a hash.delete_undef_values
: Returns a copy of input hash or array with all undefs deleted.delete_values
: Deletes all instances of a given value from a hash.deprecation
: Function to print deprecation warnings, Logs a warning once for a given key.difference
: This function returns the difference between two arrays.dirname
: Returns the dirname of a path.dos2unix
: Returns the Unix version of the given string.enclose_ipv6
: Takes an array of ip addresses and encloses the ipv6 addresses with square brackets.ensure_packages
: DEPRECATED. Use the namespaced functionstdlib::ensure_packages
instead.ensure_resource
: Takes a resource type, title, and a list of attributes that describe a resource.ensure_resources
: Takes a resource type, title (only hash), and a list of attributes that describe a resource.fact
: Digs into the facts hash using dot-notationfqdn_rand_string
: DEPRECATED. Use the namespaced functionstdlib::fqdn_rand_string
instead.fqdn_rotate
: DEPRECATED. Use the namespaced functionstdlib::fqdn_rotate
instead.fqdn_uuid
: Returns a RFC 4122 valid version 5 UUID based on an FQDN string under the DNS namespaceget_module_path
: Returns the absolute path of the specified module for the current environment.getparam
: Returns the value of a resource's parameter.glob
: Uses same patterns as Dir#glob.grep
: This function searches through an array and returns any elements that match the provided regular expression.has_interface_with
: DEPRECATED. Use the namespaced functionstdlib::has_interface_with
instead.has_interface_with
: Returns boolean based on kind and value.has_ip_address
: Returns true if the client has the requested IP address on some interface.has_ip_network
: Returns true if the client has an IP address within the requested network.intersection
: This function returns an array of the intersection of two.is_a
: Boolean check to determine whether a variable is of a given data type. This is equivalent to the=~
type checks.join_keys_to_values
: This function joins each key of a hash to that key's corresponding value with a separator.load_module_metadata
: This function loads the metadata of a given module.loadjson
: Load a JSON file containing an array, string, or hash, and return the data in the corresponding native data type.loadyaml
: Load a YAML file containing an array, string, or hash, and return the data in the corresponding native data type.member
: This function determines if a variable is a member of an array.merge
: DEPRECATED. Use the namespaced functionstdlib::merge
instead.merge
: Merges two or more hashes together and returns the resulting hash.num2bool
: This function converts a number or a string representation of a number into a true boolean.os_version_gte
: DEPRECATED. Use the namespaced functionstdlib::os_version_gte
instead.parsehocon
: DEPRECATED. Use the namespaced functionstdlib::parsehocon
instead.parsejson
: This function accepts JSON as a string and converts it into the correct Puppet structure.parsepson
: Deprecated: Starting Puppet 8, we no longer natively support PSON usage. This function should be removed once we stop supporting Puppet 7.
This function accepts PSON, a Puppet variant of JSON, as a string and converts it into the correct Puppet structure
parseyaml
: This function accepts YAML as a string and converts it into the correct Puppet structure.pick
: This function will return the first value in a list of values that is not undefined or an empty string.pick_default
: This function will return the first value in a list of values that is not undefined or an empty string.powershell_escape
: DEPRECATED. Use the namespaced functionstdlib::powershell_escape
instead.prefix
: This function applies a prefix to all elements in an array or a hash.pry
: This function invokes a pry debugging session in the current scope object.pw_hash
: Hashes a password using the crypt function. Provides a hash usable on most POSIX systems.range
: When given range in the form of (start, stop) it will extrapolate a range as an array.regexpescape
: Regexp escape a string or array of strings. Requires either a single string or an array as an input.reject
: This function searches through an array and rejects all elements that match the provided regular expression.reverse
: Reverses the order of a string or array.seeded_rand
: DEPRECATED. Use the namespaced functionstdlib::seeded_rand
instead.seeded_rand_string
: DEPRECATED. Use the namespaced functionstdlib::seeded_rand_string
instead.shell_escape
: DEPRECATED. Use the namespaced functionstdlib::shell_escape
instead.shell_join
: Builds a command line string from the given array of strings. Each array item is escaped for Bourne shell. All items are then joined togethershell_split
: Splits a string into an array of tokens in the same way the Bourne shell does.shuffle
: @summary Randomizes the order of a string or array elements.squeeze
: Returns a new string where runs of the same character that occur in this set are replaced by a single character.stdlib::batch_escape
: Escapes a string so that it can be safely used in a batch shell command line.stdlib::crc32
: Run a CRC32 calculation against a given value.stdlib::deferrable_epp
: This function returns either a rendered template or a deferred function to render at runtime. If any of the values in the variables hash arestdlib::end_with
: Returns true if str ends with one of the prefixes given. Each of the prefixes should be a String.stdlib::ensure
: function to cast ensure parameter to resource specific valuestdlib::ensure_packages
: Takes a list of packages and only installs them if they don't already exist.stdlib::extname
: Returns the Extension (the Portion of Filename in Path starting from the last Period).stdlib::fqdn_rand_string
: Generates a random alphanumeric string. Combining the$fqdn
fact and an optional seed for repeatable randomness.stdlib::fqdn_rotate
: Rotates an array or string a random number of times, combining thefqdn
fact and an optional seed for repeatable randomness.stdlib::has_function
: Returns whether the Puppet runtime has access to a given function.stdlib::has_interface_with
: Returns boolean based on network interfaces present and their attribute values.stdlib::ip_in_range
: Returns true if the ipaddress is within the given CIDRsstdlib::merge
: Merges two or more hashes together or hashes resulting from iteration, and returns the resulting hash.stdlib::nested_values
: Get list of nested values from given hash This function will return list of nested Hash values and returns list of values in form of Arraystdlib::os_version_gte
: Checks if the OS version is at least a certain version.stdlib::parsehocon
: This function accepts HOCON as a string and converts it into the correct Puppet structurestdlib::powershell_escape
: Escapes a string so that it can be safely used in a PowerShell command line.stdlib::seeded_rand
: Generates a random whole number greater than or equal to 0 and less than max, using the value of seed for repeatable randomness.stdlib::seeded_rand_string
: Generates a consistent random string of specific length based on provided seed.stdlib::sha256
: Run a SHA256 calculation against a given value.stdlib::shell_escape
: Escapes a string so that it can be safely used in a Bourne shell command line.stdlib::sort_by
: Sort an Array, Hash or String by mapping values through a given block.stdlib::start_with
: Returns true if str starts with one of the prefixes given. Each of the prefixes should be a String.stdlib::str2resource
: This converts a string to a puppet resource.stdlib::time
: This function is deprecated. It implements the functionality of the original non-namespaced stdlibtime
function.stdlib::to_json
: Convert a data structure and output to JSONstdlib::to_json_pretty
: Convert data structure and output to pretty JSONstdlib::to_python
: Convert an object into a String containing its Python representationstdlib::to_ruby
: Convert an object into a String containing its Ruby representationstdlib::to_toml
: Convert a data structure and output to TOML.stdlib::to_yaml
: Convert a data structure and output it as YAMLstdlib::type_of
: Returns the type of the passed value.stdlib::validate_domain_name
: Validate that all values passed are syntactically correct domain names. Fail compilation if any value fails this check.stdlib::validate_email_address
: Validate that all values passed are valid email addresses. Fail compilation if any value fails this check.stdlib::xml_encode
: Encode strings for XML filesstr2bool
: This converts a string to a boolean.str2saltedpbkdf2
: Convert a string into a salted SHA512 PBKDF2 password hash like requred for OS X / macOS 10.8+str2saltedsha512
: This converts a string to a salted-SHA512 password hash (which is used for OS X versions >= 10.7).suffix
: This function applies a suffix to all elements in an array, or to the keys in a hash.swapcase
: This function will swap the existing case of a string.time
: DEPRECATED. Use the native Puppet fuctionality instead of this function. egInteger(Timestamp().strftime('%s'))
to_bytes
: Converts the argument into bytes, for example 4 kB becomes 4096.to_json
: DEPRECATED. Use the namespaced functionstdlib::to_json
instead.to_json_pretty
: DEPRECATED. Use the namespaced functionstdlib::to_json_pretty
instead.to_python
: DEPRECATED. Use the namespaced functionstdlib::to_python
instead.to_ruby
: DEPRECATED. Use the namespaced functionstdlib::to_ruby
instead.to_toml
: DEPRECATED. Use the namespaced functionstdlib::to_toml
instead.to_yaml
: DEPRECATED. Use the namespaced functionstdlib::to_yaml
instead.type_of
: DEPRECATED. Use the namespaced functionstdlib::type_of
instead.union
: This function returns a union of two or more arrays.unix2dos
: Returns the DOS version of the given string.uriescape
: Urlencodes a string or array of strings. Requires either a single string or an array as an input.validate_augeas
: Perform validation of a string using an Augeas lensvalidate_cmd
: Perform validation of a string with an external command.validate_domain_name
: DEPRECATED. Use the namespaced functionstdlib::validate_domain_name
instead.validate_email_address
: DEPRECATED. Use the namespaced functionstdlib::validate_email_address
instead.validate_legacy
: Deprecated: Validate a value against both the target_type (new).validate_x509_rsa_key_pair
: Validates a PEM-formatted X.509 certificate and RSA private key using OpenSSL.values_at
: Finds value inside an array based on location.zip
: Takes one element from first array and merges corresponding elements from second array.
Data types
Stdlib::Absolutepath
: A strict absolutepath typeStdlib::Base32
: Type to match base32 StringStdlib::Base64
: Type to match base64 StringStdlib::CreateResources
: A type description used for the create_resources functionStdlib::Datasize
: Validate the size of dataStdlib::Dns::Zone
: Validate a DNS zone nameStdlib::Email
: Validate an e-mail addressStdlib::Ensure::File
: Validate the value of the ensure parameter for a fileStdlib::Ensure::File::Directory
: Validate the ensure parameter of a "directory" file resourceStdlib::Ensure::File::File
: Validate the ensure parameter of a "file" file resourceStdlib::Ensure::File::Link
: Validate the ensure parameter of a "link" file resourceStdlib::Ensure::Package
: Validate the value of the ensure parameter for a packageStdlib::Ensure::Service
: Validate the value of the ensure parameter of a service resourceStdlib::Filemode
: Validate a file modeStdlib::Filesource
: Validate the source parameter on file typesStdlib::Fqdn
: Validate a Fully Qualified Domain NameStdlib::HTTPSUrl
: Validate a HTTPS URLStdlib::HTTPUrl
: Validate a HTTP(S) URLStdlib::Host
: Validate a host (FQDN or IP address)Stdlib::Http::Method
: Valid HTTP method verbsStdlib::Http::Status
: A valid HTTP status code per RFC9110Stdlib::HttpStatus
: Validate a HTTP status codeStdlib::IP::Address
: Validate an IP addressStdlib::IP::Address::CIDR
: Validate an IP address with subnetStdlib::IP::Address::Nosubnet
: Validate an IP address without subnetStdlib::IP::Address::V4
: Validate an IPv4 addressStdlib::IP::Address::V4::CIDR
: lint:ignore:140charsStdlib::IP::Address::V4::Nosubnet
: lint:ignore:140charsStdlib::IP::Address::V6
: Validate an IPv6 addressStdlib::IP::Address::V6::Alternative
: lint:ignore:140charsStdlib::IP::Address::V6::CIDR
: lint:ignore:140charsStdlib::IP::Address::V6::Compressed
: Validate a compressed IPv6 addressStdlib::IP::Address::V6::Full
: Validate a full IPv6 addressStdlib::IP::Address::V6::Nosubnet
: Validate an IPv6 address without subnetStdlib::IP::Address::V6::Nosubnet::Alternative
: lint:ignore:140charsStdlib::IP::Address::V6::Nosubnet::Compressed
: Validate compressed IPv6 address without subnetStdlib::IP::Address::V6::Nosubnet::Full
: Validate full IPv6 address without subnetStdlib::MAC
: A type for a MAC addressStdlib::ObjectStore
: Validate an ObjectStoreStdlib::ObjectStore::GSUri
: Validate a Google Cloud object store URIStdlib::ObjectStore::S3Uri
: Validate an Amazon Web Services S3 object store URIStdlib::Port
: Validate a port numberStdlib::Port::Dynamic
: Validate a dynamic port numberStdlib::Port::Ephemeral
: Validate an ephemeral port numberStdlib::Port::Privileged
: Validate a priviliged port numberStdlib::Port::Registered
: Validate a registered port numberStdlib::Port::Unprivileged
: Validate an unprivileged port numberStdlib::Port::User
: Validate a port number usable by a userStdlib::Syslogfacility
: Validate a syslog facilityStdlib::Unixpath
: Validate a UNIX pathStdlib::Windowspath
: Validate a Windows pathStdlib::Yes_no
: Validate a yes / no value
Classes
stdlib
Most of stdlib's features are automatically loaded by Puppet, but this class should be declared in order to use the standardized run stages.
Declares all other classes in the stdlib module. Currently, this consists of stdlib::stages and stdlib::manage.
stdlib::manage
Sometimes your systems require a single simple resource.
It can feel unnecessary to create a module for a single
resource. There are a number of possible patterns to
generate trivial resource definitions. This is an attempt
to create a single clear method for uncomplicated resources.
There is limited support for before
, require
, notify
,
and subscribe
.
Examples
class { 'stdlib::manage':
'create_resources' => {
'file' => {
'/etc/motd.d/hello' => {
'content' => 'I say Hi',
'notify' => 'Service[sshd]',
},
'/etc/motd' => {
'ensure' => 'file',
'epp' => {
'template' => 'profile/motd.epp',
}
},
'/etc/information' => {
'ensure' => 'file',
'erb' => {
'template' => 'profile/informaiton.erb',
}
}
},
'package' => {
'example' => {
'ensure' => 'installed',
'subscribe' => ['Service[sshd]', 'Exec[something]'],
}
}
}
}
stdlib::manage::create_resources:
file:
'/etc/motd.d/hello':
content: I say Hi
notify: 'Service[sshd]'
'/etc/motd':
ensure: 'file'
epp:
template: 'profile/motd.epp'
context: {}
'/etc/information':
ensure: 'file'
erb:
template: 'profile/information.erb'
package:
example:
ensure: installed
subscribe:
- 'Service[sshd]'
- 'Exec[something]'
Parameters
The following parameters are available in the stdlib::manage
class:
create_resources
Data type: Hash[String, Hash]
A hash of resources to create
NOTE: functions, such as template
or epp
, are not directly evaluated
but processed as Puppet code based on epp and erb hash keys.
Default value: {}
stdlib::stages
Declares various run-stages for deploying infrastructure, language runtimes, and application layers.
The high level stages are (in order):
- setup
- main
- runtime
- setup_infra
- deploy_infra
- setup_app
- deploy_app
- deploy
Examples
node default {
include ::stdlib
class { java: stage => 'runtime' }
}
Resource types
anchor
Note: this has been replaced by core puppet
contain()
method. Please see https://puppet.com/docs/puppet/latest/lang_containment.html for more information.
In Puppet 2.6, when a class declares another class, the resources in the interior class are not contained by the exterior class. This interacts badly with the pattern of composing complex modules from smaller classes, as it makes it impossible for end users to specify order relationships between the exterior class and other modules.
The anchor type lets you work around this. By sandwiching any interior classes between two no-op resources that are contained by the exterior class, you can ensure that all resources in the module are contained.
class ntp {
# These classes will have the correct order relationship with each
# other. However, without anchors, they won't have any order
# relationship to Class['ntp'].
class { 'ntp::package': }
-> class { 'ntp::config': }
-> class { 'ntp::service': }
# These two resources "anchor" the composed classes within the ntp
# class.
anchor { 'ntp::begin': } -> Class['ntp::package']
Class['ntp::service'] -> anchor { 'ntp::end': }
}
This allows the end user of the ntp module to establish require and before relationships with Class['ntp']:
class { 'ntp': } -> class { 'mcollective': }
class { 'mcollective': } -> class { 'ntp': }
Parameters
The following parameters are available in the anchor
type.
name
namevar
The name of the anchor resource.
file_line
The implementation matches the full line, including whitespace at the beginning and end. If the line is not contained in the given file, Puppet will append the line to the end of the file to ensure the desired state. Multiple resources may be declared to manage multiple lines in the same file.
- Ensure Example
file_line { 'sudo_rule':
path => '/etc/sudoers',
line => '%sudo ALL=(ALL) ALL',
}
file_line { 'sudo_rule_nopw':
path => '/etc/sudoers',
line => '%sudonopw ALL=(ALL) NOPASSWD: ALL',
}
In this example, Puppet will ensure both of the specified lines are contained in the file /etc/sudoers.
- Match Example
file_line { 'bashrc_proxy':
ensure => present,
path => '/etc/bashrc',
line => 'export HTTP_PROXY=http://squid.puppetlabs.vm:3128',
match => '^export HTTP_PROXY=',
}
In this code example match will look for a line beginning with export followed by HTTP_PROXY and replace it with the value in line.
- Examples With
ensure => absent
:
This type has two behaviors when ensure => absent
is set.
One possibility is to set match => ...
and match_for_absence => true
,
as in the following example:
file_line { 'bashrc_proxy':
ensure => absent,
path => '/etc/bashrc',
match => '^export HTTP_PROXY=',
match_for_absence => true,
}
In this code example match will look for a line beginning with export
followed by HTTP_PROXY and delete it. If multiple lines match, an
error will be raised unless the multiple => true
parameter is set.
Note that the line => ...
parameter would be accepted BUT IGNORED in
the above example.
The second way of using ensure => absent
is to specify a line => ...
,
and no match:
file_line { 'bashrc_proxy':
ensure => absent,
path => '/etc/bashrc',
line => 'export HTTP_PROXY=http://squid.puppetlabs.vm:3128',
}
Note: When ensuring lines are absent this way, the default behavior this time is to always remove all lines matching, and this behavior can't be disabled.
- Encoding example:
file_line { "XScreenSaver":
ensure => present,
path => '/root/XScreenSaver',
line => "*lock: 10:00:00",
match => '^*lock:',
encoding => "iso-8859-1",
}
Files with special characters that are not valid UTF-8 will give the error message "invalid byte sequence in UTF-8". In this case, determine the correct file encoding and specify the correct encoding using the encoding attribute, the value of which needs to be a valid Ruby character encoding.
Autorequires: If Puppet is managing the file that will contain the line being managed, the file_line resource will autorequire that file.
Properties
The following properties are available in the file_line
type.
ensure
Valid values: present
, absent
Manage the state of this type.
Default value: present
line
The line to be appended to the file or used to replace matches found by the match attribute.
Parameters
The following parameters are available in the file_line
type.
after
append_on_no_match
encoding
match
match_for_absence
multiple
name
path
provider
replace
replace_all_matches_not_matching_line
after
An optional value used to specify the line after which we will add any new lines. (Existing lines are added in place) This is also takes a regex.
append_on_no_match
Valid values: true
, false
If true, append line if match is not found. If false, do not append line if a match is not found
Default value: true
encoding
For files that are not UTF-8 encoded, specify encoding such as iso-8859-1
Default value: UTF-8
match
An optional ruby regular expression to run against existing lines in the file. If a match is found, we replace that line rather than adding a new line. A regex comparison is performed against the line value and if it does not match an exception will be raised.
match_for_absence
Valid values: true
, false
An optional value to determine if match should be applied when ensure => absent.
If set to true and match is set, the line that matches match will be deleted.
If set to false (the default), match is ignored when ensure => absent.
When ensure => present
, match_for_absence is ignored.
Default value: false
multiple
Valid values: true
, false
An optional value to determine if match can change multiple lines. If set to false, an exception will be raised if more than one line matches
name
namevar
An arbitrary name used as the identity of the resource.
path
The file Puppet will ensure contains the line specified by the line parameter.
provider
The specific backend to use for this file_line
resource. You will seldom need to specify this --- Puppet will usually
discover the appropriate provider for your platform.
replace
Valid values: true
, false
If true, replace line that matches. If false, do not write line if a match is found
Default value: true
replace_all_matches_not_matching_line
Valid values: true
, false
Configures the behavior of replacing all lines in a file which match the match
parameter regular expression,
regardless of whether the specified line is already present in the file.
Default value: false
Functions
any2array
Type: Ruby 3.x API
Empty argument lists are converted to an empty array. Arrays are left untouched. Hashes are converted to arrays of alternating keys and values.
Note: since Puppet 5.0.0 it is possible to create new data types for almost any datatype using the type system and the built-in
Array.new
function is used to create a new Array..
$hsh = {'key' => 42, 'another-key' => 100}
notice(Array($hsh))
Would notice [['key', 42], ['another-key', 100]]
The Array data type also has a special mode to "create an array if not already an array"
notice(Array({'key' => 42, 'another-key' => 100}, true))
Would notice [{'key' => 42, 'another-key' => 100}]
, as the true
flag prevents the hash from being
transformed into an array.
any2array()
Empty argument lists are converted to an empty array. Arrays are left untouched. Hashes are converted to arrays of alternating keys and values.
Note: since Puppet 5.0.0 it is possible to create new data types for almost any datatype using the type system and the built-in
Array.new
function is used to create a new Array..
$hsh = {'key' => 42, 'another-key' => 100}
notice(Array($hsh))
Would notice [['key', 42], ['another-key', 100]]
The Array data type also has a special mode to "create an array if not already an array"
notice(Array({'key' => 42, 'another-key' => 100}, true))
Would notice [{'key' => 42, 'another-key' => 100}]
, as the true
flag prevents the hash from being
transformed into an array.
Returns: Array
The new array containing the given object
any2bool
Type: Ruby 3.x API
In practise it does the following:
- Strings such as Y,y,1,T,t,TRUE,yes,'true' will return true
- Strings such as 0,F,f,N,n,FALSE,no,'false' will return false
- Booleans will just return their original value
- Number (or a string representation of a number) > 0 will return true, otherwise false
- undef will return false
- Anything else will return true
Also see the built-in Boolean.new
function.
any2bool()
In practise it does the following:
- Strings such as Y,y,1,T,t,TRUE,yes,'true' will return true
- Strings such as 0,F,f,N,n,FALSE,no,'false' will return false
- Booleans will just return their original value
- Number (or a string representation of a number) > 0 will return true, otherwise false
- undef will return false
- Anything else will return true
Also see the built-in Boolean.new
function.
Returns: Boolean
The boolean value of the object that was given
assert_private
Type: Ruby 3.x API
Calling the class or definition from outside the current module will fail.
assert_private()
Calling the class or definition from outside the current module will fail.
Returns: Any
set the current class or definition as private.
base64
Type: Ruby 3.x API
*Note: Since Puppet 4.8.0, the Binary data type can be used to produce base 64 encoded strings. See the
new()
function for the Binary and String types for documentation. Also seebinary_file()
function for reading a file with binary (non UTF-8) content.
Examples
Example usage
Encode and decode a string
$encodestring = base64('encode', 'thestring')
$decodestring = base64('decode', 'dGhlc3RyaW5n')
Explicitly define encode/decode method: default, strict, urlsafe
$method = 'default'
$encodestring = base64('encode', 'thestring', $method)
$decodestring = base64('decode', 'dGhlc3RyaW5n', $method)
Encode a string as if it was binary
$encodestring = String(Binary('thestring', '%s'))
Decode a Binary assuming it is an UTF-8 String
$decodestring = String(Binary("dGhlc3RyaW5n"), "%s")
base64()
*Note: Since Puppet 4.8.0, the Binary data type can be used to produce base 64 encoded strings. See the
new()
function for the Binary and String types for documentation. Also seebinary_file()
function for reading a file with binary (non UTF-8) content.
Returns: String
The encoded/decoded
Examples
Example usage
Encode and decode a string
$encodestring = base64('encode', 'thestring')
$decodestring = base64('decode', 'dGhlc3RyaW5n')
Explicitly define encode/decode method: default, strict, urlsafe
$method = 'default'
$encodestring = base64('encode', 'thestring', $method)
$decodestring = base64('decode', 'dGhlc3RyaW5n', $method)
Encode a string as if it was binary
$encodestring = String(Binary('thestring', '%s'))
Decode a Binary assuming it is an UTF-8 String
$decodestring = String(Binary("dGhlc3RyaW5n"), "%s")
basename
Type: Ruby 3.x API
Strips directory (and optional suffix) from a filename
basename()
The basename function.
Returns: String
The stripped filename
batch_escape
Type: Ruby 4.x API
DEPRECATED. Use the namespaced function stdlib::batch_escape
instead.
batch_escape(Any *$args)
The batch_escape function.
Returns: Any
*args
Data type: Any
bool2num
Type: Ruby 3.x API
Converts the values:
false, f, 0, n, and no to 0
true, t, 1, y, and yes to 1
Requires a single boolean or string as an input.
Note: since Puppet 5.0.0 it is possible to create new data types for almost any datatype using the type system and the built-in
Numeric.new
,Integer.new
, andFloat.new
function are used to convert to numeric values.notice(Integer(false)) # Notices 0 notice(Float(true)) # Notices 1.0
bool2num()
Converts the values:
false, f, 0, n, and no to 0
true, t, 1, y, and yes to 1
Requires a single boolean or string as an input.
Note: since Puppet 5.0.0 it is possible to create new data types for almost any datatype using the type system and the built-in
Numeric.new
,Integer.new
, andFloat.new
function are used to convert to numeric values.notice(Integer(false)) # Notices 0 notice(Float(true)) # Notices 1.0
Returns: Integer
The converted value as a number
bool2str
Type: Ruby 3.x API
The optional second and third arguments represent what true and false will be converted to respectively. If only one argument is given, it will be converted from a boolean to a string containing 'true' or 'false'.
Examples of usage
bool2str(true) => 'true'
bool2str(true, 'yes', 'no') => 'yes'
bool2str(false, 't', 'f') => 'f'
Requires a single boolean as an input.
Note: since Puppet 5.0.0 it is possible to create new data types for almost any datatype using the type system and the built-in
String.new
function is used to convert to String with many different format options.
notice(String(false)) # Notices 'false'
notice(String(true)) # Notices 'true'
notice(String(false, '%y')) # Notices 'yes'
notice(String(true, '%y')) # Notices 'no'
bool2str()
The optional second and third arguments represent what true and false will be converted to respectively. If only one argument is given, it will be converted from a boolean to a string containing 'true' or 'false'.
Examples of usage
bool2str(true) => 'true'
bool2str(true, 'yes', 'no') => 'yes'
bool2str(false, 't', 'f') => 'f'
Requires a single boolean as an input.
Note: since Puppet 5.0.0 it is possible to create new data types for almost any datatype using the type system and the built-in
String.new
function is used to convert to String with many different format options.
notice(String(false)) # Notices 'false'
notice(String(true)) # Notices 'true'
notice(String(false, '%y')) # Notices 'yes'
notice(String(true, '%y')) # Notices 'no'
Returns: Any
The converted value to string of the given Boolean
clamp
Type: Ruby 3.x API
Strings are converted and compared numerically. Arrays of values are flattened into a list for further handling.
Note: From Puppet 6.0.0 this can be done with only core Puppet like this:
[$minval, $maxval, $value_to_clamp].sort[1]
Examples
Example usage
clamp('24', [575, 187])` returns 187.
clamp(16, 88, 661)` returns 88.
clamp([4, 3, '99'])` returns 4.
clamp()
Strings are converted and compared numerically. Arrays of values are flattened into a list for further handling.
Note: From Puppet 6.0.0 this can be done with only core Puppet like this:
[$minval, $maxval, $value_to_clamp].sort[1]
Returns: Array[Integer]
The sorted Array
Examples
Example usage
clamp('24', [575, 187])` returns 187.
clamp(16, 88, 661)` returns 88.
clamp([4, 3, '99'])` returns 4.
concat
Type: Ruby 3.x API
Note: Since Puppet 4.0, you can use the
+`` operator for concatenation of arrays and merge of hashes, and the
<<`` operator for appending:
['1','2','3'] + ['4','5','6'] + ['7','8','9']
returns ['1','2','3','4','5','6','7','8','9']
[1, 2, 3] << 4
returns [1, 2, 3, 4]
[1, 2, 3] << [4, 5]
returns [1, 2, 3, [4, 5]]
Examples
Example usage
concat(['1','2','3'],'4') returns ['1','2','3','4']
concat(['1','2','3'],'4',['5','6','7']) returns ['1','2','3','4','5','6','7']
concat()
Note: Since Puppet 4.0, you can use the
+`` operator for concatenation of arrays and merge of hashes, and the
<<`` operator for appending:
['1','2','3'] + ['4','5','6'] + ['7','8','9']
returns ['1','2','3','4','5','6','7','8','9']
[1, 2, 3] << 4
returns [1, 2, 3, 4]
[1, 2, 3] << [4, 5]
returns [1, 2, 3, [4, 5]]
Returns: Array
The single concatenated array
Examples
Example usage
concat(['1','2','3'],'4') returns ['1','2','3','4']
concat(['1','2','3'],'4',['5','6','7']) returns ['1','2','3','4','5','6','7']
convert_base
Type: Ruby 3.x API
convert_base(5, 2)results in:
'101' convert_base('254', '16')
results in: 'fe'
Note: Since Puppet 4.5.0 this can be done with the built-in
String.new
function and its many formatting options:
$binary_repr = String(5, '%b')
return "101"
$hex_repr = String(254, "%x")
return "fe"
$hex_repr = String(254, "%#x")
return "0xfe"
@return [String] The converted value as a S
Examples
Example usage
convert_base()
convert_base(5, 2)results in:
'101' convert_base('254', '16')
results in: 'fe'
Note: Since Puppet 4.5.0 this can be done with the built-in
String.new
function and its many formatting options:
$binary_repr = String(5, '%b')
return "101"
$hex_repr = String(254, "%x")
return "fe"
$hex_repr = String(254, "%#x")
return "0xfe"
@return [String] The converted value as a S
Returns: Any
converted value as a string
Examples
Example usage
count
Type: Ruby 3.x API
Takes an array as first argument and an optional second argument. Counts the number of elements in array that is equal to the second argument. If called with only an array, it counts the number of elements that are not nil/undef/empty-string.
Note: equality is tested with a Ruby method and it is therefore subject to what Ruby considers to be equal. For strings this means that equality is case sensitive.
In Puppet core, counting can be done in general by using a combination of the core functions filter() (since Puppet 4.0.0) and length() (since Puppet 5.5.0, before that in stdlib).
Example below shows counting values that are not undef.
notice([42, "hello", undef].filter |$x| { $x =~ NotUndef }.length)
Would notice the value 2.
count()
Takes an array as first argument and an optional second argument. Counts the number of elements in array that is equal to the second argument. If called with only an array, it counts the number of elements that are not nil/undef/empty-string.
Note: equality is tested with a Ruby method and it is therefore subject to what Ruby considers to be equal. For strings this means that equality is case sensitive.
In Puppet core, counting can be done in general by using a combination of the core functions filter() (since Puppet 4.0.0) and length() (since Puppet 5.5.0, before that in stdlib).
Example below shows counting values that are not undef.
notice([42, "hello", undef].filter |$x| { $x =~ NotUndef }.length)
Would notice the value 2.
Returns: Integer
The amount of elements counted within the array
deep_merge
Type: Ruby 3.x API
Recursively merges two or more hashes together and returns the resulting hash.
Examples
Example usage
$hash1 = {'one' => 1, 'two' => 2, 'three' => { 'four' => 4 } }
$hash2 = {'two' => 'dos', 'three' => { 'five' => 5 } }
$merged_hash = deep_merge($hash1, $hash2)
The resulting hash is equivalent to:
$merged_hash = { 'one' => 1, 'two' => 'dos', 'three' => { 'four' => 4, 'five' => 5 } }
When there is a duplicate key that is a hash, they are recursively merged.
When there is a duplicate key that is not a hash, the key in the rightmost hash will "win."
deep_merge()
The deep_merge function.
Returns: Hash
The merged
Examples
Example usage
$hash1 = {'one' => 1, 'two' => 2, 'three' => { 'four' => 4 } }
$hash2 = {'two' => 'dos', 'three' => { 'five' => 5 } }
$merged_hash = deep_merge($hash1, $hash2)
The resulting hash is equivalent to:
$merged_hash = { 'one' => 1, 'two' => 'dos', 'three' => { 'four' => 4, 'five' => 5 } }
When there is a duplicate key that is a hash, they are recursively merged.
When there is a duplicate key that is not a hash, the key in the rightmost hash will "win."
defined_with_params
Type: Ruby 3.x API
Returns true
if a resource with the specified attributes has already been added
to the catalog, and false
otherwise.
user { 'dan':
ensure => present,
}
if ! defined_with_params(User[dan], {'ensure' => 'present' }) {
user { 'dan': ensure => present, }
}
defined_with_params()
Returns true
if a resource with the specified attributes has already been added
to the catalog, and false
otherwise.
user { 'dan':
ensure => present,
}
if ! defined_with_params(User[dan], {'ensure' => 'present' }) {
user { 'dan': ensure => present, }
}
Returns: Boolean
returns true
or false
delete
Type: Ruby 3.x API
Note: From Puppet 4.0.0 the minus (-) operator deletes values from arrays and keys from a hash
{'a'=>1,'b'=>2,'c'=>3} - ['b','c'])
A global delete from a string can be performed with the
regsubst
function:'abracadabra'.regsubst(/bra/, '', 'G')
In general, the built-in filter
function can filter out entries from arrays and hashes based on keys and/or values.
Examples
Example usage
delete(['a','b','c','b'], 'b')
Would return: ['a','c']
delete({'a'=>1,'b'=>2,'c'=>3}, 'b')
Would return: {'a'=>1,'c'=>3}
delete({'a'=>1,'b'=>2,'c'=>3}, ['b','c'])
Would return: {'a'=>1}
delete('abracadabra', 'bra')
Would return: 'acada'
['a', 'b', 'c', 'b'] - 'b'
Would return: ['a', 'c']
{'a'=>1,'b'=>2,'c'=>3} - ['b','c'])
Would return: {'a' => '1'}
'abracadabra'.regsubst(/bra/, '', 'G')
Would return: 'acada'
delete()
Note: From Puppet 4.0.0 the minus (-) operator deletes values from arrays and keys from a hash
{'a'=>1,'b'=>2,'c'=>3} - ['b','c'])
A global delete from a string can be performed with the
regsubst
function:'abracadabra'.regsubst(/bra/, '', 'G')
In general, the built-in filter
function can filter out entries from arrays and hashes based on keys and/or values.
Returns: String
The filtered String, if one was given.
Examples
Example usage
delete(['a','b','c','b'], 'b')
Would return: ['a','c']
delete({'a'=>1,'b'=>2,'c'=>3}, 'b')
Would return: {'a'=>1,'c'=>3}
delete({'a'=>1,'b'=>2,'c'=>3}, ['b','c'])
Would return: {'a'=>1}
delete('abracadabra', 'bra')
Would return: 'acada'
['a', 'b', 'c', 'b'] - 'b'
Would return: ['a', 'c']
{'a'=>1,'b'=>2,'c'=>3} - ['b','c'])
Would return: {'a' => '1'}
'abracadabra'.regsubst(/bra/, '', 'G')
Would return: 'acada'
delete_at
Type: Ruby 3.x API
For example
delete_at(['a','b','c'], 1)
Would return: ['a','c']
Note: Since Puppet 4 this can be done in general with the built-in
filter
function:
['a', 'b', 'c'].filter |$pos, $val | { $pos != 1 }
Or if a delete is wanted from the beginning or end of the array, by using the slice operator [ ]:
$array[0, -1] # the same as all the values
$array[2, -1] # all but the first 2 elements
$array[0, -3] # all but the last 2 elements
$array[1, -2] # all but the first and last element
delete_at()
For example
delete_at(['a','b','c'], 1)
Would return: ['a','c']
Note: Since Puppet 4 this can be done in general with the built-in
filter
function:
['a', 'b', 'c'].filter |$pos, $val | { $pos != 1 }
Or if a delete is wanted from the beginning or end of the array, by using the slice operator [ ]:
$array[0, -1] # the same as all the values
$array[2, -1] # all but the first 2 elements
$array[0, -3] # all but the last 2 elements
$array[1, -2] # all but the first and last element
Returns: Array
The given array, now missing the tar
delete_regex
Type: Ruby 3.x API
Multiple regular expressions are assumed to be matched as an OR.
Note: Since Puppet 4 this can be done in general with the built-in
filter
function: ["aaa", "aba", "aca"].filter |$val| { $val !~ /b/ } Would return: ['aaa', 'aca']
Examples
Example usage
delete_regex(['a','b','c','b'], 'b')
Would return: ['a','c']
delete_regex(['a','b','c','b'], ['b', 'c'])
Would return: ['a']
delete_regex({'a'=>1,'b'=>2,'c'=>3}, 'b')
Would return: {'a'=>1,'c'=>3}
delete_regex({'a'=>1,'b'=>2,'c'=>3}, '^a$')
Would return: {'b'=>2,'c'=>3}
delete_regex()
Multiple regular expressions are assumed to be matched as an OR.
Note: Since Puppet 4 this can be done in general with the built-in
filter
function: ["aaa", "aba", "aca"].filter |$val| { $val !~ /b/ } Would return: ['aaa', 'aca']
Returns: Array
The given array now missing all targeted values.
Examples
Example usage
delete_regex(['a','b','c','b'], 'b')
Would return: ['a','c']
delete_regex(['a','b','c','b'], ['b', 'c'])
Would return: ['a']
delete_regex({'a'=>1,'b'=>2,'c'=>3}, 'b')
Would return: {'a'=>1,'c'=>3}
delete_regex({'a'=>1,'b'=>2,'c'=>3}, '^a$')
Would return: {'b'=>2,'c'=>3}
delete_undef_values
Type: Ruby 3.x API
Note: Since Puppet 4.0.0 the equivalent can be performed with the built-in
filter
function: $array.filter |$val| { $val =~ NotUndef } $hash.filter |$key, $val| { $val =~ NotUndef }
Examples
Example usage
$hash = delete_undef_values({a=>'A', b=>'', c=>undef, d => false})
Would return: {a => 'A', b => '', d => false}
While:
$array = delete_undef_values(['A','',undef,false])
Would return: ['A','',false]
delete_undef_values()
Note: Since Puppet 4.0.0 the equivalent can be performed with the built-in
filter
function: $array.filter |$val| { $val =~ NotUndef } $hash.filter |$key, $val| { $val =~ NotUndef }
Returns: Array
The given array now issing of undefined values.
Examples
Example usage
$hash = delete_undef_values({a=>'A', b=>'', c=>undef, d => false})
Would return: {a => 'A', b => '', d => false}
While:
$array = delete_undef_values(['A','',undef,false])
Would return: ['A','',false]
delete_values
Type: Ruby 3.x API
Note: Since Puppet 4.0.0 the equivalent can be performed with the built-in
filter
function: $array.filter |$val| { $val != 'B' } $hash.filter |$key, $val| { $val != 'B' }
Examples
Example usage
delete_values({'a'=>'A','b'=>'B','c'=>'C','B'=>'D'}, 'B')
Would return: {'a'=>'A','c'=>'C','B'=>'D'}
delete_values()
Note: Since Puppet 4.0.0 the equivalent can be performed with the built-in
filter
function: $array.filter |$val| { $val != 'B' } $hash.filter |$key, $val| { $val != 'B' }
Returns: Hash
The given hash now missing all instances of the targeted value
Examples
Example usage
delete_values({'a'=>'A','b'=>'B','c'=>'C','B'=>'D'}, 'B')
Would return: {'a'=>'A','c'=>'C','B'=>'D'}
deprecation
Type: Ruby 4.x API
Function to print deprecation warnings, Logs a warning once for a given key.
deprecation(String $key, String $message, Optional[Boolean] $use_strict_setting)
The deprecation function.
Returns: Any
key
Data type: String
The uniqueness key. This function logs once for any given key.
message
Data type: String
Is the message text including any positional information that is formatted by the user/caller of the function.
use_strict_setting
Data type: Optional[Boolean]
When true
, (the default), the function is affected by the puppet setting 'strict', which can be set to :error
(outputs as an error message), :off (no message / error is displayed) and :warning
(default, outputs a warning).
difference
Type: Ruby 3.x API
The returned array is a copy of the original array, removing any items that also appear in the second array.
Note: Since Puppet 4 the minus (-) operator in the Puppet language does the same thing: ['a', 'b', 'c'] - ['b', 'c', 'd'] Would return:
['a']
Examples
Example usage
difference(["a","b","c"],["b","c","d"])
Would return: `["a"]`
difference()
The returned array is a copy of the original array, removing any items that also appear in the second array.
Note: Since Puppet 4 the minus (-) operator in the Puppet language does the same thing: ['a', 'b', 'c'] - ['b', 'c', 'd'] Would return:
['a']
Returns: Array
The difference between the two given arrays
Examples
Example usage
difference(["a","b","c"],["b","c","d"])
Would return: `["a"]`
dirname
Type: Ruby 3.x API
Returns the dirname of a path.
dirname()
The dirname function.
Returns: String
the given path's dirname
dos2unix
Type: Ruby 3.x API
Takes a single string argument.
dos2unix()
Takes a single string argument.
Returns: Any
The retrieved version
enclose_ipv6
Type: Ruby 3.x API
Takes an array of ip addresses and encloses the ipv6 addresses with square brackets.
enclose_ipv6()
The enclose_ipv6 function.
Returns: Any
encloses the ipv6 addresses with square brackets.
ensure_packages
Type: Ruby 4.x API
DEPRECATED. Use the namespaced function stdlib::ensure_packages
instead.
ensure_packages(Any *$args)
The ensure_packages function.
Returns: Any
*args
Data type: Any
ensure_resource
Type: Ruby 3.x API
user { 'dan': ensure => present, }
Examples
Example usage
Creates the resource if it does not already exist:
ensure_resource('user', 'dan', {'ensure' => 'present' })
If the resource already exists but does not match the specified parameters,
this function will attempt to recreate the resource leading to a duplicate
resource definition error.
An array of resources can also be passed in and each will be created with
the type and parameters specified if it doesn't already exist.
ensure_resource('user', ['dan','alex'], {'ensure' => 'present'})
ensure_resource()
user { 'dan': ensure => present, }
Returns: Any
created or recreated the passed resource with the passed type and attributes
Examples
Example usage
Creates the resource if it does not already exist:
ensure_resource('user', 'dan', {'ensure' => 'present' })
If the resource already exists but does not match the specified parameters,
this function will attempt to recreate the resource leading to a duplicate
resource definition error.
An array of resources can also be passed in and each will be created with
the type and parameters specified if it doesn't already exist.
ensure_resource('user', ['dan','alex'], {'ensure' => 'present'})
ensure_resources
Type: Ruby 3.x API
An hash of resources should be passed in and each will be created with the type and parameters specified if it doesn't already exist.
ensure_resources('user', {'dan' => { gid => 'mygroup', uid => '600' }, 'alex' => { gid => 'mygroup' }}, {'ensure' => 'present'})
From Hiera Backend:
userlist: dan: gid: 'mygroup' uid: '600' alex: gid: 'mygroup'
Call: ensure_resources('user', hiera_hash('userlist'), {'ensure' => 'present'})
Examples
Example usage
user { 'dan':
gid => 'mygroup',
ensure => present,
}
ensure_resources()
An hash of resources should be passed in and each will be created with the type and parameters specified if it doesn't already exist.
ensure_resources('user', {'dan' => { gid => 'mygroup', uid => '600' }, 'alex' => { gid => 'mygroup' }}, {'ensure' => 'present'})
From Hiera Backend:
userlist: dan: gid: 'mygroup' uid: '600' alex: gid: 'mygroup'
Call: ensure_resources('user', hiera_hash('userlist'), {'ensure' => 'present'})
Returns: Any
created resources with the passed type and attributes
Examples
Example usage
user { 'dan':
gid => 'mygroup',
ensure => present,
}
fact
Type: Ruby 4.x API
Supports the use of dot-notation for referring to structured facts. If a fact requested does not exist, returns Undef.
Examples
Example usage:
fact('osfamily')
fact('os.architecture')
Array indexing:
fact('mountpoints."/dev".options.1')
Fact containing a "." in the name:
fact('vmware."VRA.version"')
fact(String $fact_name)
Supports the use of dot-notation for referring to structured facts. If a fact requested does not exist, returns Undef.
Returns: Any
All information retrieved on the given fact_name
Examples
Example usage:
fact('osfamily')
fact('os.architecture')
Array indexing:
fact('mountpoints."/dev".options.1')
Fact containing a "." in the name:
fact('vmware."VRA.version"')
fact_name
Data type: String
The name of the fact to check
fqdn_rand_string
Type: Ruby 4.x API
DEPRECATED. Use the namespaced function stdlib::fqdn_rand_string
instead.
fqdn_rand_string(Any *$args)
The fqdn_rand_string function.
Returns: Any
*args
Data type: Any
fqdn_rotate
Type: Ruby 4.x API
DEPRECATED. Use the namespaced function stdlib::fqdn_rotate
instead.
fqdn_rotate(Any *$args)
The fqdn_rotate function.
Returns: Any
*args
Data type: Any
fqdn_uuid
Type: Ruby 3.x API
Returns a RFC 4122 valid version 5 UUID based on an FQDN string under the DNS namespace
Examples
Example Usage:
fqdn_uuid('puppetlabs.com') # Returns '9c70320f-6815-5fc5-ab0f-debe68bf764c'
fqdn_uuid('google.com') # Returns '64ee70a4-8cc1-5d25-abf2-dea6c79a
fqdn_uuid()
The fqdn_uuid function.
Returns: Any
Returns a RFC 4122 valid version 5 UUID
Examples
Example Usage:
fqdn_uuid('puppetlabs.com') # Returns '9c70320f-6815-5fc5-ab0f-debe68bf764c'
fqdn_uuid('google.com') # Returns '64ee70a4-8cc1-5d25-abf2-dea6c79a
get_module_path
Type: Ruby 3.x API
Note: that since Puppet 5.4.0 the built-in
module_directory
function in Puppet does the same thing and will return the path to the first found module if given multiple values or an array.
Examples
Example Usage:
$module_path = get_module_path('stdlib')
get_module_path()
Note: that since Puppet 5.4.0 the built-in
module_directory
function in Puppet does the same thing and will return the path to the first found module if given multiple values or an array.
Returns: Any
Returns the absolute path of the specified module for the current
environment.
Examples
Example Usage:
$module_path = get_module_path('stdlib')
getparam
Type: Ruby 3.x API
Takes a resource reference and name of the parameter and returns value of resource's parameter. Note that user defined resource types are evaluated lazily.
Would notice: 'the value we are getting in this example'
Note that since Puppet 4.0.0 it is possible to get a parameter value by using its data type and the [ ] operator. The example below is equivalent to a call to getparam(): `
Example_resource['example_resource_instance']['param']
Examples
Example Usage:
# define a resource type with a parameter
define example_resource($param) {
}
# declare an instance of that type
example_resource { "example_resource_instance":
param => "'the value we are getting in this example''"
}
# Because of order of evaluation, a second definition is needed
# that will be evaluated after the first resource has been declared
#
define example_get_param {
# This will notice the value of the parameter
notice(getparam(Example_resource["example_resource_instance"], "param"))
}
# Declare an instance of the second resource type - this will call notice
example_get_param { 'show_notify': }
getparam()
Takes a resource reference and name of the parameter and returns value of resource's parameter. Note that user defined resource types are evaluated lazily.
Would notice: 'the value we are getting in this example'
Note that since Puppet 4.0.0 it is possible to get a parameter value by using its data type and the [ ] operator. The example below is equivalent to a call to getparam(): `
Example_resource['example_resource_instance']['param']
Returns: Any
value of a resource's parameter.
Examples
Example Usage:
# define a resource type with a parameter
define example_resource($param) {
}
# declare an instance of that type
example_resource { "example_resource_instance":
param => "'the value we are getting in this example''"
}
# Because of order of evaluation, a second definition is needed
# that will be evaluated after the first resource has been declared
#
define example_get_param {
# This will notice the value of the parameter
notice(getparam(Example_resource["example_resource_instance"], "param"))
}
# Declare an instance of the second resource type - this will call notice
example_get_param { 'show_notify': }
glob
Type: Ruby 3.x API
Uses same patterns as Dir#glob.
Examples
Example Usage:
$confs = glob(['/etc/**/*.conf', '/opt/**/*.conf'])
glob()
The glob function.
Returns: Any
Returns an Array of file entries of a directory or an Array of directories.
Examples
Example Usage:
$confs = glob(['/etc/**/*.conf', '/opt/**/*.conf'])
grep
Type: Ruby 3.x API
Note: that since Puppet 4.0.0, the built-in
filter
function does the "same" - as any logic can be used to filter, as opposed to just regular expressions:['aaa', 'bbb', 'ccc', 'aaaddd']. filter |$x| { $x =~ 'aaa' }
Examples
Example Usage:
grep(['aaa','bbb','ccc','aaaddd'], 'aaa') # Returns ['aaa','aaaddd']
grep()
Note: that since Puppet 4.0.0, the built-in
filter
function does the "same" - as any logic can be used to filter, as opposed to just regular expressions:['aaa', 'bbb', 'ccc', 'aaaddd']. filter |$x| { $x =~ 'aaa' }
Returns: Any
array of elements that match the provided regular expression.
Examples
Example Usage:
grep(['aaa','bbb','ccc','aaaddd'], 'aaa') # Returns ['aaa','aaaddd']
has_interface_with
Type: Ruby 4.x API
DEPRECATED. Use the namespaced function stdlib::has_interface_with
instead.
has_interface_with(Any *$args)
The has_interface_with function.
Returns: Any
*args
Data type: Any
has_interface_with
Type: Ruby 3.x API
Valid kinds are macaddress
, netmask
, ipaddress
and network
.
Examples
Usage
has_interface_with("macaddress", "x:x:x:x:x:x") # Returns `false`
has_interface_with("ipaddress", "127.0.0.1") # Returns `true`
If no "kind" is given, then the presence of the interface is checked:
has_interface_with("lo") # Returns `true`
has_interface_with()
Valid kinds are macaddress
, netmask
, ipaddress
and network
.
Returns: Any
boolean values true
or false
Examples
Usage
has_interface_with("macaddress", "x:x:x:x:x:x") # Returns `false`
has_interface_with("ipaddress", "127.0.0.1") # Returns `true`
If no "kind" is given, then the presence of the interface is checked:
has_interface_with("lo") # Returns `true`
has_ip_address
Type: Ruby 3.x API
This function iterates through the 'interfaces' fact and checks the 'ipaddress_IFACE' facts, performing a simple string comparison.
has_ip_address()
This function iterates through the 'interfaces' fact and checks the 'ipaddress_IFACE' facts, performing a simple string comparison.
Returns: Boolean
true
or false
has_ip_network
Type: Ruby 3.x API
This function iterates through the 'interfaces' fact and checks the 'network_IFACE' facts, performing a simple string comparision.
has_ip_network()
This function iterates through the 'interfaces' fact and checks the 'network_IFACE' facts, performing a simple string comparision.
Returns: Any
Boolean value, true
if the client has an IP address within the requested network.
intersection
Type: Ruby 3.x API
This function returns an array of the intersection of two.
Examples
Example Usage:
intersection(["a","b","c"],["b","c","d"]) # returns ["b","c"]
intersection(["a","b","c"],[1,2,3,4]) # returns [] (true, when evaluated as a Boolean)
intersection()
The intersection function.
Returns: Any
an array of the intersection of two.
Examples
Example Usage:
intersection(["a","b","c"],["b","c","d"]) # returns ["b","c"]
intersection(["a","b","c"],[1,2,3,4]) # returns [] (true, when evaluated as a Boolean)
is_a
Type: Ruby 4.x API
See the documentation for "The Puppet Type System" for more information about types.
See the assert_type()
function for flexible ways to assert the type of a value.
Examples
Example Usage:
# check a data type
foo = 3
$bar = [1,2,3]
$baz = 'A string!'
if $foo.is_a(Integer) {
notify { 'foo!': }
}
if $bar.is_a(Array) {
notify { 'bar!': }
}
if $baz.is_a(String) {
notify { 'baz!': }
}
is_a(Any $value, Type $type)
See the documentation for "The Puppet Type System" for more information about types.
See the assert_type()
function for flexible ways to assert the type of a value.
Returns: Boolean
Return's true
or false
.
Examples
Example Usage:
# check a data type
foo = 3
$bar = [1,2,3]
$baz = 'A string!'
if $foo.is_a(Integer) {
notify { 'foo!': }
}
if $bar.is_a(Array) {
notify { 'bar!': }
}
if $baz.is_a(String) {
notify { 'baz!': }
}
value
Data type: Any
The value to be checked
type
Data type: Type
The expected type
join_keys_to_values
Type: Ruby 3.x API
Keys are cast to strings. If values are arrays, multiple keys are added for each element. The return value is an array in which each element is one joined key/value pair.
Note: Since Puppet 5.0.0 - for more detailed control over the formatting (including indentations and line breaks, delimiters around arrays and hash entries, between key/values in hash entries, and individual formatting of values in the array) - see the
new
function forString
and its formatting options forArray
andHash
.
Examples
Example Usage:
join_keys_to_values({'a'=>1,'b'=>2}, " is ") # Results in: ["a is 1","b is 2"]
join_keys_to_values({'a'=>1,'b'=>[2,3]}, " is ") # Results in: ["a is 1","b is 2","b is 3"]
join_keys_to_values()
Keys are cast to strings. If values are arrays, multiple keys are added for each element. The return value is an array in which each element is one joined key/value pair.
Note: Since Puppet 5.0.0 - for more detailed control over the formatting (including indentations and line breaks, delimiters around arrays and hash entries, between key/values in hash entries, and individual formatting of values in the array) - see the
new
function forString
and its formatting options forArray
andHash
.
Returns: Hash
The joined hash
Examples
Example Usage:
join_keys_to_values({'a'=>1,'b'=>2}, " is ") # Results in: ["a is 1","b is 2"]
join_keys_to_values({'a'=>1,'b'=>[2,3]}, " is ") # Results in: ["a is 1","b is 2","b is 3"]
load_module_metadata
Type: Ruby 3.x API
This function loads the metadata of a given module.
Examples
Example Usage:
$metadata = load_module_metadata('archive')
notify { $metadata['author']: }
load_module_metadata()
The load_module_metadata function.
Returns: Any
The modules metadata
Examples
Example Usage:
$metadata = load_module_metadata('archive')
notify { $metadata['author']: }
loadjson
Type: Ruby 3.x API
The first parameter can be a file path or a URL. The second parameter is the default value. It will be returned if the file was not found or could not be parsed.
Examples
Example Usage:
$myhash = loadjson('/etc/puppet/data/myhash.json')
$myhash = loadjson('https://example.local/my_hash.json')
$myhash = loadjson('https://username:password@example.local/my_hash.json')
$myhash = loadjson('no-file.json', {'default' => 'val
loadjson()
The first parameter can be a file path or a URL. The second parameter is the default value. It will be returned if the file was not found or could not be parsed.
Returns: Array|String|Hash
The data stored in the JSON file, the type depending on the type of data that was stored.
Examples
Example Usage:
$myhash = loadjson('/etc/puppet/data/myhash.json')
$myhash = loadjson('https://example.local/my_hash.json')
$myhash = loadjson('https://username:password@example.local/my_hash.json')
$myhash = loadjson('no-file.json', {'default' => 'val
loadyaml
Type: Ruby 3.x API
The first parameter can be a file path or a URL. The second parameter is the default value. It will be returned if the file was not found or could not be parsed.
Examples
Example Usage:
$myhash = loadyaml('/etc/puppet/data/myhash.yaml')
$myhash = loadyaml('https://example.local/my_hash.yaml')
$myhash = loadyaml('https://username:password@example.local/my_hash.yaml')
$myhash = loadyaml('no-file.yaml', {'default' => 'val
loadyaml()
The first parameter can be a file path or a URL. The second parameter is the default value. It will be returned if the file was not found or could not be parsed.
Returns: Array|String|Hash
The data stored in the YAML file, the type depending on the type of data that was stored.
Examples
Example Usage:
$myhash = loadyaml('/etc/puppet/data/myhash.yaml')
$myhash = loadyaml('https://example.local/my_hash.yaml')
$myhash = loadyaml('https://username:password@example.local/my_hash.yaml')
$myhash = loadyaml('no-file.yaml', {'default' => 'val
member
Type: Ruby 3.x API
The variable can be a string, fixnum, or array.
Note: This function does not support nested arrays. If the first argument contains nested arrays, it will not recurse through them.
Note: Since Puppet 4.0.0 the same can be performed in the Puppet language. For single values the operator
in
can be used:'a' in ['a', 'b'] # true
For arrays by using operator-
to compute a diff:['d', 'b'] - ['a', 'b', 'c'] == [] # false because 'd' is not subtracted
['a', 'b'] - ['a', 'b', 'c'] == [] # true because both 'a' and 'b' are subtracted
Note that since Puppet 5.2.0, the general form to test the content of an array or hash is to use the built-in
any
andall
functions.
Examples
Usage
member(['a','b'], 'b') # Returns: true
member(['a', 'b', 'c'], ['a', 'b']) # Returns: true
member(['a','b'], 'c') # Returns: false
member(['a', 'b', 'c'], ['d', 'b']) # Returns: false
member()
The variable can be a string, fixnum, or array.
Note: This function does not support nested arrays. If the first argument contains nested arrays, it will not recurse through them.
Note: Since Puppet 4.0.0 the same can be performed in the Puppet language. For single values the operator
in
can be used:'a' in ['a', 'b'] # true
For arrays by using operator-
to compute a diff:['d', 'b'] - ['a', 'b', 'c'] == [] # false because 'd' is not subtracted
['a', 'b'] - ['a', 'b', 'c'] == [] # true because both 'a' and 'b' are subtracted
Note that since Puppet 5.2.0, the general form to test the content of an array or hash is to use the built-in
any
andall
functions.
Returns: Any
Returns whether the given value was a member of the array
Examples
Usage
member(['a','b'], 'b') # Returns: true
member(['a', 'b', 'c'], ['a', 'b']) # Returns: true
member(['a','b'], 'c') # Returns: false
member(['a', 'b', 'c'], ['d', 'b']) # Returns: false
merge
Type: Ruby 4.x API
DEPRECATED. Use the namespaced function stdlib::merge
instead.
merge(Any *$args, Optional[Variant[Callable[2,2], Callable[3,3]]] &$block)
The merge function.
Returns: Any
*args
Data type: Any
&block
Data type: Optional[Variant[Callable[2,2], Callable[3,3]]]
merge
Type: Ruby 3.x API
When there is a duplicate key, the key in the rightmost hash will "win."
Note that since Puppet 4.0.0 the same merge can be achieved with the + operator. `$merged_hash = $hash1 + $h
Examples
Usage
$hash1 = {'one' => 1, 'two', => 2}
$hash2 = {'two' => 'dos', 'three', => 'tres'}
$merged_hash = merge($hash1, $hash2) # $merged_hash = {'one' => 1, 'two' => 'dos', 'three' => 'tres'}
merge()
When there is a duplicate key, the key in the rightmost hash will "win."
Note that since Puppet 4.0.0 the same merge can be achieved with the + operator. `$merged_hash = $hash1 + $h
Returns: Hash
The merged hash
Examples
Usage
$hash1 = {'one' => 1, 'two', => 2}
$hash2 = {'two' => 'dos', 'three', => 'tres'}
$merged_hash = merge($hash1, $hash2) # $merged_hash = {'one' => 1, 'two' => 'dos', 'three' => 'tres'}
num2bool
Type: Ruby 3.x API
Note: that since Puppet 5.0.0 the same can be achieved with the Puppet Type System. See the new() function in Puppet for the many available type conversions.
num2bool()
Note: that since Puppet 5.0.0 the same can be achieved with the Puppet Type System. See the new() function in Puppet for the many available type conversions.
Returns: Boolean
Boolean(0) # false for any zero or negative number
Boolean(1) # true for any positive number
os_version_gte
Type: Ruby 4.x API
DEPRECATED. Use the namespaced function stdlib::os_version_gte
instead.
os_version_gte(Any *$args)
The os_version_gte function.
Returns: Any
*args
Data type: Any
parsehocon
Type: Ruby 4.x API
DEPRECATED. Use the namespaced function stdlib::parsehocon
instead.
parsehocon(Any *$args)
The parsehocon function.
Returns: Any
*args
Data type: Any
parsejson
Type: Ruby 3.x API
Note: The optional second argument can be used to pass a default value that will be returned if the parsing of the JSON string failed or if the JSON parse evaluated to nil.
parsejson()
Note: The optional second argument can be used to pass a default value that will be returned if the parsing of the JSON string failed or if the JSON parse evaluated to nil.
Returns: Any
convert JSON into Puppet structure
parsepson
Type: Ruby 4.x API
For more information on PSON please see the following link: https://puppet.com/docs/puppet/7/http_api/pson.html
Examples
How to parse pson
$data = parsepson('{"a":"1","b":"2"}')
parsepson(String[1] $pson_string, Optional[Any] $default)
For more information on PSON please see the following link: https://puppet.com/docs/puppet/7/http_api/pson.html
Returns: Data
Examples
How to parse pson
$data = parsepson('{"a":"1","b":"2"}')
pson_string
Data type: String[1]
A valid PSON string
default
Data type: Optional[Any]
An optional default to return if parsing the pson_string fails
parseyaml
Type: Ruby 3.x API
Note: The optional second argument can be used to pass a default value that will be returned if the parsing of YAML string have failed.
parseyaml()
Note: The optional second argument can be used to pass a default value that will be returned if the parsing of YAML string have failed.
Returns: Any
converted YAML into Puppet structure
pick
Type: Ruby 3.x API
This function is similar to a coalesce function in SQL.
Typically, this function is used to check for a value in the Puppet Dashboard/Enterprise Console, and failover to a default value like the following:
$real_jenkins_version = pick($::jenkins_version, '1.449')
Note: The value of $real_jenkins_version will first look for a top-scope variable called 'jenkins_version' (note that parameters set in the Puppet Dashboard/ Enterprise Console are brought into Puppet as top-scope variables), and, failing that, will use a default value of 1.449.
pick()
This function is similar to a coalesce function in SQL.
Typically, this function is used to check for a value in the Puppet Dashboard/Enterprise Console, and failover to a default value like the following:
$real_jenkins_version = pick($::jenkins_version, '1.449')
Note: The value of $real_jenkins_version will first look for a top-scope variable called 'jenkins_version' (note that parameters set in the Puppet Dashboard/ Enterprise Console are brought into Puppet as top-scope variables), and, failing that, will use a default value of 1.449.
Returns: Any
the first value in a list of values that is not undefined or an empty string.
pick_default
Type: Ruby 3.x API
Typically, this function is used to check for a value in the Puppet Dashboard/Enterprise Console, and failover to a default value like the following:
$real_jenkins_version = pick_default($::jenkins_version, '1.449')
Note: The value of $real_jenkins_version will first look for a top-scope variable called 'jenkins_version' (note that parameters set in the Puppet Dashboard/ Enterprise Console are brought into Puppet as top-scope variables), and, failing that, will use a default value of 1.449.
Contrary to the pick() function, the pick_default does not fail if all arguments are empty. This allows pick_default to use an empty value as default.
pick_default()
Typically, this function is used to check for a value in the Puppet Dashboard/Enterprise Console, and failover to a default value like the following:
$real_jenkins_version = pick_default($::jenkins_version, '1.449')
Note: The value of $real_jenkins_version will first look for a top-scope variable called 'jenkins_version' (note that parameters set in the Puppet Dashboard/ Enterprise Console are brought into Puppet as top-scope variables), and, failing that, will use a default value of 1.449.
Contrary to the pick() function, the pick_default does not fail if all arguments are empty. This allows pick_default to use an empty value as default.
Returns: Any
This function is similar to a coalesce function in SQL in that it will return
the first value in a list of values that is not undefined or an empty string
If no value is found, it will return the last argument.
powershell_escape
Type: Ruby 4.x API
DEPRECATED. Use the namespaced function stdlib::powershell_escape
instead.
powershell_escape(Any *$args)
The powershell_escape function.
Returns: Any
*args
Data type: Any
prefix
Type: Ruby 3.x API
Note: since Puppet 4.0.0 the general way to modify values is in array is by using the map function in Puppet. This example does the same as the example above: ['a', 'b', 'c'].map |$x| { "p${x}" }
Examples
Usage
prefix(['a','b','c'], 'p')
Will return: ['pa','pb','pc']
prefix()
Note: since Puppet 4.0.0 the general way to modify values is in array is by using the map function in Puppet. This example does the same as the example above: ['a', 'b', 'c'].map |$x| { "p${x}" }
Returns: Hash
or [Array] The passed values now contains the passed prefix
Examples
Usage
prefix(['a','b','c'], 'p')
Will return: ['pa','pb','pc']
pry
Type: Ruby 3.x API
This is useful for debugging manifest code at specific points during a compilation.
Examples
Usage
`pry()`
pry()
This is useful for debugging manifest code at specific points during a compilation.
Returns: Any
debugging information
Examples
Usage
`pry()`
pw_hash
Type: Ruby 3.x API
The first argument to this function is the password to hash. If it is undef or an empty string, this function returns undef.
The second argument to this function is which hash algorithm to use. It will be converted into the appropriate crypt(3) hash specifier. Valid hash types are:
Hash type | Prefix | Note |
---|---|---|
MD5 | 1 | |
SHA-256 | 5 | |
SHA-512 | 6 | Recommended |
bcrypt | 2b | |
bcrypt-a | 2a | bug compatible |
bcrypt-x | 2x | bug compatible |
bcrypt-y | 2y | historic alias for 2b |
The third argument to this function is the salt to use. For bcrypt-type hashes, the first two characters of the salt represent a strength parameter, with a value between 4 and 31 inclusive.
Note:: this uses the Puppet Server's implementation of crypt(3). If your environment contains several different operating systems, ensure that they are compatible before using this function.
pw_hash()
The first argument to this function is the password to hash. If it is undef or an empty string, this function returns undef.
The second argument to this function is which hash algorithm to use. It will be converted into the appropriate crypt(3) hash specifier. Valid hash types are:
Hash type | Prefix | Note |
---|---|---|
MD5 | 1 | |
SHA-256 | 5 | |
SHA-512 | 6 | Recommended |
bcrypt | 2b | |
bcrypt-a | 2a | bug compatible |
bcrypt-x | 2x | bug compatible |
bcrypt-y | 2y | historic alias for 2b |
The third argument to this function is the salt to use. For bcrypt-type hashes, the first two characters of the salt represent a strength parameter, with a value between 4 and 31 inclusive.
Note:: this uses the Puppet Server's implementation of crypt(3). If your environment contains several different operating systems, ensure that they are compatible before using this function.
Returns: String
Provides a crypt hash usable on most POSIX systems.
range
Type: Ruby 3.x API
NB Be explicit in including trailing zeros. Otherwise the underlying ruby function will fail.
Note: Passing a third argument will cause the generated range to step by that interval, e.g.
The Puppet Language support Integer and Float ranges by using the type system. Those are suitable for iterating a given number of times.
Integer[0, 9].each |$x| { notice($x) } # notices 0, 1, 2, ... 9
Examples
Usage
range("0", "9")
Will return: [0,1,2,3,4,5,6,7,8,9]
range("00", "09")
Will return: [0,1,2,3,4,5,6,7,8,9]
(Zero padded strings are converted to integers automatically)
range("a", "c")
Will return: ["a","b","c"]
range("host01", "host10")
Will return: ["host01", "host02", ..., "host09", "host10"]
range("0", "9", "2")
Will return: [0,2,4,6,8]
range()
NB Be explicit in including trailing zeros. Otherwise the underlying ruby function will fail.
Note: Passing a third argument will cause the generated range to step by that interval, e.g.
The Puppet Language support Integer and Float ranges by using the type system. Those are suitable for iterating a given number of times.
Integer[0, 9].each |$x| { notice($x) } # notices 0, 1, 2, ... 9
Returns: Any
the range is extrapolated as an array
Examples
Usage
range("0", "9")
Will return: [0,1,2,3,4,5,6,7,8,9]
range("00", "09")
Will return: [0,1,2,3,4,5,6,7,8,9]
(Zero padded strings are converted to integers automatically)
range("a", "c")
Will return: ["a","b","c"]
range("host01", "host10")
Will return: ["host01", "host02", ..., "host09", "host10"]
range("0", "9", "2")
Will return: [0,2,4,6,8]
regexpescape
Type: Ruby 3.x API
Regexp escape a string or array of strings. Requires either a single string or an array as an input.
regexpescape()
The regexpescape function.
Returns: String
A string of characters with metacharacters converted to their escaped form.
reject
Type: Ruby 3.x API
Note: Since Puppet 4.0.0 the same is in general done with the filter function. Here is the equivalence of the reject() function: ['aaa','bbb','ccc','aaaddd'].filter |$x| { $x !~ /a
Examples
Usage
reject(['aaa','bbb','ccc','aaaddd'], 'aaa')
Would return: ['bbb','ccc']
reject()
Note: Since Puppet 4.0.0 the same is in general done with the filter function. Here is the equivalence of the reject() function: ['aaa','bbb','ccc','aaaddd'].filter |$x| { $x !~ /a
Returns: Any
an array containing all the elements which doesn'' match the provided regular expression
Examples
Usage
reject(['aaa','bbb','ccc','aaaddd'], 'aaa')
Would return: ['bbb','ccc']
reverse
Type: Ruby 3.x API
Note: that the same can be done with the reverse_each() function in Puppet.
reverse()
Note: that the same can be done with the reverse_each() function in Puppet.
Returns: Any
reversed string or array
seeded_rand
Type: Ruby 4.x API
DEPRECATED. Use the namespaced function stdlib::seeded_rand
instead.
seeded_rand(Any *$args)
The seeded_rand function.
Returns: Any
*args
Data type: Any
seeded_rand_string
Type: Ruby 4.x API
DEPRECATED. Use the namespaced function stdlib::seeded_rand_string
instead.
seeded_rand_string(Any *$args)
The seeded_rand_string function.
Returns: Any
*args
Data type: Any
shell_escape
Type: Ruby 4.x API
DEPRECATED. Use the namespaced function stdlib::shell_escape
instead.
shell_escape(Any *$args)
The shell_escape function.
Returns: Any
*args
Data type: Any
shell_join
Type: Ruby 3.x API
Builds a command line string from the given array of strings. Each array item is escaped for Bourne shell. All items are then joined together, with a single space in between. This function behaves the same as ruby's Shellwords.shelljoin() function
shell_join()
Builds a command line string from the given array of strings. Each array item is escaped for Bourne shell. All items are then joined together, with a single space in between. This function behaves the same as ruby's Shellwords.shelljoin() function
Returns: Any
a command line string
shell_split
Type: Ruby 3.x API
This function behaves the same as ruby's Shellwords.shellsplit() function
shell_split()
This function behaves the same as ruby's Shellwords.shellsplit() function
Returns: Any
array of tokens
shuffle
Type: Ruby 3.x API
@summary Randomizes the order of a string or array elements.
shuffle()
@summary Randomizes the order of a string or array elements.
Returns: Any
randomized string or array
squeeze
Type: Ruby 3.x API
Returns a new string where runs of the same character that occur in this set are replaced by a single character.
squeeze()
The squeeze function.
Returns: Any
a new string where runs of the same character that occur in this set are replaced by a single character.
stdlib::batch_escape
Type: Ruby 4.x API
- Note:* that the resulting string should be used unquoted and is not intended for use in double quotes nor in single quotes.
stdlib::batch_escape(Any $string)
- Note:* that the resulting string should be used unquoted and is not intended for use in double quotes nor in single quotes.
Returns: Any
An escaped string that can be safely used in a batch command line.
string
Data type: Any
The string to escape
stdlib::crc32
Type: Ruby 4.x API
Run a CRC32 calculation against a given value.
Examples
Check a simple string value
stdlib::crc32('my string') == '18fbd270'
Check a Sensitive datatype
stdlib::crc32(sensitive('my string')) == '18fbd270'
Check a number
stdlib::crc32(100.0) == 'a3fd429a'
stdlib::crc32(100.00000) == 'a3fd429a'
stdlib::crc32(Variant[ScalarData, Sensitive[ScalarData], Binary, Sensitive[Binary]] $my_data)
Run a CRC32 calculation against a given value.
Returns: String
String
Examples
Check a simple string value
stdlib::crc32('my string') == '18fbd270'
Check a Sensitive datatype
stdlib::crc32(sensitive('my string')) == '18fbd270'
Check a number
stdlib::crc32(100.0) == 'a3fd429a'
stdlib::crc32(100.00000) == 'a3fd429a'
my_data
Data type: Variant[ScalarData, Sensitive[ScalarData], Binary, Sensitive[Binary]]
The ScalarData to evaluate
stdlib::deferrable_epp
Type: Puppet Language
This function returns either a rendered template or a deferred function to render at runtime. If any of the values in the variables hash are deferred, then the template will be deferred.
Note: this function requires all parameters to be explicitly passed in. It cannot expect to use facts, class variables, and other variables in scope. This is because when deferred, we have to explicitly pass the entire scope to the client.
stdlib::deferrable_epp(String $template, Hash $variables)
This function returns either a rendered template or a deferred function to render at runtime. If any of the values in the variables hash are deferred, then the template will be deferred.
Note: this function requires all parameters to be explicitly passed in. It cannot expect to use facts, class variables, and other variables in scope. This is because when deferred, we have to explicitly pass the entire scope to the client.
Returns: Variant[String, Sensitive[String], Deferred]
template
Data type: String
variables
Data type: Hash
stdlib::end_with
Type: Ruby 4.x API
Returns true if str ends with one of the prefixes given. Each of the prefixes should be a String.
Examples
'foobar'.stdlib::end_with('bar') => true
'foobar'.stdlib::end_with('foo') => false
'foobar'.stdlib::end_with(['foo', 'baz']) => false
stdlib::end_with(String $test_string, Variant[String[1],Array[String[1], 1]] $suffixes)
The stdlib::end_with function.
Returns: Boolean
True or False
Examples
'foobar'.stdlib::end_with('bar') => true
'foobar'.stdlib::end_with('foo') => false
'foobar'.stdlib::end_with(['foo', 'baz']) => false
test_string
Data type: String
The string to check
suffixes
Data type: Variant[String[1],Array[String[1], 1]]
The suffixes to check
stdlib::ensure
Type: Puppet Language
function to cast ensure parameter to resource specific value
stdlib::ensure(Variant[Boolean, Enum['present', 'absent']] $ensure, Optional[Enum['directory', 'link', 'mounted', 'service', 'file', 'package']] $resource = undef)
The stdlib::ensure function.
Returns: String
ensure
Data type: Variant[Boolean, Enum['present', 'absent']]
resource
Data type: Optional[Enum['directory', 'link', 'mounted', 'service', 'file', 'package']]
stdlib::ensure_packages
Type: Ruby 4.x API
It optionally takes a hash as a second parameter that will be passed as the third argument to the ensure_resource() function.
stdlib::ensure_packages(Variant[String[1], Array[String[1]]] $packages, Optional[Hash] $default_attributes)
The stdlib::ensure_packages function.
Returns: Undef
Returns nothing.
packages
Data type: Variant[String[1], Array[String[1]]]
The packages to ensure are installed.
default_attributes
Data type: Optional[Hash]
Default attributes to be passed to the ensure_resource()
function
stdlib::ensure_packages(Hash[String[1], Any] $packages, Optional[Hash] $default_attributes)
The stdlib::ensure_packages function.
Returns: Undef
Returns nothing.
packages
Data type: Hash[String[1], Any]
The packages to ensure are installed. The keys are packages and values are the attributes specific to that package.
default_attributes
Data type: Optional[Hash]
Default attributes. Package specific attributes from the packages
parameter will take precedence.
stdlib::extname
Type: Ruby 4.x API
If Path is a Dotfile, or starts with a Period, then the starting Dot is not dealt with the Start of the Extension.
An empty String will also be returned, when the Period is the last Character in Path.
Examples
Determining the Extension of a Filename
stdlib::extname('test.rb') => '.rb'
stdlib::extname('a/b/d/test.rb') => '.rb'
stdlib::extname('test') => ''
stdlib::extname('.profile') => ''
stdlib::extname(String $filename)
If Path is a Dotfile, or starts with a Period, then the starting Dot is not dealt with the Start of the Extension.
An empty String will also be returned, when the Period is the last Character in Path.
Returns: String
The Extension starting from the last Period
Examples
Determining the Extension of a Filename
stdlib::extname('test.rb') => '.rb'
stdlib::extname('a/b/d/test.rb') => '.rb'
stdlib::extname('test') => ''
stdlib::extname('.profile') => ''
filename
Data type: String
The Filename
stdlib::fqdn_rand_string
Type: Ruby 4.x API
Optionally, you can specify a character set for the function (defaults to alphanumeric).
Examples
Example Usage:
stdlib::fqdn_rand_string(10)
stdlib::fqdn_rand_string(10, 'ABCDEF!@$%^')
stdlib::fqdn_rand_string(10, undef, 'custom seed')
stdlib::fqdn_rand_string(Integer[1] $length, Optional[Optional[String]] $charset, Optional[Any] *$seed)
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
v9.7.0 - 2024-12-17
Added
- (CAT-2119) Add Ubuntu 24.04 support #1440 (shubhamshinde360)
- (CAT-2101) Add support for Debian-12 #1439 (skyamgarp)
- Support for Amazon linux 2 and 2023 #1427 (h0tw1r3)
Fixed
- (CAT-2180) Upgrade rexml to address CVE-2024-49761 #1443 (amitkarsale)
v9.6.0 - 2024-04-03
Added
v9.5.0 - 2024-03-11
Added
Fixed
- (#1389) - pw_hash with bcrypt not working on puppet master #1410 (TuningYourCode)
Other
- Deprecate
time
function #1417 (alexjfisher)
v9.4.1 - 2023-11-09
Fixed
v9.4.0 - 2023-09-29
Added
- Modernise
fqdn_rotate
function #1341 (alexjfisher)
v9.3.0 - 2023-08-01
Added
Fixed
v9.2.0 - 2023-06-27
Added
- Add
use_strict_setting
parameter todeprecation
function #1378 (alexjfisher)
Fixed
- Ignore Puppet's
strict
setting when calling function without namespace #1377 (alexjfisher) - Pass calling scope to
stdlib::ensure_packages
from shim #1366 (alexjfisher)
v9.1.0 - 2023-06-15
Added
- re-add support for loading aliases in yaml files #1362 (lollipopman)
Fixed
- (CONT-1035) Alter logic of pw_hash #1370 (david22swan)
- Fix
fqdn_rand_string
regression #1367 (alexjfisher) - (CONT-1023) - Enhancing deferrable_epp to support nested hash #1359 (Ramesh7)
v9.0.0 - 2023-05-30
Changed
- Deprecate the
validate_legacy()
function #1353 (smortex) - Remove deprecated functions #1352 (smortex)
- Rewrite validate_email_address() as a Puppet 4.x function #1350 (smortex)
- Rewrite validate_domain_name() as a Puppet 4.x function #1345 (smortex)
- Rewrite seeded_rand() as a Puppet 4.x function #1344 (smortex)
- Rewrite fqdn_rand_string() as a Puppet 4.x function #1343 (smortex)
- Remove deprecated strip function #1338 (smortex)
- Remove deprecated rstrip function #1337 (smortex)
- Remove deprecated getvar function #1336 (smortex)
- Remove deprecated sort function #1335 (smortex)
- Remove deprecated upcase function #1334 (smortex)
- Remove deprecated round function #1333 (smortex)
- Remove deprecated chop function #1331 (smortex)
- Remove deprecated chomp function #1330 (smortex)
- Remove deprecated ceiling function #1329 (smortex)
- Remove deprecated capitalize functions #1328 (smortex)
- Remove deprecated camelcase function #1327 (smortex)
- Modernise
has_interface_with
function #1326 (alexjfisher) - Remove deprecated is_array function #1325 (MartyEwings)
- Remove deprecated is_absolute_path function #1324 (MartyEwings)
- Remove deprecated min function #1323 (MartyEwings)
- Remove deprecated max function #1322 (MartyEwings)
- Remove deprecated lstrip function #1321 (MartyEwings)
- Remove deprecated hash function #1320 (MartyEwings)
- Remove deprecated has_key function #1319 (MartyEwings)
- Remove deprecated downcase function #1318 (MartyEwings)
- Remove deprecated abs function #1317 (MartyEwings)
- Remove dig and dig44 functions #1316 (MartyEwings)
- Remove Puppet 5.5 deprecations #1314 (MartyEwings)
- Remove deprecated unique function #1311 (MartyEwings)
- Remove deprecated Private function #1310 (MartyEwings)
- Remove deprecated type and type3x functions #1309 (MartyEwings)
- (CONT-801) Puppet 8 support / Drop Puppet 6 support #1307 (LukasAud)
Added
- Namespace Puppet 4.x functions #1356 (smortex)
- Add a function to update / regenerate deprecated shims #1349 (smortex)
Fixed
- Remove deprecated File.exists? #1357 (ekohl)
- Fix validate_domain_name called without parameters #1351 (smortex)
- Add Stdlib::IP::Address::CIDR #1348 (Geod24)
- Allow
deferrable_epp
to return aSensitive[String]
#1342 (alexjfisher)
v8.6.0 - 2023-04-24
Added
- Stdlib::Http::Method: Add new type for http methods #1299 (b4ldr)
- Add
stdlib::sha256
#1289 (jcpunk) - Add
stdlib::crc32
#1288 (jcpunk) - Add Stdlib::Ensure::Package type #1281 (arjenz)
Fixed
- (PUP-11752) Fix fqdn_rand_string_spec.rb test #1308 (alexjfisher)
- Make ensure_packages work with
ensure => present
#1300 (alexjfisher) - Safely handle a missing root user #1295 (ekohl)
- stdlib::ensure: update function to support the generic case #1286 (b4ldr)
- Drop Puppet < 3.6 support in package_provider fact #1280 (ekohl)
- Correct bcrypt salt regex #1279 (sabo)
- Determine root_home without shelling out #1278 (ekohl)
- (CONT-173) - Updating deprecated facter instances #1277 (jordanbreen28)
v8.5.0 - 2022-10-13
Added
- Add a Stdlib::CreateResources type #1267 (ekohl)
- pdksync - (GH-cat-11) Certify Support for Ubuntu 22.04 #1261 (david22swan)
- (FEAT) Add function parsepson #1259 (david22swan)
Fixed
- (CONT-200) Fix require relative paths #1275 (chelnak)
- pdksync - (CONT-189) Remove support for RedHat6 / OracleLinux6 / Scientific6 #1272 (david22swan)
- pdksync - (CONT-130) - Dropping Support for Debian 9 #1269 (jordanbreen28)
- (MAINT) Drop support for AIX + Windows EOL OSs #1265 (jordanbreen28)
- (GH-1262) Use 'require_relative' to load stdlib due to lookup errors #1264 (david22swan)
- Switch parsejson() from PSON to JSON parsing #1240 (seanmil)
v8.4.0 - 2022-07-21
Added
v8.3.0 - 2022-07-11
Added
- pdksync - (GH-cat-12) Add Support for Redhat 9 #1247 (david22swan)
- Convert
ensure_packages
to new API and refactor #1244 (alexjfisher)
Fixed
- (MODULES-2892) Handle missing file in file_line #1251 (silug)
- Simplify stdlib::manage #1250 (jcpunk)
- Unbreak
rake strings:generate:reference
#1239 (smortex) - loadjson: do not send http_basic_authentication if not needed #1208 (chaen)
v8.2.0 - 2022-05-16
Added
- Add
xml_encode
function #1236 (alexjfisher) - (MODULES-4976) Add windows escaping functions #1235 (smortex)
- MODULES-11309 : convert a string to a resource #1233 (jcpunk)
- pdksync - (FM-8922) - Add Support for Windows 2022 #1222 (david22swan)
- (MODULES-11196) Add support for AIX 7.2 #1220 (david22swan)
- pdksync - (IAC-1753) - Add Support for AlmaLinux 8 #1216 (david22swan)
Fixed
- Update load_module_metadata.rb to correct capitalisation in strings documentartion #1241 (davidsandilands)
- Modernize escape functions #1238 (smortex)
- Convert data to Pcore before serialisation in to_ruby/to_python #1237 (smortex)
- (maint) Update str2saltedpbkdf2.rb to use the correct salt length #1232 (AriaXLi)
- Fix
to_yaml
options
parameter #1231 (alexjfisher) - pdksync - (GH-iac-334) Remove Support for Ubuntu 14.04/16.04 #1224 (david22swan)
- pdksync - (IAC-1787) Remove Support for CentOS 6 #1219 (david22swan)
- Fix serialization of undef in to_python() #1205 (smortex)
v8.1.0 - 2021-10-04
Added
- pdksync - (IAC-1751) - Add Support for Rocky 8 #1214 (david22swan)
- stdlib::ensure: Add support for package resource #1213 (david-caro)
- Added to_toml function #1209 (nmaludy)
Fixed
- [MODULES-11195] Add lint-ignore for pattern length #1212 (carabasdaniel)
- pdksync - (IAC-1598) - Remove Support for Debian 8 #1210 (david22swan)
- os_version_gte: fix version comparison logic #1207 (kenyon)
- max, lstrip: fix deprecated message #1204 (b4ldr)
- (MODULES-11126) Replacing URI.escape with URI::DEFAULT_PARSER #1195 (valleedelisle)
v8.0.0 - 2021-08-24
Changed
Added
- New function to_python() / to_ruby() #1200 (smortex)
- pdksync - (IAC-1709) - Add Support for Debian 11 #1199 (david22swan)
- Stdlib::Http::Method: Add new type for http methods #1192 (b4ldr)
Fixed
- (MODULES-11099) Make merge parameter data types actually backwards compatible #1191 (LadyNamedLaura)
v7.1.0 - 2021-05-17
Added
v7.0.1 - 2021-04-12
Fixed
- Fix typo in validate_ipv6_address function #1176 (nbarrientos)
v7.0.0 - 2021-03-01
Changed
- pdksync - Remove Puppet 5 from testing and bump minimal version to 6.0.0 #1164 (carabasdaniel)
Added
Fixed
- (bugfix) Setting stricter email validation #1163 (pmcmaw)
- (IAC-1414) Throw error in range() function when step size invalid #1161 (sanfrancrisko)
v6.6.0 - 2021-02-02
Added
- stdlib::ensure: new fuction to cast ensure values #1150 (b4ldr)
- (feat) Add support for Puppet 7 #1144 (daianamezdrea)
- Allow options injection for to_yaml #1137 (baurmatt)
- Allow start/end checks on empty strings #1135 (jvrsantacruz)
- Stdlib::HttpStatus: add type for HTTP status codes as per rfc2616 #1132 (b4ldr)
Fixed
- (IAC-1375) fix unit tests for pe_version fact, when using later facte… #1155 (tphoney)
- seeded_rand: update funtion to ensure it returns an int not String #1139 (b4ldr)
v6.5.0 - 2020-09-30
Added
- Add parsehocon() function #1130 (reidmv)
- Add new types for Stdlib::Ensure::File #1129 (b4ldr)
- Add additional types Stdlib::Port::Dynamic,Ephemeral,Registered,User} #1128 (b4ldr)
- Stdlib::Datasize: This CR adds a new data size type alias #1126 (b4ldr)
v6.4.0 - 2020-08-21
Added
- pdksync - (IAC-973) - Update travis/appveyor to run on new default branch
main
#1117 (david22swan) - (IAC-746) - Add ubuntu 20.04 support #1110 (david22swan)
Fixed
- [MODULES-10781] Fix defined type defined_with_params() #1122 (trevor-vaughan)
- [MODULES-10729] defined_with_params - unnamed type #1115 (trevor-vaughan)
v6.3.0 - 2020-04-16
Added
- Add start_with function #1086 (baurmatt)
- stdlib::end_with: create String.end_with function #1084 (b4ldr)
- Adding str2saltedpbkdf2 function #1040 (genebean)
Fixed
- (MODULES-10623) explicitly top-scope calls to JSON methods #1101 (tkishel)
- [IAC-547] Remove strftime from stdlib as it has already been replaced by the puppet agent since 4.8.0 #1097 (carabasdaniel)
- Add correct namespace for start_with function #1095 (baurmatt)
- intersection: show types in exception due to invalid arguments #1077 (runejuhl)
- Make type aliases stricter #1066 (pegasd)
v6.2.0 - 2019-12-10
Added
- (FM-8696) - Addition of Support for CentOS 8 #1065 (david22swan)
- Add support for additional options to to_json_pretty #1055 (runejuhl)
Fixed
- Fix PE detection (for the moment) #1049 (trevor-vaughan)
v6.1.0 - 2019-09-20
Added
- (MODULES-9915) Add type aliases for cloud object store uris #1048 (hooten)
- FM-8411 - add support for debian10 #1045 (lionce)
- (FM-8230) Convert testing to litmus #1031 (eimlav)
- (FM-8160) Add Windows Server 2019 support #1025 (eimlav)
- (FM-8048) Add RedHat 8 support #1022 (eimlav)
- (MODULES-9049) Add type alias for 'yes' and 'no'. #1017 (ghoneycutt)
- add Stdlib::Syslogfacility type #1005 (bastelfreak)
Fixed
- fix lib/puppet/parser/functions/fqdn_rand_string.rb:21: syntax error #1029 (pulecp)
- Limit the maximum array size produced by range(). #1023 (mbaynton)
v6.0.0 - 2019-05-22
Changed
- pdksync - (MODULES-8444) - Raise lower Puppet bound #1011 (david22swan)
Added
- (MODULES-8760) Add iterative feature to merge() function #1008 (hlindberg)
- Add a stdlib::ip_in_range() function #1003 (iglov)
5.2.0 - 2019-01-18
Added
- (MODULES-8404) - Relax
Stdlib::Filesource
type #981 (alexjfisher) - Creates new type Stdlib::IP::Address::V6::CIDR #980 (timhughes)
- (MODULES-8137) - Addition of support for SLES 15 #978 (david22swan)
- (MODULES-8322) Consider IPs with /0 as valid #975 (simondeziel)
- Add a function to compare the OS version #972 (ekohl)
- (MODULES-8273) - Make unquoted classes useable #971 (baurmatt)
- add Function extname() #949 (cocker-cc)
- (MODULES-7024) Add 20-octet MAC addresses #905 (ananace)
Fixed
- pdksync - (FM-7655) Fix rubygems-update for ruby < 2.3 #979 (tphoney)
- fix ensure_packages duplicate checking #969 (netzvieh)
5.1.0 - 2018-10-01
Added
- pdksync - (MODULES-6805) metadata.json shows support for puppet 6 #958 (tphoney)
- (maint) Convert from mocking with mocha to rspec-mocks #948 (rodjek)
Fixed
- (FM-7388) - Fixing unit tests for puppet 4, 5 and 6 #962 (tphoney)
- (MODULES-7768) Handle nil in delete_undef_values() function #954 (hlindberg)
- Update docs for 'concat' to be correct #950 (rhowe-gds)
5.0.0 - 2018-08-22
Added
- (MODULES-7541) http type checks case insensitive #934 (tphoney)
- (MODULES-7440) Update Stdlib to support Ubuntu 18.04 #932 (david22swan)
- Allow loadyaml() and loadjason() to accept URLs with HTTP basic auth #923 (jonnytdevops)
- Load https file into loadjson() and loadyaml() #918 (jonnytdevops)
- Add support for symbolic file modes #915 (runejuhl)
- (MODULES-7181) Remove Stdlib::(Ipv4|IPv6|Ip_address) #909 (baurmatt)
- Allow pick() to work with strict variables #890 (binford2k)
- seeded_rand_string() function #877 (pegasd)
Fixed
- Make any2array return empty array on empty string #930 (jbro)
- Revert "Allow pick() to work with strict variables" #927 (mwhahaha)
- (docs) update documentation wrt functions moved to puppet #922 (hlindberg)
4.25.1 - 2018-04-04
4.25.0 - 2018-03-13
Added
- (MODULES-6366) Add data types for IP validation #872 (ghoneycutt)
- add Stdlib::Fqdn and Stdlib::Host #842 (b4ldr)
- add Stdlib::Filesource #841 (b4ldr)
- add Stdlib::base64 and Stdlib::Base32 types #840 (b4ldr)
- add Stdlib::Port, Stdlib::Privilegedport & Stdlib::Unprivilegedport #839 (b4ldr)
Fixed
- Handle join_keys_to_values() with undef values. #874 (BobVanB)
- FixToAccountForVersionChange #867 (david22swan)
4.24.0 - 2017-12-08
Fixed
4.23.0 - 2017-11-24
4.22.0 - 2017-11-15
Fixed
4.21.0 - 2017-11-03
Added
- Add Stdlib::Mode type #834 (ghoneycutt)
- (MODULES-5680) Added new function sprintf_hash to allow using named references #824 (vStone)
- (MODULES-5679) Add a new function ifelse to match ruby's tenary operator #823 (vStone)
- Add a type for ensure on service resources #750 (npwalker)
Fixed
- Revert "(MODULES-5679) Add a new function ifelse to match ruby's tenary operator" #832 (david22swan)
- (maint) Fix example syntax #829 (binford2k)
- correct test cases to properly check result #826 (felixdoerre)
- (MODULES-5651) Do not append infinitely #825 (hunner)
- use single quotes in validate_legacy example code #816 (mutante)
- Allow root as valid UNIX path #811 (kofrezo)
- Fix filenames of two function spec tests #777 (alexjfisher)
4.20.0 - 2017-09-11
Added
- (MODULES-5546) add check for pw_hash #810 (eputnam)
- Added to_json, to_json_pretty, and to_yaml functions #809 (WhatsARanjit)
4.19.0 - 2017-08-21
4.18.0 - 2017-08-11
Added
- MODULES-5382 Add documentation for email functions #800 (tphoney)
- add type for MAC address #796 (bastelfreak)
- (MODULES-4908) adds support for sensitive data type to pw_hash #791 (eputnam)
- (FACT-932) Add new function, fact() #787 (reidmv)
- Add validate_domain_name function #753 (frapex)
- Add a round function to complement ceiling and floor #748 (npwalker)
- Add new file_line option append_on_no_match #717 (ripclawffb)
Fixed
- MODULES-5440 fix upper bound for puppet #803 (tphoney)
- (MODULES-5003) file_line does not change multiple lines when one matches #794 (tkishel)
- (MODULES-5003) file_line fix all broken lines #788 (tphoney)
- (MODULES-5113) Make line support Sensitive #786 (reidmv)
- Fix headers in CHANGELOG.md so that headers render correctly #783 (davewongillies)
- (Modules 4377) Causes ensure_packages to accept concurrent declarations with ensure => 'present' and 'installed' #716 (EmersonPrado)
4.17.1 - 2017-06-16
Fixed
- (MODULES-5095) Workaround for PUP-7650 #780 (thallgren)
- (FM-6197) formatting fixes for file_line resource #779 (jbondpdx)
4.17.0 - 2017-05-10
Added
- (FM-6116) - Adding POT file for metadata.json #746 (pmcmaw)
- Add glob function #718 (sspreitzer)
Fixed
- (MODULES-4706) prerelease fixes #771 (eputnam)
- (MODULES-4706) prerelease fixes #770 (jbondpdx)
- (PE-20308) Fix defined_with_params() for defined type strings & references #765 (hunner)
- (PE-20308) Correct boundary for 4.5 vs 4.6 #763 (hunner)
- (PE-20308) Pass a literal type and not a string to findresource #761 (hunner)
- Ruby 1.8 doesn't support open_args #758 (sathieu)
- [MODULES-4528] Replace Puppet.version.to_f version comparison from spec_helper.rb #745 (wilson208)
4.16.0 - 2017-03-21
Added
- (FM-6051) Adds comments to warn for UTF8 incompatibility #741 (HelenCampbell)
- Addition of new length function #736 (HelenCampbell)
- (FM-6086) - Unit tests for Resource Types #734 (pmcmaw)
- (FM-6063) - Unit tests for high effort functions #732 (pmcmaw)
- (MODULES-4485) Improve ipv6 support for type #731 (petems)
- (#FM-6068) allow file encoding to be specified #726 (GeoffWilliams)
Fixed
- Permit double slash in absolute/Unix path types #740 (domcleal)
- (MODULES-4528) Use versioncmp to check Puppet version for 4.10.x compat #737 (domcleal)
- Should only try to apply the resource if it not defined #735 (elmobp)
- loosen the regex for tuple checking #728 (tphoney)
- Fix acceptance test failure "Hiera is not a class" #720 (DavidS)
- Fix unsupported data type error with rspec-puppet master #715 (domcleal)
4.15.0 - 2017-01-20
Added
- Implement beaker-module_install_helper #713 (wilson208)
- Addition of compat hash type for deprecation #708 (HelenCampbell)
- add ubuntu xenial to metadata #705 (eputnam)
- (MODULES-4188) Add UUID generation function #700 (petems)
- Add pry() function from hunner-pry #640 (hunner)
- Add puppet_server fact to return agent's server #613 (reidmv)
4.14.0 - 2016-12-12
Added
- (MODULES-3829) Add tests for ensure_resources #697 (HAIL9000)
- Addition of 4.6 and 4.7 travis cells #686 (HelenCampbell)
- Handle array values in join_keys_to_values function #632 (edestecd)
Fixed
- (MODULES-3393) Deprecation - Use puppet stacktrace if available #693 (HelenCampbell)
- Revert "Call site output for deprecation warnings" #692 (bmjen)
- Fix spec failures on puppet 4.8 #689 (DavidS)
- (MODULES-3829) Use .dup to duplicate classes for modification. #687 (MG2R)
- (MODULES-3980) Fix ipv4 regex validator #680 (DavidS)
4.13.1 - 2016-10-13
4.13.0 - 2016-10-11
Added
- Add deprecation warnings to remaining validates #656 (HelenCampbell)
- Addition of logging with file and line numbers #651 (HelenCampbell)
- Add facter fact for puppet_environmentpath #648 (stbenjam)
- (MODULES-3540) Addition of validate legacy function #630 (HelenCampbell)
- Added documentation for regexpescape function. #625 (mooresm1)
- Added the regexpescape function. #624 (mooresm1)
- (MODULES-3529) add deprecation function #617 (tphoney)
- Add delete_regex #605 (jyaworski)
- Add a missing s in the ensure_packages hash example #604 (rjw1)
- (MODULES-1439) Adds any2bool function #601 (petems)
- Add the default value to the "loadyaml" function #600 (dmitryilyin)
Fixed
- (MODULES-3590) Fix match_for_absence parameter #666 (HAIL9000)
- Ignore :undefined_variable "reason" in getvar #665 (mks-m)
- (MODULES-3933) Fix getparam for 'false' values #663 (DavidS)
- Permit undef passed as
nil
to validate_string #662 (domcleal) - Ensure validate functions use Puppet 4 deprecation #659 (HelenCampbell)
- Revert "Ensure validate functions use Puppet 4 deprecation" #655 (HelenCampbell)
- Ensure validate functions use Puppet 4 deprecation #654 (HelenCampbell)
- Fix whitespace #653 (hunner)
- MODULES-3699 Deprecation spec fix 2 #646 (eputnam)
- Fix markdown indentation #631 (smortex)
- Fix str2bool error message #626 (LoicGombeaud)
- (MODULES-3543) Fixup defined_with_params to work on all puppet versions #615 (DavidS)
- (MODULES-3543) Fix define_with_params to handle undef properly #614 (DavidS)
- (MODULES-3354) Use 1.8.7 hash in validate_email_address function #606 (stbenjam)
- Use reject instead of delete_if #592 (jyaworski)
4.12.0 - 2016-05-03
Added
- Add support for regular expressions to delete #591 (jyaworski)
- Add validate_email_address function #583 (jyaworski)
- Add check if Gem is defined #579 (sulaweyo)
- Add enclose_ipv6 function #577 (EmilienM)
- ensure_packages.rb: Modifed to pass hiera parameters (as hash,array) as first argument #576 (yadavnikhil)
- Extend Base64() function support #575 (guessi)
- Add dig function #573 (mks-m)
- Add is_ipv4_address and is_ipv6_address functions #570 (gfidente)
- Add test for basename on path with scheme #567 (alechenninger)
Fixed
- Undo changing delete() to delete regex matches #599 (hunner)
- (MODULES-3271) Ensure that is_email_address works on unsupported rubies #598 (DavidS)
- (MODULES-3246) Fix concat with Hash arguments. #590 (alext)
- (maint) Fixes fqdn_rand_string tests #578 (bmjen)
- Fix reference to validate_bool in function #568 (mattbostock)
4.11.0 - 2016-01-11
Added
- minor tweak to 4.11.0 adding debian 8 to metadata #565 (tphoney)
- Allow package_provider fact to resolve on PE 3.x #561 (DavidS)
- adds new parser called is_absolute_path #553 (logicminds)
- Add a function to validate an x509 RSA key pair #552 (mattbostock)
- Add clamp function #545 (mpolenchuk)
4.10.0 - 2015-12-15
Added
4.9.1 - 2015-12-04
Added
- Add validator for any IP address #546 (devvesa)
- Add check to ensure regex does not throw for none type. #539 (mentat)
- add functionality to bool2str function #538 (mmckinst)
- Add package_provider fact #534 (asasfu)
- (MODULES-2561) add is_a function #523 (DavidS)
- accept any case of boolean strings #518 (logicminds)
- [MODULES-2462] Improve parseyaml function #511 (dmitryilyin)
- Add a service_provider fact #506 (binford2k)
Fixed
- Fix reference to validate_bool in IP4 function #551 (mattbostock)
- Fix Gemfile to work with ruby 1.8.7 #548 (bmjen)
- (FM-3773) Fix root_home fact on AIX 5.x #547 (reidmv)
- Use absolute class name in example #543 (ghoneycutt)
- use properly encoded characters #542 (greg0ire)
- Fix load module metadata #537 (cmurphy)
- prevent deprecation warning about the allow_virtual parameter #535 (martinpfeifer)
- Fix backwards compatibility from #511 #527 (underscorgan)
4.9.0 - 2015-09-08
Added
- Adds a convert_base function, which can convert numbers between bases #514 (DavidS)
- Add a new function "try_get_value" #513 (dmitryilyin)
- (MODULES-2456) Modify union to accept more than two arrays #507 (Jetroid)
- (MODULES-2410) Add new functions dos2unix and unix2dos #505 (gibbsoft)
Fixed
- (MAINT) fix up try_get_value acceptance test #517 (DavidS)
- Ticket/MODULES-2478 Make root_home fact work on AIX using native lsuser command #515 (jfautley)
4.8.0 - 2015-08-12
Added
- [#puppethack] Adding replace attribute to file_line #494 (rmaika)
- Add load_metadata_json function #483 (nibalizer)
Fixed
- Fix extraneous end #501 (hunner)
- (MODULES-2316) Change file_type boolean parameter to symbols #497 (domcleal)
- Style fixes #491 (ekohl)
4.7.0 - 2015-07-23
Added
- adding support for hash in the size function #489 (gcmalloc)
- Add support for Solaris 12 #478 (drewfisher314)
- (FM-2130) Document new location of facts.d cache #454 (elyscape)
Fixed
- (maint) Fix test to not assume is_pe fact on > 4.0.0 puppet #488 (cyberious)
- Fix documentation error in upcase #487 (liv3d)
- Clarify that third argument to ensure_resource() is a hash #485 (ghoneycutt)
- Use puppet_install_helper #484 (underscorgan)
- catch and rescue from looking up non-existent facts #479 (mklette)
- AIO uses puppet 4 so should return true for is_future_parser_enabled #477 (underscorgan)
- Also catch :undefined_variable as thrown by future parser #470 (bobtfish)
- Fix time() on 1.8.7 #469 (hunner)
- Fix spelling of camelcase #468 (kylog)
- (MODULES-1882) convert function tests to rspec-puppet #464 (DavidS)
- (MODULES-2071) Patch file_line provider to use multiple with after #463 (rmaika)
- fqdn_rotate: Don't use the value itself as part of the random seed #462 (elyscape)
- validate_integer, validate_numeric: explicitely reject hashes in arrays #461 (DavidS)
- fqdn_rotate: reset srand seed correctly on old ruby versions #460 (DavidS)
- range(): fix TypeError(can't convert nil into Integer) when using range ... #448 (DavidS)
- Fix pw_hash() on JRuby < 1.7.17 #446 (elyscape)
- uses include type class declaration #441 (mrzarquon)
- fqdn_rand_string: fix argument error message #440 (DavidS)
- Check if file exists before loading with loadyaml. If not, return nil #314 (amateo)
4.6.0 - 2015-04-15
Added
- Modules-2474: Only runs enhanced salts functions test on systems that ... #434 (bmjen)
- Clarifying behaviour of attributes and adding an extra example. #430 (underscorgan)
- (BKR-147) add Gemfile setting for BEAKER_VERSION for puppet... #426 (anodelman)
- Add ability to pin beaker versions #423 (cyberious)
- Add support for hashes in the prefix function #420 (underscorgan)
- Loosen the restrictions of upcase and allow for recursion of the objects... #419 (cyberious)
- Add Hash to upcase #417 (cyberious)
- (MODULES-1737) Add pw_hash() function #408 (elyscape)
- Add a ceiling function to complement the floor function. #407 (adamcrews)
- (MODULES-1715) Add FQDN-based random string generator #405 (elyscape)
- (MODULES-560) Add new functions validate_numeric() and validate_integer(). #375 (poikilotherm)
Fixed
- Fix the 4.6.0 release date #438 (hunner)
- Fix acceptance tests for #405 #433 (cmurphy)
- Fix unsupported platforms variable name in tests #432 (cmurphy)
- File_line checks provided after param if no match is found #431 (bmjen)
- Fix off-by-one error in validate_augeas_spec.rb that was causing rspec failure #425 (jeffcoat)
- Fix issue with 1.8.7 and upcase #418 (cyberious)
- Check for string before copying #413 (underscorgan)
- (MODULES-1771) Don't modify input to is_domain_name() #412 (seanmil)
- Fix Travis builds #411 (elyscape)
- (MODULES-1738) Don't modify the global seed in fqdn_rotate() #406 (elyscape)
- (MODULES-1670) Do not match dotted-quad IP address as domain name #404 (roderickm)
- Dirname typecheck #369 (rfugina)
4.5.1 - 2015-01-14
Added
- MODULES-1606 add ability to pass array to delete for items to delete #392 (cyberious)
- MODULES-444-Add concat multiple #374 (petems)
- Allow array of pathes in validate_absolute_path #372 (poikilotherm)
- Basename implementation #368 (rfugina)
Fixed
- FM-2131 Move to non temp directory for factor_dot_d #401 (cyberious)
- Pull in RSpec 3.0 fixes. #398 (cyberious)
- Change all to each #396 (hunner)
- FM-2130 Move cache file to non temp directory #395 (cyberious)
- Fix bad check in test #389 (underscorgan)
- (MODULES-1582) File location placeholder #377 (petems)
- ensure_resource: be more verbose in debug mode #336 (mklette)
- Correct function name in changelog #301 (3flex)
4.5.0 - 2014-12-16
Added
- FM-2020 SLES Support verified #371 (cyberious)
- FM-1523: Added module summary to metadata.json #370 (jbondpdx)
- (MODULES-1329) Allow member to look for array #319 (Spredzy)
Fixed
- Need to convert strings and fixnums to arrays #367 (underscorgan)
- Make the range function work with integers #365 (dalen)
- (maint) Fix indentation of range function #364 (dalen)
4.4.0 - 2014-11-12
Added
- (QENG-1404) Segregate system testing gems #356 (justinstoller)
- MODULES-1413 Add ability for member to take numeric objects #350 (cyberious)
- Add proper exception catching of Windows errors when CreateProcess does not succeed #348 (cyberious)
- Added correct converstions for PB and EB. #343 (big-samantha)
- add require 'tempfile' to resolve a previously autorequired resource #340 (cyberious)
- (MODULES-1221) Add file_line autorequire documentation #300 (trlinkin)
Fixed
- Fix exclude windows test on ensure_package #363 (hunner)
- Correct type() logic #358 (hunner)
- Fix the unless for test cases on ensure_package and ensure_resource #353 (cyberious)
- Fix validate_cmd, previous addition of SystemCallError only works for Puppet 3.7, previous version throw different exception. Wrapping in generic Exception catch all #349 (cyberious)
- Fix issue with ensure_request #347 (cyberious)
- Spec_helper_acceptance fix provision section #346 (cyberious)
- Fix logic issue with not including windows for testing ensure_packages as ruby and gem are not on the install path #345 (cyberious)
- Fix testcases for Future Parser and resolve issue with values_at in assuming that it was dealing with a string #344 (cyberious)
- ENTERPRISE-281 fixes issue with has_interfaces and case mismatch causing... #334 (cyberious)
- MODULES-1248 Fix issue with not properly counting regex matches with leg... #321 (cyberious)
- Fix strict_variables = true #303 (bobtfish)
4.3.2 - 2014-07-16
4.3.1 - 2014-07-16
Fixed
4.3.0 - 2014-07-09
Added
- AIX has no facter network support #296 (hunner)
- Start synchronizing module files #290 (cmurphy)
- stdlib 4 isn't compatible with PE 3.2 #286 (hunner)
- Increase resilience if lookup var comes back with nil object #284 (cyberious)
- Add windows support and work around issue with SCP_TO on windows systems #283 (cyberious)
- Add windows Nodesets and remove Beaker from Gemfile #278 (cyberious)
- Add private() function #270 (raphink)
Fixed
- Gotta single quote yer typewriter buttons #293 (hunner)
- Need quotes for spaces in path #292 (hunner)
- has_ip_network doesn't work on windows either #291 (hunner)
- Disable windows network stuff and quote path #289 (hunner)
- Not enough escape velocity #288 (hunner)
- Fix pe facts and slashes #287 (hunner)
- Windows needs a tmpdir path #281 (hunner)
- Augeas isn't present on windows #280 (hunner)
- (FM-1587) Fix test issues on solaris 10 #276 (hunner)
4.2.2 - 2014-06-05
3.2.2 - 2014-06-05
Added
- (PUP-2571) add 'before' functionality to file_line #256 (stbenjam)
- (MODULES-905) Add bool2str() and camelcase() for string manipulation #255 (mckern)
Fixed
- Further fixes to tests for 14.04. #265 (apenney)
- Fixes for PE3.3. #264 (apenney)
- (MODULES-905) Narrow the confinement in bool2str #258 (mckern)
- Revert "Merge pull request #256 from stbenjam/2571-before" #257 (apenney)
4.2.1 - 2014-05-09
4.2.0 - 2014-05-08
Added
- Adding more spec coverage #247 (hunner)
- Add more specs #244 (hunner)
- Add beaker tests for functions. #243 (hunner)
- Add beaker framework. #234 (apenney)
- Allow concat to take non-array second parameters #222 (mfoo)
Fixed
- Fix the stdlib functions that fail tests #251 (hunner)
- Add the missing shebangs and fix the wrong ones #248 (averi)
- Fix the validate_augeas beaker tests #245 (hunner)
- Adjust the regular expression for facts. #242 (apenney)
- Make sure location_for is used when installing Puppet. #233 (apenney)
- Readd location_for #232 (apenney)
- hash example has misplaced comas #221 (jtreminio)
3.2.1 - 2014-03-03
Added
- (PUP-1459) Add support for root_home on OS X 10.9 #215 (blkperl)
- (#23381) add is_bool() function #211 (jhoblitt)
- Add rake tasks to validate and lint files and check with Travis #208 (ghoneycutt)
- (#16498) Added unit test for loadyaml function. #185 (lmello)
- Add delete_values() and delete_undef_values() functions #166 (ptomulik)
- Adding base64 function #159 (fiddyspence)
- [#20862] Add functions to validate ipv4 and ipv6 addresses #158 (wfarr)
- (#20684) Add array comparison functions, difference, intersection and un... #155 (AlexCline)
- add a "step" argument to range() #56 (hakamadare)
Fixed
- calling rspec directly makes is_function_available.rb not pass ruby -c #203 (dreamlibrarian)
- Fix the tests on osx #200 (bobtfish)
- delete_undef_values function fix bug #20681 #184 (lmello)
- delete_values() fix bug #20681. #182 (lmello)
- Minor grammar fix #181 (nibalizer)
- bug # 20681 delete() function should not remove elements from original list #178 (lmello)
- (maint) fix RST formatting of has_interface_with code examples #175 (floatingatoll)
- minor corrections to delete_values() #170 (ptomulik)
- Fix validate_slength, arg.length should be args[0].length #169 (hdeheer)
- ensure_resource: fix documentation typo #165 (bootc)
- Trivial documentation fix for upcase function. #157 (rohanrns)
4.1.0 - 2013-05-10
Added
- (#20548) Allow an array of resource titles to be passed into the ensure_... #152 (AlexCline)
- Add a dirname function #150 (raphink)
4.0.2 - 2013-04-12
Added
- adds compatibility matrix #144 (ghoneycutt)
4.0.1 - 2013-04-11
4.0.0 - 2013-04-11
Added
- Add floor function implementation and unit tests #135 (willaerk)
- (#19272) Add has_element() function #130 (jhoblitt)
- Add validate_augeas command #114 (raphink)
Fixed
- (19864) num2bool match fix #139 (hakamadare)
- (maint) Fix getparam() spec failure on MRI 1.8 #125 (jeffmccune)
- Fix typo in travis configuration #122 (jeffmccune)
- maint: style guideline fixes #112 (dalen)
3.2.0 - 2012-11-28
2.6.0 - 2012-11-28
3.1.1 - 2012-10-25
Fixed
- (maint) Fix spec failures resulting from Facter API changes between 1.x and 2.x #100 (jeffmccune)
2.5.1 - 2012-10-25
3.1.0 - 2012-10-25
2.5.0 - 2012-10-25
Added
3.0.1 - 2012-10-11
Fixed
- (Maint) Fix mis-use of rvalue functions as statements #91 (jeffmccune)
- Revert "Merge branch 'hkenney-ticket/master/2157_remove_facts_dot_d'" #89 (jeffmccune)
3.0.0 - 2012-08-16
Added
Fixed
2.4.0 - 2012-08-14
Added
Fixed
- Fix up 2.3.x for new scope #80 (jeffmccune)
- (#2157) Make facts_dot_d compatible with external facts #77 (HAIL9000)
2.3.3 - 2012-05-23
Fixed
2.3.2 - 2012-05-10
Fixed
- Make file_line default to ensure => present #69 (jeffmccune)
2.1.3 - 2012-03-29
2.3.1 - 2012-03-13
Fixed
- (#13091) Fix LoadError exception with puppet apply #50 (jeffmccune)
2.3.0 - 2012-03-12
Added
- (#12357) Add ability to display an error message from validate_re #47 (jeffmccune)
- (#12357) Add validate_absolute_path() function #46 (jeffmccune)
- (#12776) Added validate_slength function and rspec test #37 (fiddyspence)
- implement #11017 - make file_line type ensurable #36 (duritong)
- New str2saltedsha512 function for OS X Passwords #27 (glarizza)
- (#11607) Add Rakefile to enable spec testing #26 (jeffmccune)
Fixed
- (#12357) Fix broken compatibility with Puppet 2.6 #49 (jeffmccune)
- (#12357) Fix root_home fact on Windows #45 (jeffmccune)
- (#12357) Make facter_dot_d look in Puppet[:confdir]/facts.d #44 (jeffmccune)
- (#11873) time function spec failure on Fixnum matcher #28 (kbarber)
v2.2.1 - 2011-12-30
v2.1.2 - 2011-12-30
Added
v2.2.0 - 2011-11-08
Added
- (#9859) Add root_home fact and tests #17 (jeffmccune)
- (#8925) Added new function called 'get_certificate' for retrieving #13 (kbarber)
Fixed
v2.1.1 - 2011-08-18
v2.1.0 - 2011-08-17
Added
- (#9080) Add facts from /etc/puppetlabs/facts.d #14 (jeffmccune)
v2.0.0 - 2011-08-08
v1.1.0 - 2011-08-04
v1.0.0 - 2011-08-04
v0.1.7 - 2011-06-21
0.1.6 - 2011-06-15
0.1.5 - 2011-06-03
0.1.4 - 2011-05-26
0.1.3 - 2011-05-25
0.1.2 - 2011-05-24
0.1.1 - 2011-05-24
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 [yyyy] [name of copyright owner] 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.
Quality checks
We run a couple of automated scans to help you assess a module’s quality. Each module is given a score based on how well the author has formatted their code and documentation and select modules are also checked for malware using VirusTotal.
Please note, the information below is for guidance only and neither of these methods should be considered an endorsement by Puppet.
Malware scan results
The malware detection service on Puppet Forge is an automated process that identifies known malware in module releases before they’re published. It is not intended to replace your own virus scanning solution.
Learn more about malware scans- Module name:
- puppetlabs-stdlib
- Module version:
- 9.7.0
- Scan initiated:
- December 16th 2024, 22:31:01
- Detections:
- 0 / 61
- Scan stats:
- 61 undetected
- 0 harmless
- 0 failures
- 0 timeouts
- 0 malicious
- 0 suspicious
- 15 unsupported
- Scan report:
- View the detailed scan report