diff --git a/CHANGELOG.md b/CHANGELOG.md index ccc7743..3c4f3ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,1266 +1,1284 @@ # Change log All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org). +## [v8.1.0](https://github.com/puppetlabs/puppetlabs-stdlib/tree/v8.1.0) (2021-10-04) + +[Full Changelog](https://github.com/puppetlabs/puppetlabs-stdlib/compare/v8.0.0...v8.1.0) + +### Added + +- pdksync - \(IAC-1751\) - Add Support for Rocky 8 [\#1214](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1214) ([david22swan](https://github.com/david22swan)) +- stdlib::ensure: Add support for package resource [\#1213](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1213) ([david-caro](https://github.com/david-caro)) +- Added to\_toml function [\#1209](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1209) ([nmaludy](https://github.com/nmaludy)) + +### Fixed + +- \[MODULES-11195\] Add lint-ignore for pattern length [\#1212](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1212) ([carabasdaniel](https://github.com/carabasdaniel)) +- pdksync - \(IAC-1598\) - Remove Support for Debian 8 [\#1210](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1210) ([david22swan](https://github.com/david22swan)) +- os\_version\_gte: fix version comparison logic [\#1207](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1207) ([kenyon](https://github.com/kenyon)) +- max, lstrip: fix deprecated message [\#1204](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1204) ([b4ldr](https://github.com/b4ldr)) +- \(MODULES-11126\) Replacing URI.escape with URI::DEFAULT\_PARSER [\#1195](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1195) ([valleedelisle](https://github.com/valleedelisle)) + ## [v8.0.0](https://github.com/puppetlabs/puppetlabs-stdlib/tree/v8.0.0) (2021-08-24) [Full Changelog](https://github.com/puppetlabs/puppetlabs-stdlib/compare/v7.1.0...v8.0.0) ### Changed - Flip installed and present in Function ensure\_packages [\#1196](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1196) ([cocker-cc](https://github.com/cocker-cc)) ### Added - New function to\_python\(\) / to\_ruby\(\) [\#1200](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1200) ([smortex](https://github.com/smortex)) - pdksync - \(IAC-1709\) - Add Support for Debian 11 [\#1199](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1199) ([david22swan](https://github.com/david22swan)) - Stdlib::Http::Method: Add new type for http methods [\#1192](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1192) ([b4ldr](https://github.com/b4ldr)) ### Fixed - \(MODULES-11099\) Make merge parameter data types actually backwards compatible [\#1191](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1191) ([SimonPe](https://github.com/SimonPe)) ## [v7.1.0](https://github.com/puppetlabs/puppetlabs-stdlib/tree/v7.1.0) (2021-05-17) [Full Changelog](https://github.com/puppetlabs/puppetlabs-stdlib/compare/v7.0.1...v7.1.0) ### Added - pw\_hash: add support for bcrypt variants [\#1173](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1173) ([kjetilho](https://github.com/kjetilho)) ## [v7.0.1](https://github.com/puppetlabs/puppetlabs-stdlib/tree/v7.0.1) (2021-04-12) [Full Changelog](https://github.com/puppetlabs/puppetlabs-stdlib/compare/v7.0.0...v7.0.1) ### Fixed - Fix typo in validate\_ipv6\_address function [\#1176](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1176) ([nbarrientos](https://github.com/nbarrientos)) ## [v7.0.0](https://github.com/puppetlabs/puppetlabs-stdlib/tree/v7.0.0) (2021-03-01) [Full Changelog](https://github.com/puppetlabs/puppetlabs-stdlib/compare/v6.6.0...v7.0.0) ### Changed - pdksync - Remove Puppet 5 from testing and bump minimal version to 6.0.0 [\#1164](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1164) ([carabasdaniel](https://github.com/carabasdaniel)) ### Added - Stdlib::Email type [\#1160](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1160) ([b4ldr](https://github.com/b4ldr)) ### Fixed - \(bugfix\) Setting stricter email validation [\#1163](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1163) ([pmcmaw](https://github.com/pmcmaw)) - \(IAC-1414\) Throw error in range\(\) function when step size invalid [\#1161](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1161) ([sanfrancrisko](https://github.com/sanfrancrisko)) ## [v6.6.0](https://github.com/puppetlabs/puppetlabs-stdlib/tree/v6.6.0) (2021-02-02) [Full Changelog](https://github.com/puppetlabs/puppetlabs-stdlib/compare/v6.5.0...v6.6.0) ### Added - stdlib::ensure: new fuction to cast ensure values [\#1150](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1150) ([b4ldr](https://github.com/b4ldr)) - \(feat\) Add support for Puppet 7 [\#1144](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1144) ([daianamezdrea](https://github.com/daianamezdrea)) - Allow options injection for to\_yaml [\#1137](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1137) ([baurmatt](https://github.com/baurmatt)) - Allow start/end checks on empty strings [\#1135](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1135) ([jvrsantacruz](https://github.com/jvrsantacruz)) - Stdlib::HttpStatus: add type for HTTP status codes as per rfc2616 [\#1132](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1132) ([b4ldr](https://github.com/b4ldr)) ### Fixed - \(IAC-1375\) fix unit tests for pe\_version fact, when using later facte… [\#1155](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1155) ([tphoney](https://github.com/tphoney)) - seeded\_rand: update funtion to ensure it returns an int not String [\#1139](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1139) ([b4ldr](https://github.com/b4ldr)) ## [v6.5.0](https://github.com/puppetlabs/puppetlabs-stdlib/tree/v6.5.0) (2020-09-30) [Full Changelog](https://github.com/puppetlabs/puppetlabs-stdlib/compare/v6.4.0...v6.5.0) ### Added - Add parsehocon\(\) function [\#1130](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1130) ([reidmv](https://github.com/reidmv)) - Add new types for Stdlib::Ensure::File [\#1129](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1129) ([b4ldr](https://github.com/b4ldr)) - Add additional types Stdlib::Port::Dynamic,Ephemeral,Registered,User} [\#1128](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1128) ([b4ldr](https://github.com/b4ldr)) - Stdlib::Datasize: This CR adds a new data size type alias [\#1126](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1126) ([b4ldr](https://github.com/b4ldr)) ## [v6.4.0](https://github.com/puppetlabs/puppetlabs-stdlib/tree/v6.4.0) (2020-08-20) [Full Changelog](https://github.com/puppetlabs/puppetlabs-stdlib/compare/v6.3.0...v6.4.0) ### Added - pdksync - \(IAC-973\) - Update travis/appveyor to run on new default branch `main` [\#1117](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1117) ([david22swan](https://github.com/david22swan)) - \(IAC-746\) - Add ubuntu 20.04 support [\#1110](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1110) ([david22swan](https://github.com/david22swan)) ### Fixed - \[MODULES-10781\] Fix defined type defined\_with\_params\(\) [\#1122](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1122) ([trevor-vaughan](https://github.com/trevor-vaughan)) - \[MODULES-10729\] defined\_with\_params - unnamed type [\#1115](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1115) ([trevor-vaughan](https://github.com/trevor-vaughan)) ## [v6.3.0](https://github.com/puppetlabs/puppetlabs-stdlib/tree/v6.3.0) (2020-04-16) [Full Changelog](https://github.com/puppetlabs/puppetlabs-stdlib/compare/v6.2.0...v6.3.0) ### Added - Add start\_with function [\#1086](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1086) ([baurmatt](https://github.com/baurmatt)) - stdlib::end\_with: create String.end\_with function [\#1084](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1084) ([b4ldr](https://github.com/b4ldr)) - Adding str2saltedpbkdf2 function [\#1040](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1040) ([genebean](https://github.com/genebean)) ### Fixed - \(MODULES-10623\) explicitly top-scope calls to JSON methods [\#1101](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1101) ([tkishel](https://github.com/tkishel)) - \[IAC-547\] Remove strftime from stdlib as it has already been replaced by the puppet agent since 4.8.0 [\#1097](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1097) ([carabasdaniel](https://github.com/carabasdaniel)) - Add correct namespace for start\_with function [\#1095](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1095) ([baurmatt](https://github.com/baurmatt)) - intersection: show types in exception due to invalid arguments [\#1077](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1077) ([runejuhl](https://github.com/runejuhl)) - Make type aliases stricter [\#1066](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1066) ([pegasd](https://github.com/pegasd)) ## [v6.2.0](https://github.com/puppetlabs/puppetlabs-stdlib/tree/v6.2.0) (2019-12-10) [Full Changelog](https://github.com/puppetlabs/puppetlabs-stdlib/compare/v6.1.0...v6.2.0) ### Added - \(FM-8696\) - Addition of Support for CentOS 8 [\#1065](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1065) ([david22swan](https://github.com/david22swan)) - Add support for additional options to to\_json\_pretty [\#1055](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1055) ([runejuhl](https://github.com/runejuhl)) ### Fixed - Fix PE detection \(for the moment\) [\#1049](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1049) ([trevor-vaughan](https://github.com/trevor-vaughan)) ## [v6.1.0](https://github.com/puppetlabs/puppetlabs-stdlib/tree/v6.1.0) (2019-09-20) [Full Changelog](https://github.com/puppetlabs/puppetlabs-stdlib/compare/v6.0.0...v6.1.0) ### Added - \(MODULES-9915\) Add type aliases for cloud object store uris [\#1048](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1048) ([hooten](https://github.com/hooten)) - FM-8411 - add support for debian10 [\#1045](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1045) ([lionce](https://github.com/lionce)) - \(FM-8230\) Convert testing to litmus [\#1031](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1031) ([eimlav](https://github.com/eimlav)) - \(FM-8160\) Add Windows Server 2019 support [\#1025](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1025) ([eimlav](https://github.com/eimlav)) - \(FM-8048\) Add RedHat 8 support [\#1022](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1022) ([eimlav](https://github.com/eimlav)) - \(MODULES-9049\) Add type alias for 'yes' and 'no'. [\#1017](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1017) ([ghoneycutt](https://github.com/ghoneycutt)) - add Stdlib::Syslogfacility type [\#1005](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1005) ([bastelfreak](https://github.com/bastelfreak)) ### Fixed - fix lib/puppet/parser/functions/fqdn\_rand\_string.rb:21: syntax error [\#1029](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1029) ([pulecp](https://github.com/pulecp)) - Limit the maximum array size produced by range\(\). [\#1023](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1023) ([mbaynton](https://github.com/mbaynton)) ## [v6.0.0](https://github.com/puppetlabs/puppetlabs-stdlib/tree/v6.0.0) (2019-05-10) [Full Changelog](https://github.com/puppetlabs/puppetlabs-stdlib/compare/5.2.0...v6.0.0) ### Changed - pdksync - \(MODULES-8444\) - Raise lower Puppet bound [\#1011](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1011) ([david22swan](https://github.com/david22swan)) - \(MODULES-8760\) Add iterative feature to merge\(\) function [\#1008](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1008) ([hlindberg](https://github.com/hlindberg)) ### Added - Add a stdlib::ip\_in\_range\(\) function [\#1003](https://github.com/puppetlabs/puppetlabs-stdlib/pull/1003) ([iglov](https://github.com/iglov)) ## [5.2.0](https://github.com/puppetlabs/puppetlabs-stdlib/tree/5.2.0) (2019-01-17) [Full Changelog](https://github.com/puppetlabs/puppetlabs-stdlib/compare/5.1.0...5.2.0) ### Added - \(MODULES-8404\) - Relax `Stdlib::Filesource` type [\#981](https://github.com/puppetlabs/puppetlabs-stdlib/pull/981) ([alexjfisher](https://github.com/alexjfisher)) - Creates new type Stdlib::IP::Address::V6::CIDR [\#980](https://github.com/puppetlabs/puppetlabs-stdlib/pull/980) ([timhughes](https://github.com/timhughes)) - \(MODULES-8137\) - Addition of support for SLES 15 [\#978](https://github.com/puppetlabs/puppetlabs-stdlib/pull/978) ([david22swan](https://github.com/david22swan)) - \(MODULES-8322\) Consider IPs with /0 as valid [\#975](https://github.com/puppetlabs/puppetlabs-stdlib/pull/975) ([simondeziel](https://github.com/simondeziel)) - Add a function to compare the OS version [\#972](https://github.com/puppetlabs/puppetlabs-stdlib/pull/972) ([ekohl](https://github.com/ekohl)) - \(MODULES-8273\) - Make unquoted classes useable [\#971](https://github.com/puppetlabs/puppetlabs-stdlib/pull/971) ([baurmatt](https://github.com/baurmatt)) - add Function extname\(\) [\#949](https://github.com/puppetlabs/puppetlabs-stdlib/pull/949) ([cocker-cc](https://github.com/cocker-cc)) - \(MODULES-7024\) Add 20-octet MAC addresses [\#905](https://github.com/puppetlabs/puppetlabs-stdlib/pull/905) ([ananace](https://github.com/ananace)) ### Fixed - pdksync - \(FM-7655\) Fix rubygems-update for ruby \< 2.3 [\#979](https://github.com/puppetlabs/puppetlabs-stdlib/pull/979) ([tphoney](https://github.com/tphoney)) - fix ensure\_packages duplicate checking [\#969](https://github.com/puppetlabs/puppetlabs-stdlib/pull/969) ([netzvieh](https://github.com/netzvieh)) ## [5.1.0](https://github.com/puppetlabs/puppetlabs-stdlib/tree/5.1.0) (2018-09-28) [Full Changelog](https://github.com/puppetlabs/puppetlabs-stdlib/compare/5.0.0...5.1.0) ### Added - pdksync - \(MODULES-6805\) metadata.json shows support for puppet 6 [\#958](https://github.com/puppetlabs/puppetlabs-stdlib/pull/958) ([tphoney](https://github.com/tphoney)) - \(maint\) Convert from mocking with mocha to rspec-mocks [\#948](https://github.com/puppetlabs/puppetlabs-stdlib/pull/948) ([rodjek](https://github.com/rodjek)) ### Fixed - \(FM-7388\) - Fixing unit tests for puppet 4, 5 and 6 [\#962](https://github.com/puppetlabs/puppetlabs-stdlib/pull/962) ([tphoney](https://github.com/tphoney)) - Fix `pick` function docs [\#955](https://github.com/puppetlabs/puppetlabs-stdlib/pull/955) ([alexjfisher](https://github.com/alexjfisher)) - \(MODULES-7768\) Handle nil in delete\_undef\_values\(\) function [\#954](https://github.com/puppetlabs/puppetlabs-stdlib/pull/954) ([hlindberg](https://github.com/hlindberg)) - Update docs for 'concat' to be correct [\#950](https://github.com/puppetlabs/puppetlabs-stdlib/pull/950) ([rhowe-gds](https://github.com/rhowe-gds)) ## 5.0.0 ### Summary This is a major release which removes support for the Scientific 5 and Debian 7 OS, as well as a removal of the `Stdlib::(Ipv4|IPv6|Ip_address)` data types in favour of `Stdlib::IP::*`. **In addition it contains a substantial piece of work centered around updating functions that have now been migrated into Puppet itself. Please note that this will be the last major release to support Puppet 2 and Puppet 3 and that they will soon be removed.** #### Fixed - Docs URLs corrected. - Docs clarified that `Stdlib::Unixpath` only matches absolute paths. - `dirname()` now fails when passed an empty string. - `basename()` documentation clarified. - Corrected documentation of `count()` wrt matches and empty string. - Corrected example in `getparam()` and added note about equivalent in puppet. - Fixed URL to use 'latest' instead of '5.5' for `Hash.new` function. #### Added - Support added for symbolic file nodes. - `loadjson()` and `loadyml()` now compatible with HTTPS files. - `loadjson()` and `loadyml()` now compatible with HTTP basic auth files. - `any2array` now returns and empty array when given an empty string. - Support has now been added for Ubuntu 18.04. - `seeded_rand_string()` function has been added. #### Changed - PDK update `1.5.0` has been applied. - `size()` function deprecated for Puppet 6 and above. - `wrt` functions moved to Puppet as of Puppet 6. - `sprintf_hash` has had notification put in place to show that as of Puppet 4.10.10 it's functionality is supported by the puppet core. - Added note that `abs()` is in puppet since 6.0.0. - Added information to `base64` function about Binary data type. - Added note to `camelcase()` that function is now in puppet. - Added note to `capitalize()` that function is now in puppet. - Added note to `ceiling()` that function is now in puppet. - Added note to `chomp()` that function is now in puppet. - Added note to `chop()` that function is now in puppet. - Added note how to do equivalence of `clamp()` function in puppet 6. - Added note that `concat()` can be done with + since puppet 4.0.0. - Added note to `convert_base()` how to do this with puppet core. - Added equivalent puppet core way of doing `count()`. - Added docs for equivalent puppet language for `delete_regexp()`. - Added docs for equivalent language constructs for `delete_at()`. - Added puppet 4 equivalent for `delete_undef()` function. - Added equivalent puppet language for `delete_values()`. - Updated `delete()` function with docs about equivalent language. - Added docs that - between arrays is the same as `difference()`. - Added note to `downcase()` that function is now in puppet. - Added note to `empty()` that function is now in puppet. - Added note to `flatten()` that function is now in puppet. - Added note to `floor()` that function is now in puppet. - Added note to `get_module_path()` that puppet has similar function. - Amended documentation for `getvar()`. - Add note to `grep()` that `filter()` in puppet does the same. - Updated `has_key()` with equivalent puppet lang expresion. - Updated the `hash()` function to show equivalent expression. - Added note about more formatting options with `String()` in puppet. - Added note to `join()` that it is in puppet since 5.4.0. - Added note to `keys()` that it is in puppet since 5.4.0. - Added note to `lstrip()`, `rstrip()`, `strip()` and `upcase()` that they are in puppet since 6.0.0. - Updated `member()` with equivalent language expression example. - Updated `merge()` with puppt language equivalent example. - Updated `min()` and `max()` with note that they are in puppet. - Updated `num2bool()` with information that Boolean can convert. - Updated `prefix()` function with equivalent operation in pupppet. - Updated `range()` with information that Integer can be used. - Updated `reject()` with equivalent filter() call. - Added note to `reverse()` that the `reverse_each()` Puppet function does the same as it. - Added note to `round()` that it has moved to puppet in 6.0.0. - Added note to `size()` that `length()` is in puppet since 5.4.0. - Added note to `sort()` that is has moved to Puppet in 6.0.0. - Updated `str2bool()` with a note that Boolean can handle conversion. - Added note to `strftime()` that it moved to puppet in 4.8.0. - Added note to `suffix()` that the same can be done with `map()`. - Updated `time()` to mention Timespan and Timestamp data types. - Added note to `values_at()` for equivalent slice operation in language. - Added note to `values()` that it moved to puppet in 5.5.0. - Corrected docs for `keys()` - in puppet since 5.5.0. - Added note to `length()` that function moved to puppet. - Updated README.md with deprecations for functions moved to puppet. - Updated documentation of `values_at()`. - Updated README with note from `time()` about data types for time. - Updated README for `strintf_hash()` (supported by builtin sprintf). - Updated README with deprecation of `hash()` function (use data type). - Updated README `suffix` with equiv example for `map`. - Updated README with `reject` equivalent call to `filter`. - Updated README with `range` equiv use of type system + `each`. - Updated README with `prefix` equiv func using `map`. - Updated README for `num2bool` with info about Boolean type. - Updated README `str2bool` with information about `Boolean` equivalent. - Updated README `merge` with info about `+` operator equivalent. - Updated README `member` with equivalent alternative in language. - Updated README `join_keys_to_values` with link to String.new. - Updated README `has_key` shows deprecation in favor of `in`. - Updated README `grep` adds information about `filter`. - Updated README and `getvar.rb` as getvar has moved to puppet. - Updated README for `getparam` to be the same as in function. - Updated README `get_module_path` with info about built in variant. - Updated README `difference` to mention `-` operator equiv. - Updated README `delete` with built-in alternatives. - Updated README `delete_values` with builtin equiv. - Updated README `delete_undef` & `delete_regexp` with builtin equiv. - Updated README `delete_at` with equivalent built-in examples. - Updated README `coun`t to show built-in equiv. - Updated README `convert_base` with built-in equiv. - Updated README `concat` with built-in equiv using + and <<. - Updated README `base_64` with built-in equiv using Binary type. - Skipped tests for `abs` if puppet version < 6.0.0. - Skipped tests for `min` and `max` if puppet version < 6.0.0. - Skipped tests for `floor` if puppet version < 6.0.0. - Skipped tests for `ceiling` if puppet version < 6.0.0. - Skipped tests for `round` if puppet version < 6.0.0. - Skipped tests for `upcase` if puppet version < 6.0.0. - Skipped tests for `downcase` if puppet version < 6.0.0. - Skipped tests for `capitalize` if puppet version < 6.0.0. - Skipped tests for `camelcase` if puppet version < 6.0.0. - Skipped tests for strip functions if puppet version < 6.0.0. - Skipped tests for `chop` and `chomp` if puppet version < 6.0.0. - Skipped tests for `sort` if puppet version < 6.0.0. - Removed extra space in `describe` for `abs` test. - Updated README and `any2array` with built-in equiv Array.new. - Updated README and `any2bool` with built-in equiv Boolean.new. - Updated README and `bool2num` with built-in equiv Numeric.new. - Updated README and `bool2str` with built-in equiv String.new. - Corrected equivalent example for `count`. - Updated README and made mention of `filter` in `delete` a link. - Updated docs and tests for `strftime`. - Updated all acceptance test using Puppet.version. - Change 'puppet' to 'Puppet' in function doc strings. - HTTP type checks are now case insensitive. #### Removed - Support has been removed for `Scientific 5` and `Debian 7` operating systems. - `Stdlib::(Ipv4|IPv6|Ip_address)` have been removed. ## Supported Release 4.25.1 ### Summary This is a patch which includes a roll up of small fixes. In Puppet 5.5.0 `flatten()`, `length(),` `empty(),` `join(),` `keys(),` and `values()` are now built into Puppet. Please note that the Puppet implementation of the functions will take precedence over the functions in 'puppetlabs-stdlib'. #### Fixed - Remove unneeded execute permission from test files. - Puppet 5.5.0 function deprecation [MODULES-6894](https://tickets.puppetlabs.com/browse/MODULES-6894). ## Supported Release 4.25.0 ### Summary This is quite a feature heavy release, it makes this module PDK-compliant for easier maintenance and includes a roll up of maintenance changes. #### Added - PDK conversion [MODULES-6332](https://tickets.puppetlabs.com/browse/MODULES-6332). - Update `join_keys_to_values` with an undef statement. - Type alias `Stdlib::Fqdn` matches paths on a fully qualified domain name. - Type alias `Stdlib::Host` matches a valid host, this can be a valid 'ipv4', 'ipv6' or 'fqdn'. - Type alias `Stdlib::Port` matches a valid TCP/UDP Port number. - Type alias `Stdlib::Filesource` matches paths valid values for the source parameter of the puppet file type. - Type alias `Stdlib::IP::Address` matches any IP address, including both IPv4 and IPv6 addresses, - Type alias `Stdlib::IP::Address::V4` matches any string consisting of a valid IPv4 address, this is extended by 'CIDR' and 'nosubnet'. - Type alias `Stdlib::IP::Address::V6` matches any string consisting of a valid IPv6 address, this is extended by 'Full', 'Alternate' and 'Compressed'. - Type alias `Stdlib::IP::Address::V6::Nosubnet`matches any string consisting of a valid IPv6 address with no subnet, this is extended by 'Full', 'Alternate' and 'Compressed'. - Type alias `Stdlib::Port` matches a valid TCP/UDP Port number this is then extended to 'Privileged' which are ports less than 1024 and 'Unprivileged' which are ports greater than 1024. ## Supported Release 4.24.0 ### Summary This release includes a roll up of minor changes and a new feature which provides the ability to skip undef values `to_json_pretty()`. We have also reverted a change that was previously made and resulted in breaking compatibility with Ruby 1.8.7. #### Added - Ability to skip undef values in `to_json_pretty()`. - Fix type3x function in stdlib ([MODULES-6216](https://tickets.puppet.com/browse/MODULES-6216)) #### Changed - Indentation for `sync.yml` was fixed. - Updated type alias tests and dropped superfluous wrapper classes - Revert to old ruby 1.X style of hash ([MODULES-6139](https://tickets.puppet.com/browse/MODULES-6139)) - `rubocop.yml` not managed by msync ([MODULES-6201](https://tickets.puppet.com/browse/MODULES-6201)) ## Supported Release 4.23.0 ### Summary This release is in order to implement Rubocop changes throughout the module. #### Added - Standard and translated readme's have been updated. - Rubocop has been implemented in the module and a wide variety of changes have been made to the code. - Modulesync changes have been merged into the code. #### Fixed - Minor fix to the readme. ## Supported Release 4.22.0 ### Summary This is a clean release in preparation of putting the module through the rubocop process. #### Added - Support has been added for Debian 9 - 'Stdlib::Mode type' has been added to the module. - A type for 'ensure' has been added to the service resources. - A new function 'sprintf_hash' has been added to allow the use of named references. #### Removed - Support has been removed for: RedHat 4, CentOS 4, OracleLinux 4, Scientific 4, SLES 10 SP4, Windows Server 2003, Windows Server 2003 R2 and Windows 8. #### Fixed - The 'ruby_spec.rb' test file has been altered s that it properly checks results. - Example syntax in 'file_line.rb' has been fixed. ## Supported Release 4.21.0 ### Summary This is a small feature release that includes a revamped, albeit backwards-compatible file_line type. #### Added - `replace_all_matches_not_matching_line` parameter in file_line - additional tests and documentation for file_line #### Removed - duplicate spec test for absolute_path #### Fixed - Unixpath type to allow "/" as valid path - file_line behavior that caused infinite appending of `line` to a file ([MODULES-5651](https://tickets.puppet.com/browse/MODULES-5651)) ## Supported Release 4.20.0 ### Summary This release adds new functions and updated README translations. #### Added - `to_json`, `to_json_pretty`, and `to_yaml` functions - new Japanese README translations #### Fixed - compatibility issue with older versions of Puppet and the `pw_hash` function ([MODULES-5546](https://tickets.puppet.com/browse/MODULES-5546)) #### Removed - support for EOL platform Debian 6 (Squeeze) ## Supported Release 4.19.0 ### Summary This release adds new functions and better documentation/fixes for existing functions with a noteworthy fix for file_line. #### Added - Add validate_domain_name function - Add the round function - Add type for MAC address - Add support for sensitive data type to pw_hash ([MODULES-4908](https://tickets.puppet.com/browse/MODULES-4908)) - Add new function, fact() (FACT-932) #### Fixed - Fixes for the file_line provider ([MODULES-5003](https://tickets.puppet.com/browse/MODULES-5003)) - Add documentation for email functions ([MODULES-5382](https://tickets.puppet.com/browse/MODULES-5382)) - unique function is deprecated for puppet version > 5. (FM-6239) - Fix headers in CHANGELOG.md so that headers render correctly - ensure_packages, converge ensure values 'present' and 'installed' #### Changed - Removes listed support for EOL Ubuntu versions ## Supported Release 4.18.0 ### Summary Small release that reverts the Puppet version requirement lower bound to again include Puppet 2.7+ and bumps the upper bound to now include Puppet 5. #### Fixed - Reverts lower bound of Puppet requirement to 2.7.20 ## Supported Release 4.17.1 ### Summary Small release to address a bug (PUP-7650). Also pushes the Puppet version compatibility to 4.7.0. #### Bugfixes - (MODULES-5095) Workaround for PUP-7650 - (FM-6197) Formatting fixes for file_line resource ## Supported Release 4.17.0 ### Summary This release adds support for internationalization. It also contains Japanese translations for the README, summary and description of the metadata.json and major cleanups in the README. Additional folders have been introduced called locales and readmes where translation files can be found. A number of features and bug fixes are also included in this release. It also adds a new function `glob()` for expanding file lists. Also works around an issue that appeared in puppet 4.6.0 involving types being declared multiple times. #### Features - Addition of POT file / folder structure for i18n. - Addition of Internationalized READMEs. - `glob()` function ### Fixed - Occasional duplicate type definitions when using `defined_with_params()` - `file_line` encoding issue on ruby 1.8 (unsupported) - Huge readme refresh ## Supported Release 4.16.0 ### Summary This release sees a massive update to all unit tests to test UTF8 characters. There are also multiple cleanups in preparation for internationalization. Alongside this, improvements to ipv6 support, a new length function compatible with Puppet 4, and an update to path types. Also contains multiple bug fixes around functionality and tests. #### Features - Addition of coverage in all unit tests for functions, data and resource types for UTF8 for i18n. - All strings within the readme and functions that are split over two lines have been combined in preparation for i18n parser/decorator. - Improvement on the ipv6 support for type - Improves regex to catch some valid (but lesser known) ipv6 strings, mostly those which are a mix of ipv6 strings and embedded ipv6 numbers. - Adds a new parameter `encoding` to allow non UTF-8 files to specify a file encoding. This prevents receiving the error message "invalid byte sequence in UTF-8" when special characters that are not UTF-8 encoded appear in the input stream, such as the copyright symbol. - Addition of the new length function. Returns the length of a given string, array or hash. To eventually replace the deprecated size() function as can handle the new type functionality introduced in Puppet 4. - Permit double slash in absolute/Unix path types. #### Bugfixes - Fix unsupported data type error with rspec-puppet server. - Now allows test module metadata.json to be read by Puppet. - Fix acceptance test failure "Hiera is not a class". - Removal of unsupported platforms and future parser setting in acceptance tests. - Regex for tuple checking has been loosened. - Ensure_packages function - Now only tries to apply the resource if not defined. - (MODULES-4528) Use versioncmp to check Puppet version for 4.10.x compat. - Adds comments to warn for UTF8 incompatibility of the functions that may not be compatible with UTF8 with Ruby < 2.4.0. ## Supported Release 4.15.0 ### Summary This release introduces multiple new functions, a new fact and the addition of Ubuntu Xenial support. Also includes a bugfix and documentation update. #### Features - Addition of puppet_server fact to return agents server. - Addition of a pry function. - Addition of tests for ensure_resources. - Addition of FQDN UUID generation function. - Addition of Ubuntu Xenial to OS Support. #### Bugfixes - Ensure_packages now works with Ruby < 2.0. - Updated the documentation of str2bool function. ## Supported Release 4.14.0 ### Summary Adds several new features and updates, especially around refining the deprecation and validate_legacy functions. Also includes a Gemfile update around an issue with parallel_tests dependancy for different versions of Ruby. #### Features - Deprecation function now uses puppet stacktrace if available. - join_key_to_values function now handles array values. If values are arrays, multiple keys are added for each element. - Updated Gemfile to deal with parallel_tests Ruby dependancy (MODULES-3983). - Updated/Fixed ipv4 regex validator (MODULES-3980). - Deprecation clarification added to README. #### Bugfixes - README typo fixes. - Use .dup to duplicate classes for modification (MODULES-3829). - Fixes spec failures that were caused by a change in the tested error message in validate_legacy_spec. - Broken link to validate_legacy docs fixed. - Updates deprecation tests to include future parser. ## Supported Release 4.13.1 ### Summary This bugfix release addresses the `undefined method 'optional_repeated_param'` error messages seen by users of puppet 3.7. It also improves the user experience around function deprecations by emitting one warning per function(-name) instead of only one deprecation overall. This allows users to identify all deprecated functions used in one agent run, with less back-and-forth. #### Bugfixes * Emit deprecations warnings for each function, instead of once per process. (MODULES-3961) * Use a universally available API for the v4 deprecation stubs of `is_*` and `validate_*`. (MODULES-3962) * Make `getvar()` compatible to ruby 1.8.7. (MODULES-3969) * Add v4 deprecation stubs for the `is_` counterparts of the deprecated functions to emit the deprecations warnings in all cases. ## Supported Release 4.13.0 ### Summary This version of stdlib deprecates a whole host of functions, and provides stepping stones to move to Puppet 4 type validations. Be sure to check out the new `deprecation()` and `validate_legacy()` functions to migrate off the deprecated v3-style data validations. Many thanks to all community contributors: bob, Dmitry Ilyin, Dominic Cleal, Joris, Joseph Yaworski, Loic Antoine-Gombeaud, Maksym Melnychok, Michiel Brandenburg, Nate Potter, Romain Tartière, Stephen Benjamin, and Steve Moore, as well as anyone contributing in the code review process and by submitting issues. Special thanks to [Voxpupuli's](https://voxpupuli.org/) Igor Galić for donating the puppet-tea types to kickstart this part of stdlib. #### Deprecations * `validate_absolute_path`, `validate_array`, `validate_bool`, `validate_hash`, `validate_integer`, `validate_ip_address`, `validate_ipv4_address`, `validate_ipv6_address`, `validate_numeric`, `validate_re`, `validate_slength`, `validate_string`, and their `is_` counter parts are now deprecated on Puppet 4. See the `validate_legacy()` description in the README for help on migrating away from those functions. * The `dig` function is provided by core puppet since 4.5.0 with slightly different calling convention. The stdlib version can still be accessed as `dig44` for now. #### Features * Add Puppet 4 data types for Unix, and Windows paths, and URLs. * Add `deprecation` function to warn users of functionality that will be removed soon. * Add `validate_legacy` function to help with migrating to Puppet 4 data types. * Add `any2bool` function, a combination of of `string2bool` and `num2bool`. * Add `delete_regex` function to delete array elements matching a regular expression. * Add `puppet_environmentpath` fact to expose the `environmentpath` setting. * Add `regexpescape` function to safely insert arbitrary strings into regular expressions. * Add `shell_escape`, `shell_join`, and `shell_split` functions for safer working with shell scripts.. * The `delete` function now also accepts regular expressions as search term. * The `loadyaml` function now accepts a default value, which is returned when there is an error loading the file. #### Bugfixes * Fix `file_line.match_for_absence` implementation and description to actually work. (MODULES-3590) * Fix `getparam` so that it can now also return `false`. (MODULES-3933) * Fix the fixture setup for testing and adjust `load_module_metadata` and `loadjson` tests. * Fix `defined_with_params` to handle `undef` correctly on all puppet versions. (PUP-6422, MODULES-3543) * Fix `file_line.path` validation to use puppet's built in `absolute_path?` matcher. #### Minor Improvements * README changes: improved descriptions of `deep_merge`, `delete`, `ensure_packages`, `file_line.after`, `range`, and `validate_numeric`. * The `getvar` function now returns nil in all situations where the variable is not found. * Update the `dig44` function with better `undef`, `nil`, and `false` handling. * Better wording on `str2bool` argument validation error message. ### Known issues * The `validate_legacy` function relies on internal APIs from Puppet 4.4.0 (PE 2016.1) onwards, and doesn't work on earlier versions. * Puppet 4.5.0 (PE 2016.2) has a number of improvements around data types - especially error handling - that make working with them much nicer. ## Supported Release 4.12.0 ### Summary This release provides several new functions, bugfixes, modulesync changes, and some documentation updates. #### Features - Adds `clamp`. This function keeps values within a specified range. - Adds `validate_x509_rsa_key_pair`. This function validates an x509 RSA certificate and key pair. - Adds `dig`. This function performs a deep lookup in nested hashes or arrays. - Extends the `base64` support to fit `rfc2045` and `rfc4648`. - Adds `is_ipv6_address` and `is_ipv4_address`. These functions validate the specified ipv4 or ipv6 addresses. - Adds `enclose_ipv6`. This function encloses IPv6 addresses in square brackets. - Adds `ensure_resources`. This function takes a list of resources and creates them if they do not exist. - Extends `suffix` to support applying a suffix to keys in a hash. - Apply modulesync changes. - Add validate_email_address function. #### Bugfixes - Fixes `fqdn_rand_string` tests, since Puppet 4.4.0 and later have a higher `fqdn_rand` ceiling. - (MODULES-3152) Adds a check to `package_provider` to prevent failures if Gem is not installed. - Fixes to README.md. - Fixes catch StandardError rather than the gratuitous Exception - Fixes file_line attribute validation. - Fixes concat with Hash arguments. ## Supported Release 4.11.0 ### Summary Provides a validate_absolute_paths and Debian 8 support. There is a fix to the is_package_provider fact and a test improvement. #### Features - Adds new parser called is_absolute_path - Supports Debian 8 #### Bugfixes - Allow package_provider fact to resolve on PE 3.x #### Improvements - ensures that the test passes independently of changes to rubygems for ensure_resource ## 2015-12-15 - Supported Release 4.10.0 ### Summary Includes the addition of several new functions and considerable improvements to the existing functions, tests and documentation. Includes some bug fixes which includes compatibility, test and fact issues. #### Features - Adds service_provider fact - Adds is_a() function - Adds package_provider fact - Adds validate_ip_address function - Adds seeded_rand function #### Bugfixes - Fix backwards compatibility from an improvement to the parseyaml function - Renaming of load_module_metadata test to include \_spec.rb - Fix root_home fact on AIX 5.x, now '-c' rather than '-C' - Fixed Gemfile to work with ruby 1.8.7 #### Improvements - (MODULES-2462) Improvement of parseyaml function - Improvement of str2bool function - Improvement to readme - Improvement of intersection function - Improvement of validate_re function - Improved speed on Facter resolution of service_provider - empty function now handles numeric values - Package_provider now prevents deprecation warning about the allow_virtual parameter - load_module_metadata now succeeds on empty file - Check added to ensure puppetversion value is not nil - Improvement to bool2str to return a string of choice using boolean - Improvement to naming convention in validate_ipv4_address function ## Supported Release 4.9.1 ### Summary Small release for support of newer PE versions. This increments the version of PE in the metadata.json file. ## 2015-09-08 - Supported Release 4.9.0 ### Summary This release adds new features including the new functions dos2unix, unix2dos, try_get_value, convert_base as well as other features and improvements. #### Features - (MODULES-2370) allow `match` parameter to influence `ensure => absent` behavior - (MODULES-2410) Add new functions dos2unix and unix2dos - (MODULE-2456) Modify union to accept more than two arrays - Adds a convert_base function, which can convert numbers between bases - Add a new function "try_get_value" #### Bugfixes - n/a #### Improvements - (MODULES-2478) Support root_home fact on AIX through "lsuser" command - Acceptance test improvements - Unit test improvements - Readme improvements ## 2015-08-10 - Supported Release 4.8.0 ### Summary This release adds a function for reading metadata.json from any module, and expands file\_line's abilities. #### Features - New parameter `replace` on `file_line` - New function `load_module_metadata()` to load metadata.json and return the content as a hash. - Added hash support to `size()` #### Bugfixes - Fix various docs typos - Fix `file_line` resource on puppet < 3.3 ## 2015-06-22 - Supported Release 4.7.0 ### Summary Adds Solaris 12 support along with improved Puppet 4 support. There are significant test improvements, and some minor fixes. #### Features - Add support for Solaris 12 #### Bugfixes - Fix for AIO Puppet 4 - Fix time for ruby 1.8.7 - Specify rspec-puppet version - range() fix for typeerror and missing functionality - Fix pw_hash() on JRuby < 1.7.17 - fqdn_rand_string: fix argument error message - catch and rescue from looking up non-existent facts - Use puppet_install_helper, for Puppet 4 #### Improvements - Enforce support for Puppet 4 testing - fqdn_rotate/fqdn_rand_string acceptance tests and implementation - Simplify mac address regex - validate_integer, validate_numeric: explicitely reject hashes in arrays - Readme edits - Remove all the pops stuff for rspec-puppet - Sync via modulesync - Add validate_slength optional 3rd arg - Move tests directory to examples directory ## 2015-04-14 - Supported Release 4.6.0 ### Summary Adds functions and function argument abilities, and improves compatibility with the new puppet parser #### Features - MODULES-444: `concat()` can now take more than two arrays - `basename()` added to have Ruby File.basename functionality - `delete()` can now take an array of items to remove - `prefix()` can now take a hash - `upcase()` can now take a hash or array of upcaseable things - `validate_absolute_path()` can now take an array - `validate_cmd()` can now use % in the command to embed the validation file argument in the string - MODULES-1473: deprecate `type()` function in favor of `type3x()` - MODULES-1473: Add `type_of()` to give better type information on future parser - Deprecate `private()` for `assert_private()` due to future parser - Adds `ceiling()` to take the ceiling of a number - Adds `fqdn_rand_string()` to generate random string based on fqdn - Adds `pw_hash()` to generate password hashes - Adds `validate_integer()` - Adds `validate_numeric()` (like `validate_integer()` but also accepts floats) #### Bugfixes - Fix seeding of `fqdn_rotate()` - `ensure_resource()` is more verbose on debug mode - Stricter argument checking for `dirname()` - Fix `is_domain_name()` to better match RFC - Fix `uriescape()` when called with array - Fix `file_line` resource when using the `after` attribute with `match` ## 2015-01-14 - Supported Release 4.5.1 ### Summary This release changes the temporary facter_dot_d cache locations outside of the /tmp directory due to a possible security vunerability. CVE-2015-1029 #### Bugfixes - Facter_dot_d cache will now be stored in puppet libdir instead of tmp ## 2014-12-15 - Supported Release 4.5.0 ### Summary This release improves functionality of the member function and adds improved future parser support. #### Features - MODULES-1329: Update member() to allow the variable to be an array. - Sync .travis.yml, Gemfile, Rakefile, and CONTRIBUTING.md via modulesync #### Bugfixes - Fix range() to work with numeric ranges with the future parser - Accurately express SLES support in metadata.json (was missing 10SP4 and 12) - Don't require `line` to match the `match` parameter ## 2014-11-10 - Supported Release 4.4.0 ### Summary This release has an overhauled readme, new private manifest function, and fixes many future parser bugs. #### Features - All new shiny README - New `private()` function for making private manifests (yay!) #### Bugfixes - Code reuse in `bool2num()` and `zip()` - Fix many functions to handle `generate()` no longer returning a string on new puppets - `concat()` no longer modifies the first argument (whoops) - strict variable support for `getvar()`, `member()`, `values_at`, and `has_interface_with()` - `to_bytes()` handles PB and EB now - Fix `tempfile` ruby requirement for `validate_augeas()` and `validate_cmd()` - Fix `validate_cmd()` for windows - Correct `validate_string()` docs to reflect non-handling of `undef` - Fix `file_line` matching on older rubies ## 2014-07-15 - Supported Release 4.3.2 ### Summary This release merely updates metadata.json so the module can be uninstalled and upgraded via the puppet module command. ## 2014-07-14 - Supported Release 4.3.1 ### Summary This supported release updates the metadata.json to work around upgrade behavior of the PMT. #### Bugfixes - Synchronize metadata.json with PMT-generated metadata to pass checksums ## 2014-06-27 - Supported Release 4.3.0 ### Summary This release is the first supported release of the stdlib 4 series. It remains backwards-compatible with the stdlib 3 series. It adds two new functions, one bugfix, and many testing updates. #### Features - New `bool2str()` function - New `camelcase()` function #### Bugfixes - Fix `has_interface_with()` when interfaces fact is nil ## 2014-06-04 - Release 4.2.2 ### Summary This release adds PE3.3 support in the metadata and fixes a few tests. ## 2014-05-08 - Release - 4.2.1 ### Summary This release moves a stray symlink that can cause problems. ## 2014-05-08 - Release - 4.2.0 ### Summary This release adds many new functions and fixes, and continues to be backwards compatible with stdlib 3.x #### Features - New `base64()` function - New `deep_merge()` function - New `delete_undef_values()` function - New `delete_values()` function - New `difference()` function - New `intersection()` function - New `is_bool()` function - New `pick_default()` function - New `union()` function - New `validate_ipv4_address` function - New `validate_ipv6_address` function - Update `ensure_packages()` to take an option hash as a second parameter. - Update `range()` to take an optional third argument for range step - Update `validate_slength()` to take an optional third argument for minimum length - Update `file_line` resource to take `after` and `multiple` attributes #### Bugfixes - Correct `is_string`, `is_domain_name`, `is_array`, `is_float`, and `is_function_available` for parsing odd types such as bools and hashes. - Allow facts.d facts to contain `=` in the value - Fix `root_home` fact on darwin systems - Fix `concat()` to work with a second non-array argument - Fix `floor()` to work with integer strings - Fix `is_integer()` to return true if passed integer strings - Fix `is_numeric()` to return true if passed integer strings - Fix `merge()` to work with empty strings - Fix `pick()` to raise the correct error type - Fix `uriescape()` to use the default URI.escape list - Add/update unit & acceptance tests. ## 2014-03-04 - Supported Release - 3.2.1 ### Summary This is a supported release #### Bugfixes - Fixed `is_integer`/`is_float`/`is_numeric` for checking the value of arithmatic expressions. #### Known bugs * No known bugs --- ##### 2013-05-06 - Jeff McCune - 4.1.0 * (#20582) Restore facter\_dot\_d to stdlib for PE users (3b887c8) * (maint) Update Gemfile with GEM\_FACTER\_VERSION (f44d535) ##### 2013-05-06 - Alex Cline - 4.1.0 * Terser method of string to array conversion courtesy of ethooz. (d38bce0) ##### 2013-05-06 - Alex Cline 4.1.0 * Refactor ensure\_resource expectations (b33cc24) ##### 2013-05-06 - Alex Cline 4.1.0 * Changed str-to-array conversion and removed abbreviation. (de253db) ##### 2013-05-03 - Alex Cline 4.1.0 * (#20548) Allow an array of resource titles to be passed into the ensure\_resource function (e08734a) ##### 2013-05-02 - Raphaël Pinson - 4.1.0 * Add a dirname function (2ba9e47) ##### 2013-04-29 - Mark Smith-Guerrero - 4.1.0 * (maint) Fix a small typo in hash() description (928036a) ##### 2013-04-12 - Jeff McCune - 4.0.2 * Update user information in gemspec to make the intent of the Gem clear. ##### 2013-04-11 - Jeff McCune - 4.0.1 * Fix README function documentation (ab3e30c) ##### 2013-04-11 - Jeff McCune - 4.0.0 * stdlib 4.0 drops support with Puppet 2.7 * stdlib 4.0 preserves support with Puppet 3 ##### 2013-04-11 - Jeff McCune - 4.0.0 * Add ability to use puppet from git via bundler (9c5805f) ##### 2013-04-10 - Jeff McCune - 4.0.0 * (maint) Make stdlib usable as a Ruby GEM (e81a45e) ##### 2013-04-10 - Erik Dalén - 4.0.0 * Add a count function (f28550e) ##### 2013-03-31 - Amos Shapira - 4.0.0 * (#19998) Implement any2array (7a2fb80) ##### 2013-03-29 - Steve Huff - 4.0.0 * (19864) num2bool match fix (8d217f0) ##### 2013-03-20 - Erik Dalén - 4.0.0 * Allow comparisons of Numeric and number as String (ff5dd5d) ##### 2013-03-26 - Richard Soderberg - 4.0.0 * add suffix function to accompany the prefix function (88a93ac) ##### 2013-03-19 - Kristof Willaert - 4.0.0 * Add floor function implementation and unit tests (0527341) ##### 2012-04-03 - Eric Shamow - 4.0.0 * (#13610) Add is\_function\_available to stdlib (961dcab) ##### 2012-12-17 - Justin Lambert - 4.0.0 * str2bool should return a boolean if called with a boolean (5d5a4d4) ##### 2012-10-23 - Uwe Stuehler - 4.0.0 * Fix number of arguments check in flatten() (e80207b) ##### 2013-03-11 - Jeff McCune - 4.0.0 * Add contributing document (96e19d0) ##### 2013-03-04 - Raphaël Pinson - 4.0.0 * Add missing documentation for validate\_augeas and validate\_cmd to README.markdown (a1510a1) ##### 2013-02-14 - Joshua Hoblitt - 4.0.0 * (#19272) Add has\_element() function (95cf3fe) ##### 2013-02-07 - Raphaël Pinson - 4.0.0 * validate\_cmd(): Use Puppet::Util::Execution.execute when available (69248df) ##### 2012-12-06 - Raphaël Pinson - 4.0.0 * Add validate\_augeas function (3a97c23) ##### 2012-12-06 - Raphaël Pinson - 4.0.0 * Add validate\_cmd function (6902cc5) ##### 2013-01-14 - David Schmitt - 4.0.0 * Add geppetto project definition (b3fc0a3) ##### 2013-01-02 - Jaka Hudoklin - 4.0.0 * Add getparam function to get defined resource parameters (20e0e07) ##### 2013-01-05 - Jeff McCune - 4.0.0 * (maint) Add Travis CI Support (d082046) ##### 2012-12-04 - Jeff McCune - 4.0.0 * Clarify that stdlib 3 supports Puppet 3 (3a6085f) ##### 2012-11-30 - Erik Dalén - 4.0.0 * maint: style guideline fixes (7742e5f) ##### 2012-11-09 - James Fryman - 4.0.0 * puppet-lint cleanup (88acc52) ##### 2012-11-06 - Joe Julian - 4.0.0 * Add function, uriescape, to URI.escape strings. Redmine #17459 (fd52b8d) ##### 2012-09-18 - Chad Metcalf - 3.2.0 * Add an ensure\_packages function. (8a8c09e) ##### 2012-11-23 - Erik Dalén - 3.2.0 * (#17797) min() and max() functions (9954133) ##### 2012-05-23 - Peter Meier - 3.2.0 * (#14670) autorequire a file\_line resource's path (dfcee63) ##### 2012-11-19 - Joshua Harlan Lifton - 3.2.0 * Add join\_keys\_to\_values function (ee0f2b3) ##### 2012-11-17 - Joshua Harlan Lifton - 3.2.0 * Extend delete function for strings and hashes (7322e4d) ##### 2012-08-03 - Gary Larizza - 3.2.0 * Add the pick() function (ba6dd13) ##### 2012-03-20 - Wil Cooley - 3.2.0 * (#13974) Add predicate functions for interface facts (f819417) ##### 2012-11-06 - Joe Julian - 3.2.0 * Add function, uriescape, to URI.escape strings. Redmine #17459 (70f4a0e) ##### 2012-10-25 - Jeff McCune - 3.1.1 * (maint) Fix spec failures resulting from Facter API changes (97f836f) ##### 2012-10-23 - Matthaus Owens - 3.1.0 * Add PE facts to stdlib (cdf3b05) ##### 2012-08-16 - Jeff McCune - 3.0.1 * Fix accidental removal of facts\_dot\_d.rb in 3.0.0 release ##### 2012-08-16 - Jeff McCune - 3.0.0 * stdlib 3.0 drops support with Puppet 2.6 * stdlib 3.0 preserves support with Puppet 2.7 ##### 2012-08-07 - Dan Bode - 3.0.0 * Add function ensure\_resource and defined\_with\_params (ba789de) ##### 2012-07-10 - Hailee Kenney - 3.0.0 * (#2157) Remove facter\_dot\_d for compatibility with external facts (f92574f) ##### 2012-04-10 - Chris Price - 3.0.0 * (#13693) moving logic from local spec\_helper to puppetlabs\_spec\_helper (85f96df) ##### 2012-10-25 - Jeff McCune - 2.5.1 * (maint) Fix spec failures resulting from Facter API changes (97f836f) ##### 2012-10-23 - Matthaus Owens - 2.5.0 * Add PE facts to stdlib (cdf3b05) ##### 2012-08-15 - Dan Bode - 2.5.0 * Explicitly load functions used by ensure\_resource (9fc3063) ##### 2012-08-13 - Dan Bode - 2.5.0 * Add better docs about duplicate resource failures (97d327a) ##### 2012-08-13 - Dan Bode - 2.5.0 * Handle undef for parameter argument (4f8b133) ##### 2012-08-07 - Dan Bode - 2.5.0 * Add function ensure\_resource and defined\_with\_params (a0cb8cd) ##### 2012-08-20 - Jeff McCune - 2.5.0 * Disable tests that fail on 2.6.x due to #15912 (c81496e) ##### 2012-08-20 - Jeff McCune - 2.5.0 * (Maint) Fix mis-use of rvalue functions as statements (4492913) ##### 2012-08-20 - Jeff McCune - 2.5.0 * Add .rspec file to repo root (88789e8) ##### 2012-06-07 - Chris Price - 2.4.0 * Add support for a 'match' parameter to file\_line (a06c0d8) ##### 2012-08-07 - Erik Dalén - 2.4.0 * (#15872) Add to\_bytes function (247b69c) ##### 2012-07-19 - Jeff McCune - 2.4.0 * (Maint) use PuppetlabsSpec::PuppetInternals.scope (main) (deafe88) ##### 2012-07-10 - Hailee Kenney - 2.4.0 * (#2157) Make facts\_dot\_d compatible with external facts (5fb0ddc) ##### 2012-03-16 - Steve Traylen - 2.4.0 * (#13205) Rotate array/string randomley based on fqdn, fqdn\_rotate() (fef247b) ##### 2012-05-22 - Peter Meier - 2.3.3 * fix regression in #11017 properly (f0a62c7) ##### 2012-05-10 - Jeff McCune - 2.3.3 * Fix spec tests using the new spec\_helper (7d34333) ##### 2012-05-10 - Puppet Labs - 2.3.2 * Make file\_line default to ensure => present (1373e70) * Memoize file\_line spec instance variables (20aacc5) * Fix spec tests using the new spec\_helper (1ebfa5d) * (#13595) initialize\_everything\_for\_tests couples modules Puppet ver (3222f35) * (#13439) Fix MRI 1.9 issue with spec\_helper (15c5fd1) * (#13439) Fix test failures with Puppet 2.6.x (665610b) * (#13439) refactor spec helper for compatibility with both puppet 2.7 and server (82194ca) * (#13494) Specify the behavior of zero padded strings (61891bb) ##### 2012-03-29 Puppet Labs - 2.1.3 * (#11607) Add Rakefile to enable spec testing * (#12377) Avoid infinite loop when retrying require json ##### 2012-03-13 Puppet Labs - 2.3.1 * (#13091) Fix LoadError bug with puppet apply and puppet\_vardir fact ##### 2012-03-12 Puppet Labs - 2.3.0 * Add a large number of new Puppet functions * Backwards compatibility preserved with 2.2.x ##### 2011-12-30 Puppet Labs - 2.2.1 * Documentation only release for the Forge ##### 2011-12-30 Puppet Labs - 2.1.2 * Documentation only release for PE 2.0.x ##### 2011-11-08 Puppet Labs - 2.2.0 * #10285 - Refactor json to use pson instead. * Maint - Add watchr autotest script * Maint - Make rspec tests work with Puppet 2.6.4 * #9859 - Add root\_home fact and tests ##### 2011-08-18 Puppet Labs - 2.1.1 * Change facts.d paths to match Facter 2.0 paths. * /etc/facter/facts.d * /etc/puppetlabs/facter/facts.d ##### 2011-08-17 Puppet Labs - 2.1.0 * Add R.I. Pienaar's facts.d custom facter fact * facts defined in /etc/facts.d and /etc/puppetlabs/facts.d are automatically loaded now. ##### 2011-08-04 Puppet Labs - 2.0.0 * Rename whole\_line to file\_line * This is an API change and as such motivating a 2.0.0 release according to semver.org. ##### 2011-08-04 Puppet Labs - 1.1.0 * Rename append\_line to whole\_line * This is an API change and as such motivating a 1.1.0 release. ##### 2011-08-04 Puppet Labs - 1.0.0 * Initial stable release * Add validate\_array and validate\_string functions * Make merge() function work with Ruby 1.8.5 * Add hash merging function * Add has\_key function * Add loadyaml() function * Add append\_line native ##### 2011-06-21 Jeff McCune - 0.1.7 * Add validate\_hash() and getvar() functions ##### 2011-06-15 Jeff McCune - 0.1.6 * Add anchor resource type to provide containment for composite classes ##### 2011-06-03 Jeff McCune - 0.1.5 * Add validate\_bool() function to stdlib ##### 0.1.4 2011-05-26 Jeff McCune * Move most stages after main ##### 0.1.3 2011-05-25 Jeff McCune * Add validate\_re() function ##### 0.1.2 2011-05-24 Jeff McCune * Update to add annotated tag ##### 0.1.1 2011-05-24 Jeff McCune * Add stdlib::stages class with a standard set of stages \* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* diff --git a/REFERENCE.md b/REFERENCE.md index f51e130..42b492a 100644 --- a/REFERENCE.md +++ b/REFERENCE.md @@ -1,7174 +1,7216 @@ # Reference ## Table of Contents ### Classes * [`stdlib`](#stdlib): This module manages stdlib. * [`stdlib::stages`](#stdlibstages): 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`](#anchor): A simple resource type intended to be used as an anchor in a composite class. * [`file_line`](#file_line): Ensures that a given line is contained within a file. ### Functions * [`abs`](#abs): **Deprecated:** Returns the absolute value of a number * [`any2array`](#any2array): This converts any object to an array containing that object. * [`any2bool`](#any2bool): Converts 'anything' to a boolean. * [`assert_private`](#assert_private): Sets the current class or definition as private. * [`base64`](#base64): Base64 encode or decode a string based on the command and the string submitted * [`basename`](#basename): Strips directory (and optional suffix) from a filename * [`bool2num`](#bool2num): Converts a boolean to a number. * [`bool2str`](#bool2str): Converts a boolean to a string using optionally supplied arguments. * [`camelcase`](#camelcase): **Deprecated** Converts the case of a string or all strings in an array to camel case. * [`capitalize`](#capitalize): **Deprecated** Capitalizes the first letter of a string or array of strings. * [`ceiling`](#ceiling): **Deprecated** Returns the smallest integer greater or equal to the argument. * [`chomp`](#chomp): **Deprecated** Removes the record separator from the end of a string or an array of strings. * [`chop`](#chop): **Deprecated** Returns a new string with the last character removed. * [`clamp`](#clamp): Keeps value within the range [Min, X, Max] by sort based on integer value (parameter order doesn't matter). * [`concat`](#concat): Appends the contents of multiple arrays into array 1. * [`convert_base`](#convert_base): Converts a given integer or base 10 string representing an integer to a specified base, as a string. * [`count`](#count): Counts the number of elements in array. * [`deep_merge`](#deep_merge): Recursively merges two or more hashes together and returns the resulting hash. * [`defined_with_params`](#defined_with_params) * [`delete`](#delete): Deletes all instances of a given element from an array, substring from a string, or key from a hash. * [`delete_at`](#delete_at): Deletes a determined indexed value from an array. * [`delete_regex`](#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`](#delete_undef_values): Returns a copy of input hash or array with all undefs deleted. * [`delete_values`](#delete_values): Deletes all instances of a given value from a hash. * [`deprecation`](#deprecation): Function to print deprecation warnings, Logs a warning once for a given key. The uniqueness key - can appear once. The msg is the message te * [`deprecation`](#deprecation): Function to print deprecation warnings (this is the 3.X version of it). * [`difference`](#difference): This function returns the difference between two arrays. * [`dig`](#dig): **DEPRECATED** Retrieves a value within multiple layers of hashes and arrays via an array of keys containing a path. * [`dig44`](#dig44) * [`dirname`](#dirname): Returns the dirname of a path. * [`dos2unix`](#dos2unix): Returns the Unix version of the given string. * [`downcase`](#downcase): **Deprecated:** Converts the case of a string or all strings in an array to lower case. * [`empty`](#empty): **Deprecated:** Returns true if the variable is empty. * [`enclose_ipv6`](#enclose_ipv6): Takes an array of ip addresses and encloses the ipv6 addresses with square brackets. * [`ensure_packages`](#ensure_packages): Takes a list of packages and only installs them if they don't already exist. * [`ensure_resource`](#ensure_resource) * [`ensure_resources`](#ensure_resources) * [`fact`](#fact): Digs into the facts hash using dot-notation * [`flatten`](#flatten): This function flattens any deeply nested arrays and returns a single flat array as a result. * [`floor`](#floor): Returns the largest integer less or equal to the argument. * [`fqdn_rand_string`](#fqdn_rand_string) * [`fqdn_rotate`](#fqdn_rotate): fqdn_rotate.rb * [`fqdn_uuid`](#fqdn_uuid): Returns a [RFC 4122](https://tools.ietf.org/html/rfc4122) valid version 5 UUID based on an FQDN string under the DNS namespace * [`get_module_path`](#get_module_path): Returns the absolute path of the specified module for the current environment. * [`getparam`](#getparam) * [`getvar`](#getvar): Lookup a variable in a given namespace. * [`glob`](#glob): Uses same patterns as Dir#glob. * [`grep`](#grep): This function searches through an array and returns any elements that match the provided regular expression. * [`has_interface_with`](#has_interface_with): Returns boolean based on kind and value. * [`has_ip_address`](#has_ip_address): Returns true if the client has the requested IP address on some interface. * [`has_ip_network`](#has_ip_network): Returns true if the client has an IP address within the requested network. * [`has_key`](#has_key): **Deprecated:** Determine if a hash has a certain key value. * [`hash`](#hash): **Deprecated:** This function converts an array into a hash. * [`intersection`](#intersection): This function returns an array of the intersection of two. * [`is_a`](#is_a): Boolean check to determine whether a variable is of a given data type. This is equivalent to the `=~` type checks. * [`is_absolute_path`](#is_absolute_path): Wrapper that calls the Puppet 3.x function of the same name. * [`is_absolute_path`](#is_absolute_path): **Deprecated:** Returns boolean true if the string represents an absolute path in the filesystem. * [`is_array`](#is_array): Wrapper that calls the Puppet 3.x function of the same name. * [`is_array`](#is_array): **Deprecated:** Returns true if the variable passed to this function is an array. * [`is_bool`](#is_bool): Wrapper that calls the Puppet 3.x function of the same name. * [`is_bool`](#is_bool): **Deprecated:** Returns true if the variable passed to this function is a boolean. * [`is_domain_name`](#is_domain_name): **Deprecated:** Returns true if the string passed to this function is a syntactically correct domain name. * [`is_email_address`](#is_email_address): **Deprecated:** Returns true if the string passed to this function is a valid email address. * [`is_float`](#is_float): Wrapper that calls the Puppet 3.x function of the same name. * [`is_float`](#is_float): **Deprecated:** Returns true if the variable passed to this function is a float. * [`is_function_available`](#is_function_available): **Deprecated:** Determines whether the Puppet runtime has access to a function by that name. * [`is_hash`](#is_hash): **Deprecated:** Returns true if the variable passed to this function is a hash. * [`is_integer`](#is_integer): **Deprecated:** Returns true if the variable passed to this function is an Integer or a decimal (base 10) integer in String form. * [`is_ip_address`](#is_ip_address): Wrapper that calls the Puppet 3.x function of the same name. * [`is_ip_address`](#is_ip_address): **Deprecated:** Returns true if the string passed to this function is a valid IP address. * [`is_ipv4_address`](#is_ipv4_address): Wrapper that calls the Puppet 3.x function of the same name. * [`is_ipv4_address`](#is_ipv4_address): **Deprecated:** Returns true if the string passed to this function is a valid IPv4 address. * [`is_ipv6_address`](#is_ipv6_address): Wrapper that calls the Puppet 3.x function of the same name. * [`is_ipv6_address`](#is_ipv6_address): **Deprecated:** Returns true if the string passed to this function is a valid IPv6 address. * [`is_mac_address`](#is_mac_address): **Deprecated:** Returns true if the string passed to this function is a valid mac address. * [`is_numeric`](#is_numeric): Wrapper that calls the Puppet 3.x function of the same name. * [`is_numeric`](#is_numeric): **Deprecated:** Returns true if the given value is numeric. * [`is_string`](#is_string): Wrapper that calls the Puppet 3.x function of the same name. * [`is_string`](#is_string): **Deprecated:** Returns true if the variable passed to this function is a string. * [`join`](#join): **Deprecated:** This function joins an array into a string using a separator. * [`join_keys_to_values`](#join_keys_to_values): This function joins each key of a hash to that key's corresponding value with a separator. * [`keys`](#keys): **Deprecated:** Returns the keys of a hash as an array. * [`length`](#length): **Deprecated:** A function to eventually replace the old size() function for stdlib * [`load_module_metadata`](#load_module_metadata): This function loads the metadata of a given module. * [`loadjson`](#loadjson): Load a JSON file containing an array, string, or hash, and return the data in the corresponding native data type. * [`loadyaml`](#loadyaml): Load a YAML file containing an array, string, or hash, and return the data in the corresponding native data type. * [`lstrip`](#lstrip): **Deprecated:** Strips leading spaces to the left of a string. * [`max`](#max): **Deprecated:** Returns the highest value of all arguments. * [`member`](#member): This function determines if a variable is a member of an array. * [`merge`](#merge): Merges two or more hashes together or hashes resulting from iteration, and returns the resulting hash. * [`merge`](#merge): Merges two or more hashes together and returns the resulting hash. * [`min`](#min): **Deprecated:** Returns the lowest value of all arguments. * [`num2bool`](#num2bool): This function converts a number or a string representation of a number into a true boolean. * [`os_version_gte`](#os_version_gte): Checks if the OS version is at least a certain version. * [`parsehocon`](#parsehocon): This function accepts HOCON as a string and converts it into the correct Puppet structure * [`parsejson`](#parsejson): This function accepts JSON as a string and converts it into the correct Puppet structure. * [`parseyaml`](#parseyaml): This function accepts YAML as a string and converts it into the correct Puppet structure. * [`pick`](#pick): 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. * [`pick_default`](#pick_default): This function will return the first value in a list of values that is not undefined or an empty string. * [`prefix`](#prefix): This function applies a prefix to all elements in an array or a hash. * [`private`](#private): **Deprecated:** Sets the current class or definition as private. Calling the class or definition from outside the current module will fail. * [`pry`](#pry): This function invokes a pry debugging session in the current scope object. * [`pw_hash`](#pw_hash): Please note: This function is an implementation of a Ruby class and as such may not be entirely UTF8 compatible. To ensure compatibility ple * [`range`](#range): When given range in the form of (start, stop) it will extrapolate a range as an array. * [`regexpescape`](#regexpescape): Regexp escape a string or array of strings. Requires either a single string or an array as an input. * [`reject`](#reject): This function searches through an array and rejects all elements that match the provided regular expression. * [`reverse`](#reverse): Reverses the order of a string or array. * [`round`](#round): Rounds a number to the nearest integer * [`rstrip`](#rstrip): Strips leading spaces to the right of the string. * [`seeded_rand`](#seeded_rand): seeded_rand.rb * [`seeded_rand_string`](#seeded_rand_string): Generates a consistent random string of specific length based on provided seed. * [`shell_escape`](#shell_escape): Escapes a string so that it can be safely used in a Bourne shell command line. * [`shell_join`](#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 * [`shell_split`](#shell_split): Splits a string into an array of tokens in the same way the Bourne shell does. * [`shuffle`](#shuffle): @summary Randomizes the order of a string or array elements. * [`size`](#size): Returns the number of elements in a string, an array or a hash * [`sort`](#sort): Sorts strings and arrays lexically. * [`sprintf_hash`](#sprintf_hash): Uses sprintf with named references. * [`squeeze`](#squeeze): Returns a new string where runs of the same character that occur in this set are replaced by a single character. * [`stdlib::end_with`](#stdlibend_with): Returns true if str ends with one of the prefixes given. Each of the prefixes should be a String. * [`stdlib::ensure`](#stdlibensure): function to cast ensure parameter to resource specific value * [`stdlib::extname`](#stdlibextname): Returns the Extension (the Portion of Filename in Path starting from the last Period). * [`stdlib::ip_in_range`](#stdlibip_in_range): Returns true if the ipaddress is within the given CIDRs * [`stdlib::start_with`](#stdlibstart_with): Returns true if str starts with one of the prefixes given. Each of the prefixes should be a String. * [`str2bool`](#str2bool): This converts a string to a boolean. * [`str2saltedpbkdf2`](#str2saltedpbkdf2): Convert a string into a salted SHA512 PBKDF2 password hash like requred for OS X / macOS 10.8+ * [`str2saltedsha512`](#str2saltedsha512): This converts a string to a salted-SHA512 password hash (which is used for OS X versions >= 10.7). * [`strip`](#strip): This function removes leading and trailing whitespace from a string or from every string inside an array. * [`suffix`](#suffix): This function applies a suffix to all elements in an array, or to the keys in a hash. * [`swapcase`](#swapcase): This function will swap the existing case of a string. * [`time`](#time): This function will return the current time since epoch as an integer. * [`to_bytes`](#to_bytes): Converts the argument into bytes, for example 4 kB becomes 4096. * [`to_json`](#to_json): } * [`to_json_pretty`](#to_json_pretty): Convert data structure and output to pretty JSON * [`to_python`](#to_python): Convert an object into a String containing its Python representation * [`to_ruby`](#to_ruby): Convert an object into a String containing its Ruby representation +* [`to_toml`](#to_toml): Convert a data structure and output to TOML. * [`to_yaml`](#to_yaml): } * [`try_get_value`](#try_get_value) * [`type`](#type): **DEPRECATED:** This function will cease to function on Puppet 4; * [`type3x`](#type3x): **DEPRECATED:** This function will be removed when Puppet 3 support is dropped; please migrate to the new parser's typing system. * [`type_of`](#type_of): Returns the type of the passed value. * [`union`](#union): This function returns a union of two or more arrays. * [`unique`](#unique): This function will remove duplicates from strings and arrays. * [`unix2dos`](#unix2dos): Returns the DOS version of the given string. * [`upcase`](#upcase): Converts a string or an array of strings to uppercase. * [`uriescape`](#uriescape): Urlencodes a string or array of strings. Requires either a single string or an array as an input. * [`validate_absolute_path`](#validate_absolute_path): Validate the string represents an absolute path in the filesystem. * [`validate_absolute_path`](#validate_absolute_path): Validate the string represents an absolute path in the filesystem. This function works for windows and unix style paths. * [`validate_array`](#validate_array): Validate the passed value represents an array. * [`validate_array`](#validate_array): Validate that all passed values are array data structures. Abort catalog compilation if any value fails this check. * [`validate_augeas`](#validate_augeas): Perform validation of a string using an Augeas lens * [`validate_bool`](#validate_bool): Validate the passed value represents a boolean. * [`validate_bool`](#validate_bool): Validate that all passed values are either true or false. Abort catalog compilation if any value fails this check. * [`validate_cmd`](#validate_cmd): Perform validation of a string with an external command. * [`validate_domain_name`](#validate_domain_name): Validate that all values passed are syntactically correct domain names. Fail compilation if any value fails this check. * [`validate_email_address`](#validate_email_address): Validate that all values passed are valid email addresses. Fail compilation if any value fails this check. * [`validate_hash`](#validate_hash): Validate the passed value represents a hash. * [`validate_hash`](#validate_hash): Validate that all passed values are hash data structures. Abort catalog compilation if any value fails this check. * [`validate_integer`](#validate_integer): Validate the passed value represents an integer. * [`validate_integer`](#validate_integer): Validate that the first argument is an integer (or an array of integers). Abort catalog compilation if any of the checks fail. * [`validate_ip_address`](#validate_ip_address): Validate the passed value represents an ip_address. * [`validate_ip_address`](#validate_ip_address): Validate that all values passed are valid IP addresses, regardless they are IPv4 or IPv6 Fail compilation if any value fails this check. * [`validate_ipv4_address`](#validate_ipv4_address): Validate the passed value represents an ipv4_address. * [`validate_ipv4_address`](#validate_ipv4_address): Validate that all values passed are valid IPv4 addresses. Fail compilation if any value fails this check. * [`validate_ipv6_address`](#validate_ipv6_address): Validate the passed value represents an ipv6_address. * [`validate_ipv6_address`](#validate_ipv6_address): Validate that all values passed are valid IPv6 addresses. Fail compilation if any value fails this check. * [`validate_legacy`](#validate_legacy): Validate a value against both the target_type (new) and the previous_validation function (old). * [`validate_numeric`](#validate_numeric): Validate the passed value represents a numeric value. * [`validate_numeric`](#validate_numeric): Validate that the first argument is a numeric value (or an array of numeric values). Abort catalog compilation if any of the checks fail. * [`validate_re`](#validate_re): Perform validation of a string against one or more regular expressions. * [`validate_re`](#validate_re): Perform simple validation of a string against one or more regular expressions. * [`validate_slength`](#validate_slength): Validate that a passed string has length less/equal with the passed value * [`validate_slength`](#validate_slength): Validate that the first argument is a string (or an array of strings), and less/equal to than the length of the second argument. An optional third parameter can be given the minimum length. It fails if the first argument is not a string or array of strings, and if arg 2 and arg 3 are not convertable to a number. * [`validate_string`](#validate_string): Validate that all passed values are string data structures. * [`validate_string`](#validate_string): Validate that all passed values are string data structures * [`validate_x509_rsa_key_pair`](#validate_x509_rsa_key_pair): Validates a PEM-formatted X.509 certificate and RSA private key using OpenSSL. Verifies that the certficate's signature was created from the supplied key. * [`values`](#values): When given a hash this function will return the values of that hash. * [`values_at`](#values_at): Finds value inside an array based on location. * [`zip`](#zip): Takes one element from first array and merges corresponding elements from second array. ### Data types * [`Stdlib::Absolutepath`](#stdlibabsolutepath): A strict absolutepath type * [`Stdlib::Base32`](#stdlibbase32): Type to match base32 String * [`Stdlib::Base64`](#stdlibbase64): Type to match base64 String * [`Stdlib::Compat::Absolute_path`](#stdlibcompatabsolute_path): Emulate the is_absolute_path and validate_absolute_path functions The first pattern is originally from is_absolute_path, which had it from 2 * [`Stdlib::Compat::Array`](#stdlibcompatarray): Emulate the is_array and validate_array functions * [`Stdlib::Compat::Bool`](#stdlibcompatbool): Emulate the is_bool and validate_bool functions * [`Stdlib::Compat::Float`](#stdlibcompatfloat): Emulate the is_float function The regex is what's currently used in is_float To keep your development moving forward, you can also add a depr * [`Stdlib::Compat::Hash`](#stdlibcompathash): Emulate the is_hash and validate_hash functions * [`Stdlib::Compat::Integer`](#stdlibcompatinteger): Emulate the is_integer and validate_integer functions The regex is what's currently used in is_integer validate_numeric also allows range che * [`Stdlib::Compat::Ip_address`](#stdlibcompatip_address) * [`Stdlib::Compat::Ipv4`](#stdlibcompatipv4): Emulate the validate_ipv4_address and is_ipv4_address functions * [`Stdlib::Compat::Ipv6`](#stdlibcompatipv6) * [`Stdlib::Compat::Numeric`](#stdlibcompatnumeric): Emulate the is_numeric and validate_numeric functions The regex is what's currently used in is_numeric validate_numeric also allows range che * [`Stdlib::Compat::String`](#stdlibcompatstring): Emulate the is_string and validate_string functions * [`Stdlib::Datasize`](#stdlibdatasize) -* [`Stdlib::Email`](#stdlibemail): https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address +* [`Stdlib::Email`](#stdlibemail): https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address lint:ignore:140chars * [`Stdlib::Ensure::File`](#stdlibensurefile) * [`Stdlib::Ensure::File::Directory`](#stdlibensurefiledirectory) * [`Stdlib::Ensure::File::File`](#stdlibensurefilefile) * [`Stdlib::Ensure::File::Link`](#stdlibensurefilelink) * [`Stdlib::Ensure::Service`](#stdlibensureservice) * [`Stdlib::Filemode`](#stdlibfilemode): See `man chmod.1` for the regular expression for symbolic mode lint:ignore:140chars * [`Stdlib::Filesource`](#stdlibfilesource): Validate the source parameter on file types * [`Stdlib::Fqdn`](#stdlibfqdn) * [`Stdlib::HTTPSUrl`](#stdlibhttpsurl) * [`Stdlib::HTTPUrl`](#stdlibhttpurl) * [`Stdlib::Host`](#stdlibhost) * [`Stdlib::HttpStatus`](#stdlibhttpstatus) * [`Stdlib::IP::Address`](#stdlibipaddress) * [`Stdlib::IP::Address::Nosubnet`](#stdlibipaddressnosubnet) * [`Stdlib::IP::Address::V4`](#stdlibipaddressv4) * [`Stdlib::IP::Address::V4::CIDR`](#stdlibipaddressv4cidr): lint:ignore:140chars * [`Stdlib::IP::Address::V4::Nosubnet`](#stdlibipaddressv4nosubnet): lint:ignore:140chars * [`Stdlib::IP::Address::V6`](#stdlibipaddressv6) * [`Stdlib::IP::Address::V6::Alternative`](#stdlibipaddressv6alternative): lint:ignore:140chars * [`Stdlib::IP::Address::V6::CIDR`](#stdlibipaddressv6cidr): lint:ignore:140chars * [`Stdlib::IP::Address::V6::Compressed`](#stdlibipaddressv6compressed) * [`Stdlib::IP::Address::V6::Full`](#stdlibipaddressv6full) * [`Stdlib::IP::Address::V6::Nosubnet`](#stdlibipaddressv6nosubnet) * [`Stdlib::IP::Address::V6::Nosubnet::Alternative`](#stdlibipaddressv6nosubnetalternative): lint:ignore:140chars * [`Stdlib::IP::Address::V6::Nosubnet::Compressed`](#stdlibipaddressv6nosubnetcompressed) * [`Stdlib::IP::Address::V6::Nosubnet::Full`](#stdlibipaddressv6nosubnetfull) * [`Stdlib::MAC`](#stdlibmac): A type for a MAC address * [`Stdlib::ObjectStore`](#stdlibobjectstore) * [`Stdlib::ObjectStore::GSUri`](#stdlibobjectstoregsuri) * [`Stdlib::ObjectStore::S3Uri`](#stdlibobjectstores3uri) * [`Stdlib::Port`](#stdlibport) * [`Stdlib::Port::Dynamic`](#stdlibportdynamic) * [`Stdlib::Port::Ephemeral`](#stdlibportephemeral) * [`Stdlib::Port::Privileged`](#stdlibportprivileged) * [`Stdlib::Port::Registered`](#stdlibportregistered) * [`Stdlib::Port::Unprivileged`](#stdlibportunprivileged) * [`Stdlib::Port::User`](#stdlibportuser) * [`Stdlib::Syslogfacility`](#stdlibsyslogfacility) * [`Stdlib::Unixpath`](#stdlibunixpath): this regex rejects any path component that does not start with "/" or is NUL * [`Stdlib::Windowspath`](#stdlibwindowspath) * [`Stdlib::Yes_no`](#stdlibyes_no) ## 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. ### `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 ##### ```puppet 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`](#name) ##### `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`](#after) * [`append_on_no_match`](#append_on_no_match) * [`encoding`](#encoding) * [`match`](#match) * [`match_for_absence`](#match_for_absence) * [`multiple`](#multiple) * [`name`](#name) * [`path`](#path) * [`provider`](#provider) * [`replace`](#replace) * [`replace_all_matches_not_matching_line`](#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 ### `abs` Type: Ruby 3.x API For example -34.56 becomes 34.56. Takes a single integer or float value as an argument. > *Note:* **Deprected** from Puppet 6.0.0, the built-in ['abs'](https://puppet.com/docs/puppet/6.4/function.html#abs)function will be used instead. #### `abs()` For example -34.56 becomes 34.56. Takes a single integer or float value as an argument. > *Note:* **Deprected** from Puppet 6.0.0, the built-in ['abs'](https://puppet.com/docs/puppet/6.4/function.html#abs)function will be used instead. Returns: `Any` The absolute value of the given number if it was an Integer ### `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`](https://puppet.com/docs/puppet/latest/function.html#conversion-to-array-and-tuple) 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`](https://puppet.com/docs/puppet/latest/function.html#conversion-to-array-and-tuple) 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`](https://puppet.com/docs/puppet/latest/function.html#conversion-to-boolean) 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`](https://puppet.com/docs/puppet/latest/function.html#conversion-to-boolean) 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 see `binary_file()` function for reading a file with binary (non UTF-8) content. #### Examples ##### Example usage ```puppet 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 see `binary_file()` function for reading a file with binary (non UTF-8) content. Returns: `String` The encoded/decoded va ##### Examples ###### Example usage ```puppet 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 ### `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`](https://puppet.com/docs/puppet/latest/function.html#conversion-to-numeric), [`Integer.new`](https://puppet.com/docs/puppet/latest/function.html#conversion-to-integer), and [`Float.new`](https://puppet.com/docs/puppet/latest/function.html#conversion-to-float) 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`](https://puppet.com/docs/puppet/latest/function.html#conversion-to-numeric), [`Integer.new`](https://puppet.com/docs/puppet/latest/function.html#conversion-to-integer), and [`Float.new`](https://puppet.com/docs/puppet/latest/function.html#conversion-to-float) 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`](https://puppet.com/docs/puppet/latest/function.html#boolean-to-string) 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`](https://puppet.com/docs/puppet/latest/function.html#boolean-to-string) 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 ### `camelcase` Type: Ruby 3.x API > *Note:* **Deprecated** from Puppet 6.0.0, this function has been replaced with a built-in [`camelcase`](https://puppet.com/docs/puppet/latest/function.html#camelcase) function. #### `camelcase()` > *Note:* **Deprecated** from Puppet 6.0.0, this function has been replaced with a built-in [`camelcase`](https://puppet.com/docs/puppet/latest/function.html#camelcase) function. Returns: `String` The converted String, if it was a String that was given ### `capitalize` Type: Ruby 3.x API Requires either a single string or an array as an input. > *Note:* **Deprecated** from Puppet 6.0.0, yhis function has been replaced with a built-in [`capitalize`](https://puppet.com/docs/puppet/latest/function.html#capitalize) function. #### `capitalize()` Requires either a single string or an array as an input. > *Note:* **Deprecated** from Puppet 6.0.0, yhis function has been replaced with a built-in [`capitalize`](https://puppet.com/docs/puppet/latest/function.html#capitalize) function. Returns: `String` The converted String, if it was a String that was given ### `ceiling` Type: Ruby 3.x API Takes a single numeric value as an argument. > *Note:* **Deprecated** from Puppet 6.0.0, this function has been replaced with a built-in [`ceiling`](https://puppet.com/docs/puppet/latest/function.html#ceiling) function. #### `ceiling()` Takes a single numeric value as an argument. > *Note:* **Deprecated** from Puppet 6.0.0, this function has been replaced with a built-in [`ceiling`](https://puppet.com/docs/puppet/latest/function.html#ceiling) function. Returns: `Integer` The rounded value ### `chomp` Type: Ruby 3.x API For example `hello\n` becomes `hello`. Requires a single string or array as an input. > *Note:* **Deprecated** from Puppet 6.0.0, this function has been replaced with a built-in [`chomp`](https://puppet.com/docs/puppet/latest/function.html#chomp) function. #### `chomp()` For example `hello\n` becomes `hello`. Requires a single string or array as an input. > *Note:* **Deprecated** from Puppet 6.0.0, this function has been replaced with a built-in [`chomp`](https://puppet.com/docs/puppet/latest/function.html#chomp) function. Returns: `String` The converted String, if it was a String that was given ### `chop` Type: Ruby 3.x API If the string ends with `\r\n`, both characters are removed. Applying chop to an empty string returns an empty string. If you wish to merely remove record separators then you should use the `chomp` function. Requires a string or array of strings as input. > *Note:* **Deprecated** from Puppet 6.0.0, this function has been replaced with a built-in [`chop`](https://puppet.com/docs/puppet/latest/function.html#chop) function. #### `chop()` If the string ends with `\r\n`, both characters are removed. Applying chop to an empty string returns an empty string. If you wish to merely remove record separators then you should use the `chomp` function. Requires a string or array of strings as input. > *Note:* **Deprecated** from Puppet 6.0.0, this function has been replaced with a built-in [`chop`](https://puppet.com/docs/puppet/latest/function.html#chop) function. Returns: `String` The given String, sans the last character. ### `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 ```puppet 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 ```puppet 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 ```puppet 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 ```puppet 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`](https://puppet.com/docs/puppet/latest/function.html#integer-to-string) 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 Str #### Examples ##### Example usage ```puppet ``` #### `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`](https://puppet.com/docs/puppet/latest/function.html#integer-to-string) 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 Str Returns: `Any` converted value as a string ##### Examples ###### Example usage ```puppet ``` ### `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 ```puppet $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 h ##### Examples ###### Example usage ```puppet $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 The defined_with_params function. #### `defined_with_params()` The defined_with_params function. Returns: `Any` ### `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`](https://puppet.com/docs/puppet/latest/function.html#regsubst) function: `'abracadabra'.regsubst(/bra/, '', 'G')` In general, the built-in [`filter`](https://puppet.com/docs/puppet/latest/function.html#filter) function can filter out entries from arrays and hashes based on keys and/or values. #### Examples ##### Example usage ```puppet 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`](https://puppet.com/docs/puppet/latest/function.html#regsubst) function: `'abracadabra'.regsubst(/bra/, '', 'G')` In general, the built-in [`filter`](https://puppet.com/docs/puppet/latest/function.html#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 ```puppet 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`](https://puppet.com/docs/puppet/latest/function.html#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`](https://puppet.com/docs/puppet/latest/function.html#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`](https://puppet.com/docs/puppet/latest/function.html#filter) function: ["aaa", "aba", "aca"].filter |$val| { $val !~ /b/ } Would return: ['aaa', 'aca'] #### Examples ##### Example usage ```puppet 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`](https://puppet.com/docs/puppet/latest/function.html#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 ```puppet 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`](https://puppet.com/docs/puppet/latest/function.html#filter) function: $array.filter |$val| { $val =~ NotUndef } $hash.filter |$key, $val| { $val =~ NotUndef } #### Examples ##### Example usage ```puppet $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`](https://puppet.com/docs/puppet/latest/function.html#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 ```puppet $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`](https://puppet.com/docs/puppet/latest/function.html#filter) function: $array.filter |$val| { $val != 'B' } $hash.filter |$key, $val| { $val != 'B' } #### Examples ##### Example usage ```puppet 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`](https://puppet.com/docs/puppet/latest/function.html#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 ```puppet 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. The uniqueness key - can appear once. The msg is the message text including any positional information that is formatted by the user/caller of the method. It 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) *Type*: String, String. #### `deprecation(String $key, String $message)` Function to print deprecation warnings, Logs a warning once for a given key. The uniqueness key - can appear once. The msg is the message text including any positional information that is formatted by the user/caller of the method. It 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) *Type*: String, String. Returns: `Any` deprecated warnings ##### `key` Data type: `String` ##### `message` Data type: `String` ### `deprecation` Type: Ruby 3.x API The uniqueness key - can appear once. The msg is the message text including any positional information that is formatted by the user/caller of the method.). #### `deprecation()` The uniqueness key - can appear once. The msg is the message text including any positional information that is formatted by the user/caller of the method.). Returns: `String` return deprecation warnings ### `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 ```puppet 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 ```puppet difference(["a","b","c"],["b","c","d"]) Would return: `["a"]` ``` ### `dig` Type: Ruby 3.x API In addition to the required path argument, the function accepts the default argument. It is returned if the path is not correct, if no value was found, or if any other error has occurred. ```ruby $data = { 'a' => { 'b' => [ 'b1', 'b2', 'b3', ] } } $value = dig($data, ['a', 'b', 2]) # $value = 'b3' # with all possible options $value = dig($data, ['a', 'b', 2], 'not_found') # $value = 'b3' # using the default value $value = dig($data, ['a', 'b', 'c', 'd'], 'not_found') # $value = 'not_found' ``` 1. `$data` The data structure we are working with. 2. `['a', 'b', 2]` The path array. 3. `not_found` The default value. It is returned if nothing is found. > **Note:* **Deprecated** This function has been replaced with a built-in [`dig`](https://puppet.com/docs/puppet/latest/function.html#dig) function as of Puppet 4.5.0. Use [`dig44()`](#dig44) for backwards compatibility or use the new version. #### `dig()` In addition to the required path argument, the function accepts the default argument. It is returned if the path is not correct, if no value was found, or if any other error has occurred. ```ruby $data = { 'a' => { 'b' => [ 'b1', 'b2', 'b3', ] } } $value = dig($data, ['a', 'b', 2]) # $value = 'b3' # with all possible options $value = dig($data, ['a', 'b', 2], 'not_found') # $value = 'b3' # using the default value $value = dig($data, ['a', 'b', 'c', 'd'], 'not_found') # $value = 'not_found' ``` 1. `$data` The data structure we are working with. 2. `['a', 'b', 2]` The path array. 3. `not_found` The default value. It is returned if nothing is found. > **Note:* **Deprecated** This function has been replaced with a built-in [`dig`](https://puppet.com/docs/puppet/latest/function.html#dig) function as of Puppet 4.5.0. Use [`dig44()`](#dig44) for backwards compatibility or use the new version. Returns: `Any` The function goes through the structure by each path component and tries to return the value at the end of the path. ### `dig44` Type: Ruby 3.x API The dig44 function. #### `dig44()` The dig44 function. Returns: `Any` ### `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 ### `downcase` Type: Ruby 3.x API > *Note:* **Deprecated** from Puppet 6.0.0, this function has been replaced with a built-in [`downcase`](https://puppet.com/docs/puppet/latest/function.html#downcase) function. > This function is an implementation of a Ruby class and might not be UTF8 compatible. To ensure compatibility, use this function with Ruby 2.4.0 or greater. #### `downcase()` > *Note:* **Deprecated** from Puppet 6.0.0, this function has been replaced with a built-in [`downcase`](https://puppet.com/docs/puppet/latest/function.html#downcase) function. > This function is an implementation of a Ruby class and might not be UTF8 compatible. To ensure compatibility, use this function with Ruby 2.4.0 or greater. Returns: `String` The converted String, if it was a String that was given ### `empty` Type: Ruby 3.x API > *Note*: **Deprecated** from Puppet 5.5.0, the built-in [`empty`](https://puppet.com/docs/puppet/6.4/function.html#empty) function will be used instead. #### `empty()` > *Note*: **Deprecated** from Puppet 5.5.0, the built-in [`empty`](https://puppet.com/docs/puppet/6.4/function.html#empty) function will be used instead. Returns: `Any` Returns `true` if the argument is an array or hash that contains no elements, or an empty string. Returns `false` when the argument is a numerical value. ### `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 3.x API It optionally takes a hash as a second parameter that will be passed as the third argument to the ensure_resource() function. #### `ensure_packages()` It optionally takes a hash as a second parameter that will be passed as the third argument to the ensure_resource() function. Returns: `Any` install the passed packages ### `ensure_resource` Type: Ruby 3.x API The ensure_resource function. #### `ensure_resource()` The ensure_resource function. Returns: `Any` ### `ensure_resources` Type: Ruby 3.x API The ensure_resources function. #### `ensure_resources()` The ensure_resources function. Returns: `Any` ### `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: ```puppet fact('osfamily') fact('os.architecture') ``` ##### Array indexing: ```puppet fact('mountpoints."/dev".options.1') ``` ##### Fact containing a "." in the name: ```puppet 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: ```puppet fact('osfamily') fact('os.architecture') ``` ###### Array indexing: ```puppet fact('mountpoints."/dev".options.1') ``` ###### Fact containing a "." in the name: ```puppet fact('vmware."VRA.version"') ``` ##### `fact_name` Data type: `String` The name of the fact to check ### `flatten` Type: Ruby 3.x API > **Note:** **Deprecated** from Puppet 5.5.0, this function has been replaced with a built-in [`flatten`](https://puppet.com/docs/puppet/latest/function.html#flatten) function. #### Examples ##### Example usage ```puppet flatten(['a', ['b', ['c']]])` returns: `['a','b','c'] ``` #### `flatten()` > **Note:** **Deprecated** from Puppet 5.5.0, this function has been replaced with a built-in [`flatten`](https://puppet.com/docs/puppet/latest/function.html#flatten) function. Returns: `Any` convert nested arrays into a single flat array ##### Examples ###### Example usage ```puppet flatten(['a', ['b', ['c']]])` returns: `['a','b','c'] ``` ### `floor` Type: Ruby 3.x API Takes a single numeric value as an argument. > **Note:** **Deprecated** from Puppet 6.0.0, this function has been replaced with a built-in [`floor`](https://puppet.com/docs/puppet/latest/function.html#floor) function. #### `floor()` Takes a single numeric value as an argument. > **Note:** **Deprecated** from Puppet 6.0.0, this function has been replaced with a built-in [`floor`](https://puppet.com/docs/puppet/latest/function.html#floor) function. Returns: `Any` the largest integer less or equal to the argument. ### `fqdn_rand_string` Type: Ruby 3.x API The fqdn_rand_string function. #### `fqdn_rand_string()` The fqdn_rand_string function. Returns: `Any` ### `fqdn_rotate` Type: Ruby 3.x API fqdn_rotate.rb #### `fqdn_rotate()` fqdn_rotate.rb Returns: `Any` ### `fqdn_uuid` Type: Ruby 3.x API Returns a [RFC 4122](https://tools.ietf.org/html/rfc4122) valid version 5 UUID based on an FQDN string under the DNS namespace #### Examples ##### Example Usage: ```puppet fqdn_uuid('puppetlabs.com') # Returns '9c70320f-6815-5fc5-ab0f-debe68bf764c' fqdn_uuid('google.com') # Returns '64ee70a4-8cc1-5d25-abf2-dea6c79a09 ``` #### `fqdn_uuid()` The fqdn_uuid function. Returns: `Any` Returns a [RFC 4122](https://tools.ietf.org/html/rfc4122) valid version 5 UUID ##### Examples ###### Example Usage: ```puppet fqdn_uuid('puppetlabs.com') # Returns '9c70320f-6815-5fc5-ab0f-debe68bf764c' fqdn_uuid('google.com') # Returns '64ee70a4-8cc1-5d25-abf2-dea6c79a09 ``` ### `get_module_path` Type: Ruby 3.x API > *Note:* that since Puppet 5.4.0 the built-in [`module_directory`](https://puppet.com/docs/puppet/latest/function.html#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: ```puppet $module_path = get_module_path('stdlib') ``` #### `get_module_path()` > *Note:* that since Puppet 5.4.0 the built-in [`module_directory`](https://puppet.com/docs/puppet/latest/function.html#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: ```puppet $module_path = get_module_path('stdlib') ``` ### `getparam` Type: Ruby 3.x API The getparam function. #### `getparam()` The getparam function. Returns: `Any` ### `getvar` Type: Ruby 3.x API > **Note:** from Puppet 6.0.0, the compatible function with the same name in Puppet core will be used instead of this function. The new function also has support for digging into a structured value. See the built-in [`getvar`](https://puppet.com/docs/puppet/latest/function.html#getvar) funct #### Examples ##### Example usage ```puppet $foo = getvar('site::data::foo') # Equivalent to $foo = $site::data::foo ``` ##### Where namespace is stored in a string ```puppet $datalocation = 'site::data' $bar = getvar("${datalocation}::bar") # Equivalent to $bar = $site::data::bar ``` #### `getvar()` > **Note:** from Puppet 6.0.0, the compatible function with the same name in Puppet core will be used instead of this function. The new function also has support for digging into a structured value. See the built-in [`getvar`](https://puppet.com/docs/puppet/latest/function.html#getvar) funct Returns: `Any` undef - if variable does not exist ##### Examples ###### Example usage ```puppet $foo = getvar('site::data::foo') # Equivalent to $foo = $site::data::foo ``` ###### Where namespace is stored in a string ```puppet $datalocation = 'site::data' $bar = getvar("${datalocation}::bar") # Equivalent to $bar = $site::data::bar ``` ### `glob` Type: Ruby 3.x API Uses same patterns as Dir#glob. #### Examples ##### Example Usage: ```puppet $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: ```puppet $confs = glob(['/etc/**/*.conf', '/opt/**/*.conf']) ``` ### `grep` Type: Ruby 3.x API > **Note:** that since Puppet 4.0.0, the built-in [`filter`](https://puppet.com/docs/puppet/latest/function.html#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: ```puppet grep(['aaa','bbb','ccc','aaaddd'], 'aaa') # Returns ['aaa','aaaddd'] ``` #### `grep()` > **Note:** that since Puppet 4.0.0, the built-in [`filter`](https://puppet.com/docs/puppet/latest/function.html#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: ```puppet grep(['aaa','bbb','ccc','aaaddd'], 'aaa') # Returns ['aaa','aaaddd'] ``` ### `has_interface_with` Type: Ruby 3.x API Valid kinds are `macaddress`, `netmask`, `ipaddress` and `network`. #### Examples ##### **Usage** ```puppet 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: ```puppet 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** ```puppet 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: ```puppet 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. ### `has_key` Type: Ruby 3.x API > **Note:** **Deprecated** since Puppet 4.0.0, this can now be achieved in the Puppet language with the following equivalent expression: $my_hash = {'key_one' => 'value_one'} if 'key_one' in $my_hash { notice('this will be printed') #### Examples ##### Example Usage: ```puppet $my_hash = {'key_one' => 'value_one'} if has_key($my_hash, 'key_two') { notice('we will not reach here') } if has_key($my_hash, 'key_one') { notice('this will be printed') } ``` #### `has_key()` > **Note:** **Deprecated** since Puppet 4.0.0, this can now be achieved in the Puppet language with the following equivalent expression: $my_hash = {'key_one' => 'value_one'} if 'key_one' in $my_hash { notice('this will be printed') Returns: `Any` Boolean value ##### Examples ###### Example Usage: ```puppet $my_hash = {'key_one' => 'value_one'} if has_key($my_hash, 'key_two') { notice('we will not reach here') } if has_key($my_hash, 'key_one') { notice('this will be printed') } ``` ### `hash` Type: Ruby 3.x API > **Note:** This function has been replaced with the built-in ability to create a new value of almost any data type - see the built-in [`Hash.new`](https://puppet.com/docs/puppet/latest/function.html#conversion-to-hash-and-struct) function in Puppet. This example shows the equivalent expression in the Puppet language: ``` Hash(['a',1,'b',2,'c',3]) Hash([['a',1],['b',2],['c',3]]) ``` #### Examples ##### Example Usage: ```puppet hash(['a',1,'b',2,'c',3]) # Returns: {'a'=>1,'b'=>2,'c'=>3} ``` #### `hash()` > **Note:** This function has been replaced with the built-in ability to create a new value of almost any data type - see the built-in [`Hash.new`](https://puppet.com/docs/puppet/latest/function.html#conversion-to-hash-and-struct) function in Puppet. This example shows the equivalent expression in the Puppet language: ``` Hash(['a',1,'b',2,'c',3]) Hash([['a',1],['b',2],['c',3]]) ``` Returns: `Any` the converted array as a hash ##### Examples ###### Example Usage: ```puppet hash(['a',1,'b',2,'c',3]) # Returns: {'a'=>1,'b'=>2,'c'=>3} ``` ### `intersection` Type: Ruby 3.x API This function returns an array of the intersection of two. #### Examples ##### Example Usage: ```puppet 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: ```puppet 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: ```puppet # 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: ```puppet # 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 ### `is_absolute_path` Type: Ruby 4.x API Wrapper that calls the Puppet 3.x function of the same name. #### `is_absolute_path(Any $scope, Any *$args)` The is_absolute_path function. Returns: `Boolea` A boolean value returned from the called 3.x function. ##### `scope` Data type: `Any` The main value that will be passed to the wrapped method ##### `*args` Data type: `Any` Any additional values that are to be passed to the wrapped method ### `is_absolute_path` Type: Ruby 3.x API This function works for windows and unix style paths. > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_leg #### Examples ##### The following values will return true: ```puppet $my_path = 'C:/Program Files (x86)/Puppet Labs/Puppet' is_absolute_path($my_path) $my_path2 = '/var/lib/puppet' is_absolute_path($my_path2) $my_path3 = ['C:/Program Files (x86)/Puppet Labs/Puppet'] is_absolute_path($my_path3) $my_path4 = ['/var/lib/puppet'] is_absolute_path($my_path4) ``` ##### The following values will return false: ```puppet is_absolute_path(true) is_absolute_path('../var/lib/puppet') is_absolute_path('var/lib/puppet') $undefined = undef is_absolute_path($undefined) ``` #### `is_absolute_path()` This function works for windows and unix style paths. > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_leg Returns: `Boolean` Returns `true` or `false` ##### Examples ###### The following values will return true: ```puppet $my_path = 'C:/Program Files (x86)/Puppet Labs/Puppet' is_absolute_path($my_path) $my_path2 = '/var/lib/puppet' is_absolute_path($my_path2) $my_path3 = ['C:/Program Files (x86)/Puppet Labs/Puppet'] is_absolute_path($my_path3) $my_path4 = ['/var/lib/puppet'] is_absolute_path($my_path4) ``` ###### The following values will return false: ```puppet is_absolute_path(true) is_absolute_path('../var/lib/puppet') is_absolute_path('var/lib/puppet') $undefined = undef is_absolute_path($undefined) ``` ### `is_array` Type: Ruby 4.x API Wrapper that calls the Puppet 3.x function of the same name. #### `is_array(Any $scope, Any *$args)` The is_array function. Returns: `Boolea` A boolean value returned from the called 3.x function. ##### `scope` Data type: `Any` The main value that will be passed to the wrapped method ##### `*args` Data type: `Any` Any additional values that are to be passed to the wrapped method ### `is_array` Type: Ruby 3.x API > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). #### `is_array()` > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). Returns: `Boolean` Returns `true` or `false` ### `is_bool` Type: Ruby 4.x API Wrapper that calls the Puppet 3.x function of the same name. #### `is_bool(Any $scope, Any *$args)` The is_bool function. Returns: `Boolea` A boolean value returned from the called 3.x function. ##### `scope` Data type: `Any` The main value that will be passed to the wrapped method ##### `*args` Data type: `Any` Any additional values that are to be passed to the wrapped method ### `is_bool` Type: Ruby 3.x API > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). #### `is_bool()` > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). Returns: `Boolean` Returns `true` or `false` ### `is_domain_name` Type: Ruby 3.x API > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). #### `is_domain_name()` > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). Returns: `Boolean` Returns `true` or `false` ### `is_email_address` Type: Ruby 3.x API > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). #### `is_email_address()` > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). Returns: `Boolean` Returns `true` or `false` ### `is_float` Type: Ruby 4.x API Wrapper that calls the Puppet 3.x function of the same name. #### `is_float(Any $scope, Any *$args)` The is_float function. Returns: `Boolea` A boolean value returned from the called 3.x function. ##### `scope` Data type: `Any` The main value that will be passed to the wrapped method ##### `*args` Data type: `Any` Any additional values that are to be passed to the wrapped method ### `is_float` Type: Ruby 3.x API > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). #### `is_float()` > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). Returns: `Boolean` Returns `true` or `false` ### `is_function_available` Type: Ruby 3.x API This function accepts a string as an argument. > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). #### `is_function_available()` This function accepts a string as an argument. > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). Returns: `Boolean` Returns `true` or `false` ### `is_hash` Type: Ruby 3.x API > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). #### `is_hash()` > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). Returns: `Boolean` Returns `true` or `false` ### `is_integer` Type: Ruby 3.x API The string may start with a '-' (minus). A value of '0' is allowed, but a leading '0' digit may not be followed by other digits as this indicates that the value is octal (base 8). If given any other argument `false` is returned. > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). #### `is_integer()` The string may start with a '-' (minus). A value of '0' is allowed, but a leading '0' digit may not be followed by other digits as this indicates that the value is octal (base 8). If given any other argument `false` is returned. > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). Returns: `Boolean` Returns `true` or `false` ### `is_ip_address` Type: Ruby 4.x API Wrapper that calls the Puppet 3.x function of the same name. #### `is_ip_address(Any $scope, Any *$args)` The is_ip_address function. Returns: `Boolea` A boolean value returned from the called 3.x function. ##### `scope` Data type: `Any` The main value that will be passed to the wrapped method ##### `*args` Data type: `Any` Any additional values that are to be passed to the wrapped method ### `is_ip_address` Type: Ruby 3.x API > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). #### `is_ip_address()` > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). Returns: `Boolean` Returns `true` or `false` ### `is_ipv4_address` Type: Ruby 4.x API Wrapper that calls the Puppet 3.x function of the same name. #### `is_ipv4_address(Any $scope, Any *$args)` The is_ipv4_address function. Returns: `Boolea` A boolean value returned from the called 3.x function. ##### `scope` Data type: `Any` The main value that will be passed to the wrapped method ##### `*args` Data type: `Any` Any additional values that are to be passed to the wrapped method ### `is_ipv4_address` Type: Ruby 3.x API > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). #### `is_ipv4_address()` > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). Returns: `Boolean` Returns `true` or `false` ### `is_ipv6_address` Type: Ruby 4.x API Wrapper that calls the Puppet 3.x function of the same name. #### `is_ipv6_address(Any $scope, Any *$args)` The is_ipv6_address function. Returns: `Boolea` A boolean value returned from the called 3.x function. ##### `scope` Data type: `Any` The main value that will be passed to the wrapped method ##### `*args` Data type: `Any` Any additional values that are to be passed to the wrapped method ### `is_ipv6_address` Type: Ruby 3.x API > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). #### `is_ipv6_address()` > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). Returns: `Boolean` Returns `true` or `false` ### `is_mac_address` Type: Ruby 3.x API > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). #### `is_mac_address()` > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). Returns: `Boolean` Returns `true` or `false` ### `is_numeric` Type: Ruby 4.x API Wrapper that calls the Puppet 3.x function of the same name. #### `is_numeric(Any $scope, Any *$args)` The is_numeric function. Returns: `Boolea` A boolean value returned from the called 3.x function. ##### `scope` Data type: `Any` The main value that will be passed to the wrapped method ##### `*args` Data type: `Any` Any additional values that are to be passed to the wrapped method ### `is_numeric` Type: Ruby 3.x API Returns true if the given argument is a Numeric (Integer or Float), or a String containing either a valid integer in decimal base 10 form, or a valid floating point string representation. The function recognizes only decimal (base 10) integers and float but not integers in hex (base 16) or octal (base 8) form. The string representation may start with a '-' (minus). If a decimal '.' is used, it must be followed by at least one digit. > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). #### `is_numeric()` Returns true if the given argument is a Numeric (Integer or Float), or a String containing either a valid integer in decimal base 10 form, or a valid floating point string representation. The function recognizes only decimal (base 10) integers and float but not integers in hex (base 16) or octal (base 8) form. The string representation may start with a '-' (minus). If a decimal '.' is used, it must be followed by at least one digit. > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). Returns: `Boolean` Returns `true` or `false` ### `is_string` Type: Ruby 4.x API Wrapper that calls the Puppet 3.x function of the same name. #### `is_string(Any $scope, Any *$args)` The is_string function. Returns: `Boolean` A boolean value returned from the called 3.x function. ##### `scope` Data type: `Any` The main value that will be passed to the wrapped method ##### `*args` Data type: `Any` Any additional values that are to be passed to the wrapped method ### `is_string` Type: Ruby 3.x API > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). #### `is_string()` > **Note:* **Deprecated** Will be removed in a future version of stdlib. See [`validate_legacy`](#validate_legacy). Returns: `Boolean` Returns `true` or `false` ### `join` Type: Ruby 3.x API > **Note:** **Deprecated** from Puppet 5.4.0 this function has been replaced with a built-in [`join`](https://puppet.com/docs/puppet/latest/function.html#join) function. #### Examples ##### Example Usage: ```puppet join(['a','b','c'], ",") # Results in: "a,b,c" ``` #### `join()` > **Note:** **Deprecated** from Puppet 5.4.0 this function has been replaced with a built-in [`join`](https://puppet.com/docs/puppet/latest/function.html#join) function. Returns: `String` The String containing each of the array values ##### Examples ###### Example Usage: ```puppet join(['a','b','c'], ",") # Results in: "a,b,c" ``` ### `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 for `String` and its formatting options for `Array` and `Hash`. #### Examples ##### Example Usage: ```puppet 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 for `String` and its formatting options for `Array` and `Hash`. Returns: `Hash` The joined hash ##### Examples ###### Example Usage: ```puppet 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"] ``` ### `keys` Type: Ruby 3.x API > **Note:** **Deprecated** from Puppet 5.5.0, the built-in [`keys`](https://puppet.com/docs/puppet/latest/function.html#keys) function will be used instead of this function. #### `keys()` > **Note:** **Deprecated** from Puppet 5.5.0, the built-in [`keys`](https://puppet.com/docs/puppet/latest/function.html#keys) function will be used instead of this function. Returns: `Array` An array containing each of the hashes key values. ### `length` Type: Ruby 4.x API The original size() function did not handle Puppets new type capabilities, so this function is a Puppet 4 compatible solution. > **Note:** **Deprecated** from Puppet 6.0.0, this function has been replaced with a built-in [`length`](https://puppet.com/docs/puppet/latest/function.html#length) function. #### `length(Variant[String,Array,Hash] $value)` The original size() function did not handle Puppets new type capabilities, so this function is a Puppet 4 compatible solution. > **Note:** **Deprecated** from Puppet 6.0.0, this function has been replaced with a built-in [`length`](https://puppet.com/docs/puppet/latest/function.html#length) function. Returns: `Integer` The length of the given object ##### `value` Data type: `Variant[String,Array,Hash]` The value whose length is to be found ### `load_module_metadata` Type: Ruby 3.x API This function loads the metadata of a given module. #### Examples ##### Example USage: ```puppet $metadata = load_module_metadata('archive') notify { $metadata['author']: } ``` #### `load_module_metadata()` The load_module_metadata function. Returns: `Any` The modules metadata ##### Examples ###### Example USage: ```puppet $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: ```puppet $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: ```puppet $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: ```puppet $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: ```puppet $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 ``` ### `lstrip` Type: Ruby 3.x API > **Note:** **Deprecated** from Puppet 6.0.0, this function has been replaced with a -built-in [`max`](https://puppet.com/docs/puppet/latest/function.html#max) function. +built-in [`lstrip`](https://puppet.com/docs/puppet/latest/function.html#lstrip) function. #### `lstrip()` > **Note:** **Deprecated** from Puppet 6.0.0, this function has been replaced with a -built-in [`max`](https://puppet.com/docs/puppet/latest/function.html#max) function. +built-in [`lstrip`](https://puppet.com/docs/puppet/latest/function.html#lstrip) function. Returns: `String` The stripped string ### `max` Type: Ruby 3.x API Requires at least one argument. > **Note:** **Deprecated** from Puppet 6.0.0, this function has been replaced with a -built-in [`lstrip`](https://puppet.com/docs/puppet/latest/function.html#lstrip) function. +built-in [`max`](https://puppet.com/docs/puppet/latest/function.html#max) function. #### `max()` Requires at least one argument. > **Note:** **Deprecated** from Puppet 6.0.0, this function has been replaced with a -built-in [`lstrip`](https://puppet.com/docs/puppet/latest/function.html#lstrip) function. +built-in [`max`](https://puppet.com/docs/puppet/latest/function.html#max) function. Returns: `Any` The highest value among those passed in ### `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`](https://puppet.com/docs/puppet/latest/function.html#any) and [`all`](https://puppet.com/docs/puppet/latest/function.html#all) functions. #### Examples ##### **Usage** ```puppet 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`](https://puppet.com/docs/puppet/latest/function.html#any) and [`all`](https://puppet.com/docs/puppet/latest/function.html#all) functions. Returns: `Any` Returns whether the given value was a member of the array ##### Examples ###### **Usage** ```puppet 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 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 + $hash2` If merge is given a single Iterable (Array, Hash, etc.) it will call a given block with up to three parameters, and merge each resulting Hash into the accumulated result. All other types of values returned from the block (typically undef) are skipped (not merged). The codeblock can take 2 or three parameters: * with two, it gets the current hash (as built to this point), and each value (for hash the value is a [key, value] tuple) * with three, it gets the current hash (as built to this point), the key/index of each value, and then the value If the iterable is empty, or no hash was returned from the given block, an empty hash is returned. In the given block, a call to `next()` will skip that entry, and a call to `break()` will end the iteration. The iterative `merge()` has an advantage over doing the same with a general `reduce()` in that the constructed hash does not have to be copied in each iteration and thus will perform much better with large inputs. #### Examples ##### Using merge() ```puppet $hash1 = {'one' => 1, 'two', => 2} $hash2 = {'two' => 'dos', 'three', => 'tres'} $merged_hash = merge($hash1, $hash2) # $merged_hash = {'one' => 1, 'two' => 'dos', 'three' => 'tres'} ``` ##### counting occurrences of strings in an array ```puppet ['a', 'b', 'c', 'c', 'd', 'b'].merge | $hsh, $v | { { $v => $hsh[$v].lest || { 0 } + 1 } } # results in { a => 1, b => 2, c => 2, d => 1 } ``` ##### skipping values for entries that are longer than 1 char ```puppet ['a', 'b', 'c', 'c', 'd', 'b', 'blah', 'blah'].merge | $hsh, $v | { if $v =~ String[1,1] { { $v => $hsh[$v].lest || { 0 } + 1 } } } # results in { a => 1, b => 2, c => 2, d => 1 } ``` #### `merge(Variant[Hash[Scalar,Any], Undef, String[0,0]] *$args)` The merge function. Returns: `Hash[Scalar,Any]` The merged hash ##### `*args` Data type: `Variant[Hash[Scalar,Any], Undef, String[0,0]]` Repeated Param - The hashes that are to be merged #### `merge(Iterable *$args, Callable[3,3] &$block)` The merge function. Returns: `Hash` The merged hash ##### `*args` Data type: `Iterable` Repeated Param - The hashes that are to be merged ##### `&block` Data type: `Callable[3,3]` A block placed on the repeatable param `args` #### `merge(Iterable *$args, Callable[2,2] &$block)` The merge function. Returns: `Hash` The merged hash ##### `*args` Data type: `Iterable` Repeated Param - The hashes that are to be merged ##### `&block` Data type: `Callable[2,2]` A block placed on the repeatable param `args` ### `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 + $has #### Examples ##### **Usage** ```puppet $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 + $has Returns: `Hash` The merged hash ##### Examples ###### **Usage** ```puppet $hash1 = {'one' => 1, 'two', => 2} $hash2 = {'two' => 'dos', 'three', => 'tres'} $merged_hash = merge($hash1, $hash2) # $merged_hash = {'one' => 1, 'two' => 'dos', 'three' => 'tres'} ``` ### `min` Type: Ruby 3.x API Requires at least one argument. > **Note:** **Deprecated** from Puppet 6.0.0, this function has been replaced with a built-in [`min`](https://puppet.com/docs/puppet/latest/function.html#min) function. #### `min()` Requires at least one argument. > **Note:** **Deprecated** from Puppet 6.0.0, this function has been replaced with a built-in [`min`](https://puppet.com/docs/puppet/latest/function.html#min) function. Returns: `Any` The lowest value among the given arguments ### `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 > *Note:* Only the major version is taken into account. #### Examples ##### Example usage:# ```puppet if os_version_gte('Debian', '9') { } if os_version_gte('Ubuntu', '18.04') { } ``` #### `os_version_gte(String[1] $os, String[1] $version)` > *Note:* Only the major version is taken into account. Returns: `Boolean` `true` or `false ##### Examples ###### Example usage:# ```puppet if os_version_gte('Debian', '9') { } if os_version_gte('Ubuntu', '18.04') { } ``` ##### `os` Data type: `String[1]` operating system ##### `version` Data type: `String[1]` ### `parsehocon` Type: Ruby 4.x API This function accepts HOCON as a string and converts it into the correct Puppet structure #### Examples ##### How to parse hocon ```puppet $data = parsehocon("{any valid hocon: string}") ``` #### `parsehocon(String $hocon_string, Optional[Any] $default)` The parsehocon function. Returns: `Any` ##### Examples ###### How to parse hocon ```puppet $data = parsehocon("{any valid hocon: string}") ``` ##### `hocon_string` Data type: `String` A valid HOCON string ##### `default` Data type: `Optional[Any]` An optional default to return if parsing hocon_string fails ### `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 YAML string have failed. #### `parsejson()` > *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` convert JSON into Puppet structure ### `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 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()` 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. ### `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** ```puppet 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** ```puppet prefix(['a','b','c'], 'p') Will return: ['pa','pb','pc'] ``` ### `private` Type: Ruby 3.x API **Deprecated:** Sets the current class or definition as private. Calling the class or definition from outside the current module will fail. #### `private()` The private function. Returns: `Any` Sets the current class or definition as private ### `pry` Type: Ruby 3.x API This is useful for debugging manifest code at specific points during a compilation. #### Examples ##### **Usage** ```puppet `pry()` ``` #### `pry()` This is useful for debugging manifest code at specific points during a compilation. Returns: `Any` debugging information ##### Examples ###### **Usage** ```puppet `pry()` ``` ### `pw_hash` Type: Ruby 3.x API Please note: This function is an implementation of a Ruby class and as such may not be entirely UTF8 compatible. To ensure compatibility please use this function with Ruby 2.4.0 or greater - https://bugs.ruby-lang.org/issues/10085. #### `pw_hash()` Please note: This function is an implementation of a Ruby class and as such may not be entirely UTF8 compatible. To ensure compatibility please use this function with Ruby 2.4.0 or greater - https://bugs.ruby-lang.org/issues/10085. Returns: `Any` ### `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** ```puppet 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** ```puppet 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 !~ #### Examples ##### **Usage** ```puppet 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 !~ Returns: `Any` an array containing all the elements which doesn'' match the provided regular expression ##### Examples ###### **Usage** ```puppet 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 ### `round` Type: Ruby 3.x API ```round(2.9)``` returns ```3``` ```round(2.4)``` returns ```2``` > *Note:* from Puppet 6.0.0, the compatible function with the same name in Puppet core will be used instead of this function. #### `round()` ```round(2.9)``` returns ```3``` ```round(2.4)``` returns ```2``` > *Note:* from Puppet 6.0.0, the compatible function with the same name in Puppet core will be used instead of this function. Returns: `Any` the rounded value as integer ### `rstrip` Type: Ruby 3.x API > *Note:* from Puppet 6.0.0, the compatible function with the same name in Puppet core will be used instead of this function. #### `rstrip()` > *Note:* from Puppet 6.0.0, the compatible function with the same name in Puppet core will be used instead of this function. Returns: `Any` the string with leading spaces removed ### `seeded_rand` Type: Ruby 3.x API seeded_rand.rb #### `seeded_rand()` seeded_rand.rb Returns: `Any` ### `seeded_rand_string` Type: Ruby 4.x API Generates a consistent random string of specific length based on provided seed. #### Examples ##### Generate a consistently random string of length 8 with a seed: ```puppet seeded_rand_string(8, "${module_name}::redis_password") ``` ##### Generate a random string from a specific set of characters: ```puppet seeded_rand_string(5, '', 'abcdef') ``` #### `seeded_rand_string(Integer[1] $length, String $seed, Optional[String[2]] $charset)` The seeded_rand_string function. Returns: `String` Random string. ##### Examples ###### Generate a consistently random string of length 8 with a seed: ```puppet seeded_rand_string(8, "${module_name}::redis_password") ``` ###### Generate a random string from a specific set of characters: ```puppet seeded_rand_string(5, '', 'abcdef') ``` ##### `length` Data type: `Integer[1]` Length of string to be generated. ##### `seed` Data type: `String` Seed string. ##### `charset` Data type: `Optional[String[2]]` String that contains characters to use for the random string. ### `shell_escape` Type: Ruby 3.x API >* Note:* that the resulting string should be used unquoted and is not intended for use in double quotes nor in single quotes. This function behaves the same as ruby's Shellwords.shellescape() function. #### `shell_escape()` >* Note:* that the resulting string should be used unquoted and is not intended for use in double quotes nor in single quotes. This function behaves the same as ruby's Shellwords.shellescape() function. Returns: `Any` A string of characters with metacharacters converted to their escaped form. ### `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 ### `size` Type: Ruby 3.x API > *Note:* that since Puppet 5.4.0, the length() function in Puppet is preferred over this. For versions of Puppet < 5.4.0 use the stdlib length() function. #### `size()` > *Note:* that since Puppet 5.4.0, the length() function in Puppet is preferred over this. For versions of Puppet < 5.4.0 use the stdlib length() function. Returns: `Any` the number of elements in a string, an array or a hash ### `sort` Type: Ruby 3.x API Note that from Puppet 6.0.0 the same function in Puppet will be used instead of this. #### `sort()` Note that from Puppet 6.0.0 the same function in Puppet will be used instead of this. Returns: `Any` sorted string or array ### `sprintf_hash` Type: Ruby 4.x API The first parameter is format string describing how the rest of the parameters in the hash should be formatted. See the documentation for the `Kernel::sprintf` function in Ruby for all the details. In the given argument hash with parameters, all keys are converted to symbols so they work with the `sprintf` function. Note that since Puppet 4.10.10, and 5.3.4 this functionality is supported by the `sprintf` function in puppet core. #### Examples ##### Format a string and number ```puppet $output = sprintf_hash('String: %s / number converted to binary: %b', { 'foo' => 'a string', 'number' => 5 }) # $output = 'String: a string / number converted to binary: 101' ``` #### `sprintf_hash(String $format, Hash $arguments)` The first parameter is format string describing how the rest of the parameters in the hash should be formatted. See the documentation for the `Kernel::sprintf` function in Ruby for all the details. In the given argument hash with parameters, all keys are converted to symbols so they work with the `sprintf` function. Note that since Puppet 4.10.10, and 5.3.4 this functionality is supported by the `sprintf` function in puppet core. Returns: `Any` The formatted string. ##### Examples ###### Format a string and number ```puppet $output = sprintf_hash('String: %s / number converted to binary: %b', { 'foo' => 'a string', 'number' => 5 }) # $output = 'String: a string / number converted to binary: 101' ``` ##### `format` Data type: `String` The format to use. ##### `arguments` Data type: `Hash` Hash with parameters. ### `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::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 ##### ```puppet '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 ###### ```puppet '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, Enum['directory', 'link', 'mounted', 'service', 'file'] $resource)` +#### `stdlib::ensure(Variant[Boolean, Enum['present', 'absent']] $ensure, Enum['directory', 'link', 'mounted', 'service', 'file', 'package'] $resource)` The stdlib::ensure function. Returns: `String` ##### `ensure` Data type: `Variant[Boolean, Enum['present', 'absent']]` ##### `resource` -Data type: `Enum['directory', 'link', 'mounted', 'service', 'file']` +Data type: `Enum['directory', 'link', 'mounted', 'service', 'file', 'package']` ### `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 ```puppet 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 ```puppet 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::ip_in_range` Type: Ruby 4.x API Returns true if the ipaddress is within the given CIDRs #### Examples ##### ip_in_range(, ) ```puppet stdlib::ip_in_range('10.10.10.53', '10.10.10.0/24') => true ``` #### `stdlib::ip_in_range(String $ipaddress, Variant[String, Array] $range)` The stdlib::ip_in_range function. Returns: `Boolean` True or False ##### Examples ###### ip_in_range(, ) ```puppet stdlib::ip_in_range('10.10.10.53', '10.10.10.0/24') => true ``` ##### `ipaddress` Data type: `String` The IP address to check ##### `range` Data type: `Variant[String, Array]` One CIDR or an array of CIDRs defining the range(s) to check against ### `stdlib::start_with` Type: Ruby 4.x API Returns true if str starts with one of the prefixes given. Each of the prefixes should be a String. #### Examples ##### ```puppet 'foobar'.stdlib::start_with('foo') => true 'foobar'.stdlib::start_with('bar') => false 'foObar'.stdlib::start_with(['bar', 'baz']) => false ``` #### `stdlib::start_with(String $test_string, Variant[String[1],Array[String[1], 1]] $prefixes)` The stdlib::start_with function. Returns: `Boolean` True or False ##### Examples ###### ```puppet 'foobar'.stdlib::start_with('foo') => true 'foobar'.stdlib::start_with('bar') => false 'foObar'.stdlib::start_with(['bar', 'baz']) => false ``` ##### `test_string` Data type: `String` The string to check ##### `prefixes` Data type: `Variant[String[1],Array[String[1], 1]]` The prefixes to check. ### `str2bool` Type: Ruby 3.x API > *Note:* that since Puppet 5.0.0 the Boolean data type can convert strings to a Boolean value. See the function new() in Puppet for details what the Boolean data type supports. #### `str2bool()` > *Note:* that since Puppet 5.0.0 the Boolean data type can convert strings to a Boolean value. See the function new() in Puppet for details what the Boolean data type supports. Returns: `Any` This attempt to convert to boolean strings that contain things like: Y,y, 1, T,t, TRUE,true to 'true' and strings that contain things like: 0, F,f, N,n, false, FALSE, no to 'false'. ### `str2saltedpbkdf2` Type: Ruby 3.x API Convert a string into a salted SHA512 PBKDF2 password hash like requred for OS X / macOS 10.8+. Note, however, that Apple changes what's required periodically and this may not work for the latest version of macOS. If that is the case you should get a helpful error message when Puppet tries to set the pasword using the parameters you provide to the user resource. #### Examples ##### Plain text password and salt ```puppet $pw_info = str2saltedpbkdf2('Pa55w0rd', 'Using s0m3 s@lt', 50000) user { 'jdoe': ensure => present, iterations => $pw_info['interations'], password => $pw_info['password_hex'], salt => $pw_info['salt_hex'], } ``` ##### Sensitive password and salt ```puppet $pw = Sensitive.new('Pa55w0rd') $salt = Sensitive.new('Using s0m3 s@lt') $pw_info = Sensitive.new(str2saltedpbkdf2($pw, $salt, 50000)) user { 'jdoe': ensure => present, iterations => unwrap($pw_info)['interations'], password => unwrap($pw_info)['password_hex'], salt => unwrap($pw_info)['salt_hex'], } ``` #### `str2saltedpbkdf2()` Convert a string into a salted SHA512 PBKDF2 password hash like requred for OS X / macOS 10.8+. Note, however, that Apple changes what's required periodically and this may not work for the latest version of macOS. If that is the case you should get a helpful error message when Puppet tries to set the pasword using the parameters you provide to the user resource. Returns: `Hash` Provides a hash containing the hex version of the password, the hex version of the salt, and iterations. ##### Examples ###### Plain text password and salt ```puppet $pw_info = str2saltedpbkdf2('Pa55w0rd', 'Using s0m3 s@lt', 50000) user { 'jdoe': ensure => present, iterations => $pw_info['interations'], password => $pw_info['password_hex'], salt => $pw_info['salt_hex'], } ``` ###### Sensitive password and salt ```puppet $pw = Sensitive.new('Pa55w0rd') $salt = Sensitive.new('Using s0m3 s@lt') $pw_info = Sensitive.new(str2saltedpbkdf2($pw, $salt, 50000)) user { 'jdoe': ensure => present, iterations => unwrap($pw_info)['interations'], password => unwrap($pw_info)['password_hex'], salt => unwrap($pw_info)['salt_hex'], } ``` ### `str2saltedsha512` Type: Ruby 3.x API Given any simple string, you will get a hex version of a salted-SHA512 password hash that can be inserted into your Puppet manifests as a valid password attribute. #### `str2saltedsha512()` Given any simple string, you will get a hex version of a salted-SHA512 password hash that can be inserted into your Puppet manifests as a valid password attribute. Returns: `Any` converted string as a hex version of a salted-SHA512 password hash ### `strip` Type: Ruby 3.x API > *Note:*: from Puppet 6.0.0, the compatible function with the same name in Puppet core will be used instead of this function. #### Examples ##### **Usage** ```puppet strip(" aaa ") Would result in: "aaa" ``` #### `strip()` > *Note:*: from Puppet 6.0.0, the compatible function with the same name in Puppet core will be used instead of this function. Returns: `Any` String or Array converted ##### Examples ###### **Usage** ```puppet strip(" aaa ") Would result in: "aaa" ``` ### `suffix` Type: Ruby 3.x API > *Note:* that 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| { "${x}p" }``` #### Examples ##### **Usage** ```puppet suffix(['a','b','c'], 'p') Will return: ['ap','bp','cp'] ``` #### `suffix()` > *Note:* that 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| { "${x}p" }``` Returns: `Any` Array or Hash with updated elements containing the passed suffix ##### Examples ###### **Usage** ```puppet suffix(['a','b','c'], 'p') Will return: ['ap','bp','cp'] ``` ### `swapcase` Type: Ruby 3.x API This function will swap the existing case of a string. #### Examples ##### **Usage** ```puppet swapcase("aBcD") Would result in: "AbCd" ``` #### `swapcase()` The swapcase function. Returns: `Any` string with uppercase alphabetic characters converted to lowercase and lowercase characters converted to uppercase ##### Examples ###### **Usage** ```puppet swapcase("aBcD") Would result in: "AbCd" ``` ### `time` Type: Ruby 3.x API > *Note:* that since Puppet 4.8.0 the Puppet language has the data types Timestamp (a point in time) and Timespan (a duration). The following example is equivalent to calling time() without any arguments: ```Timestamp()``` #### Examples ##### **Usage** ```puppet time() Will return something like: 1311972653 ``` #### `time()` > *Note:* that since Puppet 4.8.0 the Puppet language has the data types Timestamp (a point in time) and Timespan (a duration). The following example is equivalent to calling time() without any arguments: ```Timestamp()``` Returns: `Any` the current time since epoch as an integer. ##### Examples ###### **Usage** ```puppet time() Will return something like: 1311972653 ``` ### `to_bytes` Type: Ruby 3.x API Takes a single string value as an argument. These conversions reflect a layperson's understanding of 1 MB = 1024 KB, when in fact 1 MB = 1000 KB, and 1 MiB = 1024 KiB. #### `to_bytes()` Takes a single string value as an argument. These conversions reflect a layperson's understanding of 1 MB = 1024 KB, when in fact 1 MB = 1000 KB, and 1 MiB = 1024 KiB. Returns: `Any` converted value into bytes ### `to_json` Type: Ruby 4.x API } #### `to_json(Any $data)` } Returns: `Any` converted data to json ##### `data` Data type: `Any` data structure which needs to be converted into JSON ### `to_json_pretty` Type: Ruby 4.x API Convert data structure and output to pretty JSON #### Examples ##### **Usage** ```puppet * how to output pretty JSON to file file { '/tmp/my.json': ensure => file, content => to_json_pretty($myhash), } * how to output pretty JSON skipping over keys with undef values file { '/tmp/my.json': ensure => file, content => to_json_pretty({ param_one => 'value', param_two => undef, }, true), } * how to output pretty JSON using tabs for indentation file { '/tmp/my.json': ensure => file, content => to_json_pretty({ param_one => 'value', param_two => { param_more => 42, }, }, nil, {indent => ' '}), } ``` #### `to_json_pretty(Variant[Hash, Array] $data, Optional[Optional[Boolean]] $skip_undef, Optional[Struct[{ indent => Optional[String], space => Optional[String], space_before => Optional[String], object_nl => Optional[String], array_nl => Optional[String], allow_nan => Optional[Boolean], max_nesting => Optional[Integer[-1,default]], }]] $opts)` The to_json_pretty function. Returns: `Any` converted data to pretty json ##### Examples ###### **Usage** ```puppet * how to output pretty JSON to file file { '/tmp/my.json': ensure => file, content => to_json_pretty($myhash), } * how to output pretty JSON skipping over keys with undef values file { '/tmp/my.json': ensure => file, content => to_json_pretty({ param_one => 'value', param_two => undef, }, true), } * how to output pretty JSON using tabs for indentation file { '/tmp/my.json': ensure => file, content => to_json_pretty({ param_one => 'value', param_two => { param_more => 42, }, }, nil, {indent => ' '}), } ``` ##### `data` Data type: `Variant[Hash, Array]` data structure which needs to be converted to pretty json ##### `skip_undef` Data type: `Optional[Optional[Boolean]]` value `true` or `false` ##### `opts` Data type: `Optional[Struct[{ indent => Optional[String], space => Optional[String], space_before => Optional[String], object_nl => Optional[String], array_nl => Optional[String], allow_nan => Optional[Boolean], max_nesting => Optional[Integer[-1,default]], }]]` hash-map of settings passed to JSON.pretty_generate, see https://ruby-doc.org/stdlib-2.0.0/libdoc/json/rdoc/JSON.html#method-i-generate. Note that `max_nesting` doesn't take the value `false`; use `-1` instead. ### `to_python` Type: Ruby 4.x API Convert an object into a String containing its Python representation #### Examples ##### how to output Python ```puppet # output Python to a file $listen = '0.0.0.0' $port = 8000 file { '/opt/acme/etc/settings.py': content => inline_epp(@("SETTINGS")), LISTEN = <%= $listen.to_python %> PORT = <%= $mailserver.to_python %> | SETTINGS } ``` #### `to_python(Any $object)` The to_python function. Returns: `Any` ##### Examples ###### how to output Python ```puppet # output Python to a file $listen = '0.0.0.0' $port = 8000 file { '/opt/acme/etc/settings.py': content => inline_epp(@("SETTINGS")), LISTEN = <%= $listen.to_python %> PORT = <%= $mailserver.to_python %> | SETTINGS } ``` ##### `object` Data type: `Any` ### `to_ruby` Type: Ruby 4.x API Convert an object into a String containing its Ruby representation #### Examples ##### how to output Ruby ```puppet # output Ruby to a file $listen = '0.0.0.0' $port = 8000 file { '/opt/acme/etc/settings.rb': content => inline_epp(@("SETTINGS")), LISTEN = <%= $listen.to_ruby %> PORT = <%= $mailserver.to_ruby %> | SETTINGS } ``` #### `to_ruby(Any $object)` The to_ruby function. Returns: `Any` ##### Examples ###### how to output Ruby ```puppet # output Ruby to a file $listen = '0.0.0.0' $port = 8000 file { '/opt/acme/etc/settings.rb': content => inline_epp(@("SETTINGS")), LISTEN = <%= $listen.to_ruby %> PORT = <%= $mailserver.to_ruby %> | SETTINGS } ``` ##### `object` Data type: `Any` +### `to_toml` + +Type: Ruby 4.x API + +Convert a data structure and output to TOML. + +#### Examples + +##### How to output TOML to a file + +```puppet +file { '/tmp/config.toml': + ensure => file, + content => to_toml($myhash), +} +``` + +#### `to_toml(Hash $data)` + +The to_toml function. + +Returns: `String` Converted data as TOML string + +##### Examples + +###### How to output TOML to a file + +```puppet +file { '/tmp/config.toml': + ensure => file, + content => to_toml($myhash), +} +``` + +##### `data` + +Data type: `Hash` + +Data structure which needs to be converted into TOML + ### `to_yaml` Type: Ruby 4.x API } #### `to_yaml(Any $data, Optional[Hash] $options)` } Returns: `String` ##### `data` Data type: `Any` ##### `options` Data type: `Optional[Hash]` ### `try_get_value` Type: Ruby 3.x API The try_get_value function. #### `try_get_value()` The try_get_value function. Returns: `Any` ### `type` Type: Ruby 3.x API please use type3x() before upgrading to Puppet 4 for backwards-compatibility, or migrate to the new parser's typing system. * string * array * hash * float * integer * boolean #### `type()` please use type3x() before upgrading to Puppet 4 for backwards-compatibility, or migrate to the new parser's typing system. * string * array * hash * float * integer * boolean Returns: `Any` the type when passed a value. Type can be one of: ### `type3x` Type: Ruby 3.x API * string * array * hash * float * integer * boolean #### `type3x()` * string * array * hash * float * integer * boolean Returns: `Any` the type when passed a value. Type can be one of: ### `type_of` 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. The built-in type() function in puppet is generally preferred over this function this function is provided for backwards compatibility. #### Examples ##### how to compare values' types ```puppet # compare the types of two values if type_of($first_value) != type_of($second_value) { fail("first_value and second_value are different types") } ``` ##### how to compare against an abstract type ```puppet unless type_of($first_value) <= Numeric { fail("first_value must be Numeric") } unless type_of{$first_value) <= Collection[1] { fail("first_value must be an Array or Hash, and contain at least one element") } ``` #### `type_of(Any $value)` 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. The built-in type() function in puppet is generally preferred over this function this function is provided for backwards compatibility. Returns: `String` the type of the passed value ##### Examples ###### how to compare values' types ```puppet # compare the types of two values if type_of($first_value) != type_of($second_value) { fail("first_value and second_value are different types") } ``` ###### how to compare against an abstract type ```puppet unless type_of($first_value) <= Numeric { fail("first_value must be Numeric") } unless type_of{$first_value) <= Collection[1] { fail("first_value must be an Array or Hash, and contain at least one element") } ``` ##### `value` Data type: `Any` ### `union` Type: Ruby 3.x API This function returns a union of two or more arrays. #### Examples ##### **Usage** ```puppet union(["a","b","c"],["b","c","d"]) Would return: ["a","b","c","d"] ``` #### `union()` The union function. Returns: `Any` a unionized array of two or more arrays ##### Examples ###### **Usage** ```puppet union(["a","b","c"],["b","c","d"]) Would return: ["a","b","c","d"] ``` ### `unique` Type: Ruby 3.x API This function will remove duplicates from strings and arrays. #### Examples ##### **Usage** ```puppet unique("aabbcc") Will return: abc You can also use this with arrays: unique(["a","a","b","b","c","c"]) This returns: ["a","b","c"] ``` #### `unique()` The unique function. Returns: `Any` String or array with duplicates removed ##### Examples ###### **Usage** ```puppet unique("aabbcc") Will return: abc You can also use this with arrays: unique(["a","a","b","b","c","c"]) This returns: ["a","b","c"] ``` ### `unix2dos` Type: Ruby 3.x API Takes a single string argument. #### `unix2dos()` Takes a single string argument. Returns: `Any` the DOS version of the given string. ### `upcase` Type: Ruby 3.x API > *Note:* from Puppet 6.0.0, the compatible function with the same name in Puppet core will be used instead of this function. #### Examples ##### **Usage** ```puppet upcase("abcd") Will return ABCD ``` #### `upcase()` > *Note:* from Puppet 6.0.0, the compatible function with the same name in Puppet core will be used instead of this function. Returns: `Any` converted string ot array of strings to uppercase ##### Examples ###### **Usage** ```puppet upcase("abcd") Will return ABCD ``` ### `uriescape` Type: Ruby 3.x API Urlencodes a string or array of strings. Requires either a single string or an array as an input. #### `uriescape()` The uriescape function. Returns: `String` a string that contains the converted value ### `validate_absolute_path` Type: Ruby 4.x API Validate the string represents an absolute path in the filesystem. #### `validate_absolute_path(Any $scope, Any *$args)` The validate_absolute_path function. Returns: `Boolean` A boolean value returned from the called function. ##### `scope` Data type: `Any` The main value that will be passed to the method ##### `*args` Data type: `Any` Any additional values that are to be passed to the method ### `validate_absolute_path` Type: Ruby 3.x API Validate the string represents an absolute path in the filesystem. This function works for windows and unix style paths. #### Examples ##### **Usage** ```puppet The following values will pass: $my_path = 'C:/Program Files (x86)/Puppet Labs/Puppet' validate_absolute_path($my_path) $my_path2 = '/var/lib/puppet' validate_absolute_path($my_path2) $my_path3 = ['C:/Program Files (x86)/Puppet Labs/Puppet','C:/Program Files/Puppet Labs/Puppet'] validate_absolute_path($my_path3) $my_path4 = ['/var/lib/puppet','/usr/share/puppet'] validate_absolute_path($my_path4) The following values will fail, causing compilation to abort: validate_absolute_path(true) validate_absolute_path('../var/lib/puppet') validate_absolute_path('var/lib/puppet') validate_absolute_path([ 'var/lib/puppet', '/var/foo' ]) validate_absolute_path([ '/var/lib/puppet', 'var/foo' ]) $undefined = undef validate_absolute_path($undefin ``` #### `validate_absolute_path()` The validate_absolute_path function. Returns: `Any` passes when the string is an absolute path or raise an error when it is not and fails compilation ##### Examples ###### **Usage** ```puppet The following values will pass: $my_path = 'C:/Program Files (x86)/Puppet Labs/Puppet' validate_absolute_path($my_path) $my_path2 = '/var/lib/puppet' validate_absolute_path($my_path2) $my_path3 = ['C:/Program Files (x86)/Puppet Labs/Puppet','C:/Program Files/Puppet Labs/Puppet'] validate_absolute_path($my_path3) $my_path4 = ['/var/lib/puppet','/usr/share/puppet'] validate_absolute_path($my_path4) The following values will fail, causing compilation to abort: validate_absolute_path(true) validate_absolute_path('../var/lib/puppet') validate_absolute_path('var/lib/puppet') validate_absolute_path([ 'var/lib/puppet', '/var/foo' ]) validate_absolute_path([ '/var/lib/puppet', 'var/foo' ]) $undefined = undef validate_absolute_path($undefin ``` ### `validate_array` Type: Ruby 4.x API Validate the passed value represents an array. #### `validate_array(Any $scope, Any *$args)` The validate_array function. Returns: `Any` A boolean value (`true` or `false`) returned from the called function. ##### `scope` Data type: `Any` The main value that will be passed to the method ##### `*args` Data type: `Any` Any additional values that are to be passed to the method ### `validate_array` Type: Ruby 3.x API Validate that all passed values are array data structures. Abort catalog compilation if any value fails this check. #### Examples ##### **Usage** ```puppet The following values will pass: $my_array = [ 'one', 'two' ] validate_array($my_array) The following values will fail, causing compilation to abort: validate_array(true) validate_array('some_string') $undefined = undef validate_array($undefined ``` #### `validate_array()` The validate_array function. Returns: `Any` validate array ##### Examples ###### **Usage** ```puppet The following values will pass: $my_array = [ 'one', 'two' ] validate_array($my_array) The following values will fail, causing compilation to abort: validate_array(true) validate_array('some_string') $undefined = undef validate_array($undefined ``` ### `validate_augeas` Type: Ruby 3.x API The first argument of this function should be a string to test, and the second argument should be the name of the Augeas lens to use. If Augeas fails to parse the string with the lens, the compilation will abort with a parse error. A third argument can be specified, listing paths which should not be found in the file. The `$file` variable points to the location of the temporary file being tested in the Augeas tree. #### Examples ##### **Usage** ```puppet If you want to make sure your passwd content never contains a user `foo`, you could write: validate_augeas($passwdcontent, 'Passwd.lns', ['$file/foo']) If you wanted to ensure that no users used the '/bin/barsh' shell, you could use: validate_augeas($passwdcontent, 'Passwd.lns', ['$file/*[shell="/bin/barsh"]'] If a fourth argument is specified, this will be the error message raised and seen by the user. A helpful error message can be returned like this: validate_augeas($sudoerscontent, 'Sudoers.lns', [], 'Failed to validate sudoers content with Augeas') ``` #### `validate_augeas()` The first argument of this function should be a string to test, and the second argument should be the name of the Augeas lens to use. If Augeas fails to parse the string with the lens, the compilation will abort with a parse error. A third argument can be specified, listing paths which should not be found in the file. The `$file` variable points to the location of the temporary file being tested in the Augeas tree. Returns: `Any` validate string using an Augeas lens ##### Examples ###### **Usage** ```puppet If you want to make sure your passwd content never contains a user `foo`, you could write: validate_augeas($passwdcontent, 'Passwd.lns', ['$file/foo']) If you wanted to ensure that no users used the '/bin/barsh' shell, you could use: validate_augeas($passwdcontent, 'Passwd.lns', ['$file/*[shell="/bin/barsh"]'] If a fourth argument is specified, this will be the error message raised and seen by the user. A helpful error message can be returned like this: validate_augeas($sudoerscontent, 'Sudoers.lns', [], 'Failed to validate sudoers content with Augeas') ``` ### `validate_bool` Type: Ruby 4.x API Validate the passed value represents a boolean. #### `validate_bool(Any $scope, Any *$args)` The validate_bool function. Returns: `Boolean` `true` or `false` A boolean value returned from the called function. ##### `scope` Data type: `Any` The main value that will be passed to the method ##### `*args` Data type: `Any` Any additional values that are to be passed to the method ### `validate_bool` Type: Ruby 3.x API Validate that all passed values are either true or false. Abort catalog compilation if any value fails this check. #### Examples ##### **Usage** ```puppet The following values will pass: $iamtrue = true validate_bool(true) validate_bool(true, true, false, $iamtrue) The following values will fail, causing compilation to abort: $some_array = [ true ] validate_bool("false") validate_bool("true") validate_bool($some_array) ``` #### `validate_bool()` The validate_bool function. Returns: `Any` validate boolean ##### Examples ###### **Usage** ```puppet The following values will pass: $iamtrue = true validate_bool(true) validate_bool(true, true, false, $iamtrue) The following values will fail, causing compilation to abort: $some_array = [ true ] validate_bool("false") validate_bool("true") validate_bool($some_array) ``` ### `validate_cmd` Type: Ruby 3.x API The first argument of this function should be a string to test, and the second argument should be a path to a test command taking a % as a placeholder for the file path (will default to the end). If the command, launched against a tempfile containing the passed string, returns a non-null value, compilation will abort with a parse error. If a third argument is specified, this will be the error message raised and seen by the user. A helpful error message can be returned like this: #### Examples ##### **Usage** ```puppet Defaults to end of path validate_cmd($sudoerscontent, '/usr/sbin/visudo -c -f', 'Visudo failed to validate sudoers content') % as file location validate_cmd($haproxycontent, '/usr/sbin/haproxy -f % -c', 'Haproxy failed to validate config content') ``` #### `validate_cmd()` The first argument of this function should be a string to test, and the second argument should be a path to a test command taking a % as a placeholder for the file path (will default to the end). If the command, launched against a tempfile containing the passed string, returns a non-null value, compilation will abort with a parse error. If a third argument is specified, this will be the error message raised and seen by the user. A helpful error message can be returned like this: Returns: `Any` validate of a string with an external command ##### Examples ###### **Usage** ```puppet Defaults to end of path validate_cmd($sudoerscontent, '/usr/sbin/visudo -c -f', 'Visudo failed to validate sudoers content') % as file location validate_cmd($haproxycontent, '/usr/sbin/haproxy -f % -c', 'Haproxy failed to validate config content') ``` ### `validate_domain_name` Type: Ruby 3.x API Validate that all values passed are syntactically correct domain names. Fail compilation if any value fails this check. #### Examples ##### **Usage** ```puppet The following values will pass: $my_domain_name = 'server.domain.tld' validate_domain_name($my_domain_name) validate_domain_name('domain.tld', 'puppet.com', $my_domain_name) The following values will fail, causing compilation to abort: validate_domain_name(1) validate_domain_name(true) validate_domain_name('invalid domain') validate_domain_name('-foo.example.com') validate_domain_name('www.example.2com') ``` #### `validate_domain_name()` The validate_domain_name function. Returns: `Any` passes when the given values are syntactically correct domain names or raise an error when they are not and fails compilation ##### Examples ###### **Usage** ```puppet The following values will pass: $my_domain_name = 'server.domain.tld' validate_domain_name($my_domain_name) validate_domain_name('domain.tld', 'puppet.com', $my_domain_name) The following values will fail, causing compilation to abort: validate_domain_name(1) validate_domain_name(true) validate_domain_name('invalid domain') validate_domain_name('-foo.example.com') validate_domain_name('www.example.2com') ``` ### `validate_email_address` Type: Ruby 3.x API Validate that all values passed are valid email addresses. Fail compilation if any value fails this check. #### Examples ##### **Usage** ```puppet The following values will pass: $my_email = "waldo@gmail.com" validate_email_address($my_email) validate_email_address("bob@gmail.com", "alice@gmail.com", $my_email) The following values will fail, causing compilation to abort: $some_array = [ 'bad_email@/d/efdf.com' ] validate_email_address($some_array) ``` #### `validate_email_address()` The validate_email_address function. Returns: `Any` Fail compilation if any value fails this check. ##### Examples ###### **Usage** ```puppet The following values will pass: $my_email = "waldo@gmail.com" validate_email_address($my_email) validate_email_address("bob@gmail.com", "alice@gmail.com", $my_email) The following values will fail, causing compilation to abort: $some_array = [ 'bad_email@/d/efdf.com' ] validate_email_address($some_array) ``` ### `validate_hash` Type: Ruby 4.x API Validate the passed value represents a hash. #### `validate_hash(Any $scope, Any *$args)` The validate_hash function. Returns: `Any` A boolean value (`true` or `false`) returned from the called function. ##### `scope` Data type: `Any` The main value that will be passed to the method ##### `*args` Data type: `Any` Any additional values that are to be passed to the method ### `validate_hash` Type: Ruby 3.x API Validate that all passed values are hash data structures. Abort catalog compilation if any value fails this check. #### Examples ##### **Usage** ```puppet The following values will pass: $my_hash = { 'one' => 'two' } validate_hash($my_hash) The following values will fail, causing compilation to abort: validate_hash(true) validate_hash('some_string') $undefined = undef validate_hash($undefined) ``` #### `validate_hash()` The validate_hash function. Returns: `Any` validate hash ##### Examples ###### **Usage** ```puppet The following values will pass: $my_hash = { 'one' => 'two' } validate_hash($my_hash) The following values will fail, causing compilation to abort: validate_hash(true) validate_hash('some_string') $undefined = undef validate_hash($undefined) ``` ### `validate_integer` Type: Ruby 4.x API Validate the passed value represents an integer. #### `validate_integer(Any $scope, Any *$args)` The validate_integer function. Returns: `Boolean` `true` or `false` A boolean value returned from the called function. ##### `scope` Data type: `Any` The main value that will be passed to the method ##### `*args` Data type: `Any` Any additional values that are to be passed to the method ### `validate_integer` Type: Ruby 3.x API The second argument is optional and passes a maximum. (All elements of) the first argument has to be less or equal to this max. The third argument is optional and passes a minimum. (All elements of) the first argument has to be greater or equal to this min. If, and only if, a minimum is given, the second argument may be an empty string or undef, which will be handled to just check if (all elements of) the first argument are greater or equal to the given minimum. It will fail if the first argument is not an integer or array of integers, and if arg 2 and arg 3 are not convertable to an integer. #### Examples ##### **Usage** ```puppet The following values will pass: validate_integer(1) validate_integer(1, 2) validate_integer(1, 1) validate_integer(1, 2, 0) validate_integer(2, 2, 2) validate_integer(2, '', 0) validate_integer(2, undef, 0) $foo = undef validate_integer(2, $foo, 0) validate_integer([1,2,3,4,5], 6) validate_integer([1,2,3,4,5], 6, 0) Plus all of the above, but any combination of values passed as strings ('1' or "1"). Plus all of the above, but with (correct) combinations of negative integer values. The following values will not: validate_integer(true) validate_integer(false) validate_integer(7.0) validate_integer({ 1 => 2 }) $foo = undef validate_integer($foo) validate_integer($foobaridontexist) validate_integer(1, 0) validate_integer(1, true) validate_integer(1, '') validate_integer(1, undef) validate_integer(1, , 0) validate_integer(1, 2, 3) validate_integer(1, 3, 2) validate_integer(1, 3, true) Plus all of the above, but any combination of values passed as strings ('false' or "false"). Plus all of the above, but with incorrect combinations of negative integer values. Plus all of the above, but with non-integer items in arrays or maximum / minimum argument. ``` #### `validate_integer()` The second argument is optional and passes a maximum. (All elements of) the first argument has to be less or equal to this max. The third argument is optional and passes a minimum. (All elements of) the first argument has to be greater or equal to this min. If, and only if, a minimum is given, the second argument may be an empty string or undef, which will be handled to just check if (all elements of) the first argument are greater or equal to the given minimum. It will fail if the first argument is not an integer or array of integers, and if arg 2 and arg 3 are not convertable to an integer. Returns: `Any` Validate that the first argument is an integer (or an array of integers). Fail compilation if any of the checks fail. ##### Examples ###### **Usage** ```puppet The following values will pass: validate_integer(1) validate_integer(1, 2) validate_integer(1, 1) validate_integer(1, 2, 0) validate_integer(2, 2, 2) validate_integer(2, '', 0) validate_integer(2, undef, 0) $foo = undef validate_integer(2, $foo, 0) validate_integer([1,2,3,4,5], 6) validate_integer([1,2,3,4,5], 6, 0) Plus all of the above, but any combination of values passed as strings ('1' or "1"). Plus all of the above, but with (correct) combinations of negative integer values. The following values will not: validate_integer(true) validate_integer(false) validate_integer(7.0) validate_integer({ 1 => 2 }) $foo = undef validate_integer($foo) validate_integer($foobaridontexist) validate_integer(1, 0) validate_integer(1, true) validate_integer(1, '') validate_integer(1, undef) validate_integer(1, , 0) validate_integer(1, 2, 3) validate_integer(1, 3, 2) validate_integer(1, 3, true) Plus all of the above, but any combination of values passed as strings ('false' or "false"). Plus all of the above, but with incorrect combinations of negative integer values. Plus all of the above, but with non-integer items in arrays or maximum / minimum argument. ``` ### `validate_ip_address` Type: Ruby 4.x API Validate the passed value represents an ip_address. #### `validate_ip_address(Any $scope, Any *$args)` The validate_ip_address function. Returns: `Boolean` `true` or `false` A boolean value returned from the called function. ##### `scope` Data type: `Any` The main value that will be passed to the method ##### `*args` Data type: `Any` Any additional values that are to be passed to the method ### `validate_ip_address` Type: Ruby 3.x API Validate that all values passed are valid IP addresses, regardless they are IPv4 or IPv6 Fail compilation if any value fails this check. #### Examples ##### **Usage** ```puppet The following values will pass: $my_ip = "1.2.3.4" validate_ip_address($my_ip) validate_ip_address("8.8.8.8", "172.16.0.1", $my_ip) $my_ip = "3ffe:505:2" validate_ip_address(1) validate_ip_address($my_ip) validate_ip_address("fe80::baf6:b1ff:fe19:7507", $my_ip) The following values will fail, causing compilation to abort: $some_array = [ 1, true, false, "garbage string", "3ffe:505:2" ] validate_ip_address($some_array) ``` #### `validate_ip_address()` The validate_ip_address function. Returns: `Any` passes when the given values are valid IP addresses or raise an error when they are not and fails compilation ##### Examples ###### **Usage** ```puppet The following values will pass: $my_ip = "1.2.3.4" validate_ip_address($my_ip) validate_ip_address("8.8.8.8", "172.16.0.1", $my_ip) $my_ip = "3ffe:505:2" validate_ip_address(1) validate_ip_address($my_ip) validate_ip_address("fe80::baf6:b1ff:fe19:7507", $my_ip) The following values will fail, causing compilation to abort: $some_array = [ 1, true, false, "garbage string", "3ffe:505:2" ] validate_ip_address($some_array) ``` ### `validate_ipv4_address` Type: Ruby 4.x API Validate the passed value represents an ipv4_address. #### `validate_ipv4_address(Any $scope, Any *$args)` The validate_ipv4_address function. Returns: `Boolean` `true` or `false` A boolean value returned from the called function. ##### `scope` Data type: `Any` The main value that will be passed to the method ##### `*args` Data type: `Any` Any additional values that are to be passed to the method ### `validate_ipv4_address` Type: Ruby 3.x API Validate that all values passed are valid IPv4 addresses. Fail compilation if any value fails this check. #### Examples ##### **Usage** ```puppet The following values will pass: $my_ip = "1.2.3.4" validate_ipv4_address($my_ip) validate_ipv4_address("8.8.8.8", "172.16.0.1", $my_ip) The following values will fail, causing compilation to abort: $some_array = [ 1, true, false, "garbage string", "3ffe:505:2" ] validate_ipv4_address($some_array) ``` #### `validate_ipv4_address()` The validate_ipv4_address function. Returns: `Any` passes when the given values are valid IPv4 addresses or raise an error when they are not and fails compilation ##### Examples ###### **Usage** ```puppet The following values will pass: $my_ip = "1.2.3.4" validate_ipv4_address($my_ip) validate_ipv4_address("8.8.8.8", "172.16.0.1", $my_ip) The following values will fail, causing compilation to abort: $some_array = [ 1, true, false, "garbage string", "3ffe:505:2" ] validate_ipv4_address($some_array) ``` ### `validate_ipv6_address` Type: Ruby 4.x API Validate the passed value represents an ipv6_address. #### `validate_ipv6_address(Any $scope, Any *$args)` The validate_ipv6_address function. Returns: `Boolean` `true` or `false` A boolean value returned from the called function. ##### `scope` Data type: `Any` The main value that will be passed to the method ##### `*args` Data type: `Any` Any additional values that are to be passed to the method ### `validate_ipv6_address` Type: Ruby 3.x API Validate that all values passed are valid IPv6 addresses. Fail compilation if any value fails this check. #### Examples ##### **Usage** ```puppet The following values will pass: $my_ip = "3ffe:505:2" validate_ipv6_address(1) validate_ipv6_address($my_ip) validate_bool("fe80::baf6:b1ff:fe19:7507", $my_ip) The following values will fail, causing compilation to abort: $some_array = [ true, false, "garbage string", "1.2.3.4" ] validate_ipv6_address($some_array) ``` #### `validate_ipv6_address()` The validate_ipv6_address function. Returns: `Any` passes when the given values are valid IPv6 addresses or raise an error when they are not and fails compilation ##### Examples ###### **Usage** ```puppet The following values will pass: $my_ip = "3ffe:505:2" validate_ipv6_address(1) validate_ipv6_address($my_ip) validate_bool("fe80::baf6:b1ff:fe19:7507", $my_ip) The following values will fail, causing compilation to abort: $some_array = [ true, false, "garbage string", "1.2.3.4" ] validate_ipv6_address($some_array) ``` ### `validate_legacy` Type: Ruby 4.x API Validate a value against both the target_type (new) and the previous_validation function (old). #### `validate_legacy(Any $scope, Type $target_type, String $function_name, Any $value, Any *$args)` The function checks a value against both the target_type (new) and the previous_validation function (old). Returns: `Any` A boolean value (`true` or `false`) returned from the called function. ##### `scope` Data type: `Any` The main value that will be passed to the method ##### `target_type` Data type: `Type` ##### `function_name` Data type: `String` ##### `value` Data type: `Any` ##### `*args` Data type: `Any` Any additional values that are to be passed to the method #### `validate_legacy(Any $scope, String $type_string, String $function_name, Any $value, Any *$args)` The validate_legacy function. Returns: `Any` Legacy validation method ##### `scope` Data type: `Any` The main value that will be passed to the method ##### `type_string` Data type: `String` ##### `function_name` Data type: `String` ##### `value` Data type: `Any` ##### `*args` Data type: `Any` Any additional values that are to be passed to the method ### `validate_numeric` Type: Ruby 4.x API Validate the passed value represents a numeric value. #### `validate_numeric(Any $scope, Any *$args)` The validate_numeric function. Returns: `Boolean` `true` or `false` A boolean value returned from the called function. ##### `scope` Data type: `Any` The main value that will be passed to the method ##### `*args` Data type: `Any` Any additional values that are to be passed to the method ### `validate_numeric` Type: Ruby 3.x API The second argument is optional and passes a maximum. (All elements of) the first argument has to be less or equal to this max. The third argument is optional and passes a minimum. (All elements of) the first argument has to be greater or equal to this min. If, and only if, a minimum is given, the second argument may be an empty string or undef, which will be handled to just check if (all elements of) the first argument are greater or equal to the given minimum. It will fail if the first argument is not a numeric (Integer or Float) or array of numerics, and if arg 2 and arg 3 are not convertable to a numeric. For passing and failing usage, see `validate_integer()`. It is all the same for validate_numeric, yet now floating point values are allowed, too. #### `validate_numeric()` The second argument is optional and passes a maximum. (All elements of) the first argument has to be less or equal to this max. The third argument is optional and passes a minimum. (All elements of) the first argument has to be greater or equal to this min. If, and only if, a minimum is given, the second argument may be an empty string or undef, which will be handled to just check if (all elements of) the first argument are greater or equal to the given minimum. It will fail if the first argument is not a numeric (Integer or Float) or array of numerics, and if arg 2 and arg 3 are not convertable to a numeric. For passing and failing usage, see `validate_integer()`. It is all the same for validate_numeric, yet now floating point values are allowed, too. Returns: `Any` Validate that the first argument is a numeric value (or an array of numeric values). Fail compilation if any of the checks fail. ### `validate_re` Type: Ruby 4.x API Perform validation of a string against one or more regular expressions. #### `validate_re(Any $scope, Any *$args)` The validate_re function. Returns: `Boolean` `true` or `false` returned from the called function. ##### `scope` Data type: `Any` The main value that will be passed to the method ##### `*args` Data type: `Any` Any additional values that are to be passed to the method The first argument of this function should be a string to test, and the second argument should be a stringified regular expression (without the // delimiters) or an array of regular expressions ### `validate_re` Type: Ruby 3.x API The first argument of this function should be a string to test, and the second argument should be a stringified regular expression (without the // delimiters) or an array of regular expressions. If none of the regular expressions match the string passed in, compilation will abort with a parse error. If a third argument is specified, this will be the error message raised and seen by the user. > *Note:* Compilation will also abort, if the first argument is not a String. Always use quotes to force stringification: validate_re("${::operatingsystemmajrelease}", '^[57]$') #### Examples ##### **Usage** ```puppet The following strings will validate against the regular expressions: validate_re('one', '^one$') validate_re('one', [ '^one', '^two' ]) The following strings will fail to validate, causing compilation to abort: validate_re('one', [ '^two', '^three' ]) A helpful error message can be returned like this: validate_re($::puppetversion, '^2.7', 'The $puppetversion fact value does not match 2.7') ``` #### `validate_re()` The first argument of this function should be a string to test, and the second argument should be a stringified regular expression (without the // delimiters) or an array of regular expressions. If none of the regular expressions match the string passed in, compilation will abort with a parse error. If a third argument is specified, this will be the error message raised and seen by the user. > *Note:* Compilation will also abort, if the first argument is not a String. Always use quotes to force stringification: validate_re("${::operatingsystemmajrelease}", '^[57]$') Returns: `Any` validation of a string against one or more regular expressions. ##### Examples ###### **Usage** ```puppet The following strings will validate against the regular expressions: validate_re('one', '^one$') validate_re('one', [ '^one', '^two' ]) The following strings will fail to validate, causing compilation to abort: validate_re('one', [ '^two', '^three' ]) A helpful error message can be returned like this: validate_re($::puppetversion, '^2.7', 'The $puppetversion fact value does not match 2.7') ``` ### `validate_slength` Type: Ruby 4.x API Validate that a passed string has length less/equal with the passed value #### `validate_slength(Any $scope, Any *$args)` Validate that a passed string has length less/equal with the passed value Returns: `Boolean` `true` or `false` A boolean value returned from the called function. ##### `scope` Data type: `Any` The main value that will be passed to the method ##### `*args` Data type: `Any` Any additional values that are to be passed to the method ### `validate_slength` Type: Ruby 3.x API Validate that the first argument is a string (or an array of strings), and less/equal to than the length of the second argument. An optional third parameter can be given the minimum length. It fails if the first argument is not a string or array of strings, and if arg 2 and arg 3 are not convertable to a number. #### Examples ##### **Usage** ```puppet The following values will pass: validate_slength("discombobulate",17) validate_slength(["discombobulate","moo"],17) validate_slength(["discombobulate","moo"],17,3) The following valueis will not: validate_slength("discombobulate",1) validate_slength(["discombobulate","thermometer"],5) validate_slength(["discombobulate","moo"],17,10) ``` #### `validate_slength()` The validate_slength function. Returns: `Any` validate that the first argument is a string (or an array of strings), and less/equal to than the length of the second argument. Fail compilation if any of the checks fail. ##### Examples ###### **Usage** ```puppet The following values will pass: validate_slength("discombobulate",17) validate_slength(["discombobulate","moo"],17) validate_slength(["discombobulate","moo"],17,3) The following valueis will not: validate_slength("discombobulate",1) validate_slength(["discombobulate","thermometer"],5) validate_slength(["discombobulate","moo"],17,10) ``` ### `validate_string` Type: Ruby 4.x API Validate that all passed values are string data structures. #### `validate_string(Any $scope, Any *$args)` The validate_string function. Returns: `Boolean` `true` or `false` A boolean value returned from the called function. ##### `scope` Data type: `Any` The main value that will be passed to the method ##### `*args` Data type: `Any` Any additional values that are to be passed to the method ### `validate_string` Type: Ruby 3.x API > *Note:* Validate_string(undef) will not fail in this version of the functions API (incl. current and future parser). Instead, use: ``` if $var == undef { fail('...') } ``` #### Examples ##### **Usage** ```puppet The following values will pass: $my_string = "one two" validate_string($my_string, 'three') The following values will fail, causing compilation to abort: validate_string(true) validate_string([ 'some', 'array' ]) ``` #### `validate_string()` > *Note:* Validate_string(undef) will not fail in this version of the functions API (incl. current and future parser). Instead, use: ``` if $var == undef { fail('...') } ``` Returns: `Any` Validate that all passed values are string data structures. Failed compilation if any value fails this check. ##### Examples ###### **Usage** ```puppet The following values will pass: $my_string = "one two" validate_string($my_string, 'three') The following values will fail, causing compilation to abort: validate_string(true) validate_string([ 'some', 'array' ]) ``` ### `validate_x509_rsa_key_pair` Type: Ruby 3.x API ```validate_x509_rsa_key_pair($cert, $key)``` #### `validate_x509_rsa_key_pair()` ```validate_x509_rsa_key_pair($cert, $key)``` Returns: `Any` Fail compilation if any value fails this check. ### `values` Type: Ruby 3.x API > *Note:* From Puppet 5.5.0, the compatible function with the same name in Puppet core will be used instead of this function. #### Examples ##### **Usage** ```puppet $hash = { 'a' => 1, 'b' => 2, 'c' => 3, } values($hash) This example would return: ```[1,2,3]``` ``` #### `values()` > *Note:* From Puppet 5.5.0, the compatible function with the same name in Puppet core will be used instead of this function. Returns: `Any` array of values ##### Examples ###### **Usage** ```puppet $hash = { 'a' => 1, 'b' => 2, 'c' => 3, } values($hash) This example would return: ```[1,2,3]``` ``` ### `values_at` Type: Ruby 3.x API The first argument is the array you want to analyze, and the second element can be a combination of: * A single numeric index * A range in the form of 'start-stop' (eg. 4-9) * An array combining the above > *Note:* Since Puppet 4.0.0 it is possible to slice an array with index and count directly in the language. A negative value is taken to be "from the end" of the array: `['a', 'b', 'c', 'd'][1, 2]` results in `['b', 'c']` `['a', 'b', 'c', 'd'][2, -1]` results in `['c', 'd']` `['a', 'b', 'c', 'd'][1, -2]` results in `['b', 'c']` #### Examples ##### **Usage** ```puppet values_at(['a','b','c'], 2) Would return ['c'] values_at(['a','b','c'], ["0-1"]) Would return ['a','b'] values_at(['a','b','c','d','e'], [0, "2-3"]) Would return ['a','c','d'] ``` #### `values_at()` The first argument is the array you want to analyze, and the second element can be a combination of: * A single numeric index * A range in the form of 'start-stop' (eg. 4-9) * An array combining the above > *Note:* Since Puppet 4.0.0 it is possible to slice an array with index and count directly in the language. A negative value is taken to be "from the end" of the array: `['a', 'b', 'c', 'd'][1, 2]` results in `['b', 'c']` `['a', 'b', 'c', 'd'][2, -1]` results in `['c', 'd']` `['a', 'b', 'c', 'd'][1, -2]` results in `['b', 'c']` Returns: `Any` an array of values identified by location ##### Examples ###### **Usage** ```puppet values_at(['a','b','c'], 2) Would return ['c'] values_at(['a','b','c'], ["0-1"]) Would return ['a','b'] values_at(['a','b','c','d','e'], [0, "2-3"]) Would return ['a','c','d'] ``` ### `zip` Type: Ruby 3.x API Takes one element from first array and merges corresponding elements from second array. #### Examples ##### ```puppet zip(['1','2','3'],['4','5','6']) Would result in: ["1", "4"], ["2", "5"], ["3", "6"] ``` #### `zip()` The zip function. Returns: `Any` This generates a sequence of n-element arrays, where n is one more than the count of arguments. ##### Examples ###### ```puppet zip(['1','2','3'],['4','5','6']) Would result in: ["1", "4"], ["2", "5"], ["3", "6"] ``` ## Data types ### `Stdlib::Absolutepath` A strict absolutepath type Alias of ```puppet Variant[Stdlib::Windowspath, Stdlib::Unixpath] ``` ### `Stdlib::Base32` Type to match base32 String Alias of ```puppet Pattern[/\A[a-z2-7]+={,6}\z/, /\A[A-Z2-7]+={,6}\z/] ``` ### `Stdlib::Base64` Type to match base64 String Alias of ```puppet Pattern[/\A[a-zA-Z0-9\/\+]+={,2}\z/] ``` ### `Stdlib::Compat::Absolute_path` Emulate the is_absolute_path and validate_absolute_path functions The first pattern is originally from is_absolute_path, which had it from 2.7.x's lib/puppet/util.rb Puppet::Util.absolute_path? slash = '[\\\\/]' name = '[^\\\\/]+' %r!^(([A-Z]:#{slash})|(#{slash}#{slash}#{name}#{slash}#{name})|(#{slash}#{slash}\?#{slash}#{name}))!i, Alias of ```puppet Variant[Pattern[/^(([a-zA-Z]:[\\\/])|([\\\/][\\\/][^\\\/]+[\\\/][^\\\/]+)|([\\\/][\\\/]\?[\\\/][^\\\/]+))/], Pattern[/^\//]] ``` ### `Stdlib::Compat::Array` Emulate the is_array and validate_array functions Alias of ```puppet Array[Any] ``` ### `Stdlib::Compat::Bool` Emulate the is_bool and validate_bool functions Alias of ```puppet Boolean ``` ### `Stdlib::Compat::Float` Emulate the is_float function The regex is what's currently used in is_float To keep your development moving forward, you can also add a deprecation warning using the Integer type: ```class example($value) { validate_float($value,) }``` would turn into ``` class example(Stdlib::Compat::Float $value) { validate_float($value, 10, 0) assert_type(Integer[0, 10], $value) |$expected, $actual| { warning("The 'value' parameter for the 'ntp' class has type ${actual}, but should be ${expected}.") } } ``` This allows you to find all places where a consumers of your code call it with unexpected values. Alias of ```puppet Variant[Float, Pattern[/^-?(?:(?:[1-9]\d*)|0)(?:\.\d+)(?:[eE]-?\d+)?$/]] ``` ### `Stdlib::Compat::Hash` Emulate the is_hash and validate_hash functions Alias of ```puppet Hash[Any, Any] ``` ### `Stdlib::Compat::Integer` Emulate the is_integer and validate_integer functions The regex is what's currently used in is_integer validate_numeric also allows range checking, which cannot be mapped to the string parsing inside the function. For full backwards compatibility, you will need to keep the validate_numeric call around to catch everything. To keep your development moving forward, you can also add a deprecation warning using the Integer type: ```class example($value) { validate_integer($value, 10, 0) }``` would turn into ``` class example(Stdlib::Compat::Integer $value) { validate_numeric($value, 10, 0) assert_type(Integer[0, 10], $value) |$expected, $actual| { warning("The 'value' parameter for the 'ntp' class has type ${actual}, but should be ${expected}.") } } ``` > Note that you need to use Variant[Integer[0, 10], Float[0, 10]] if you want to match both integers and floating point numbers. This allows you to find all places where a consumers of your code call it with unexpected values. Alias of ```puppet Variant[Integer, Pattern[/^-?(?:(?:[1-9]\d*)|0)$/], Array[Variant[Integer, Pattern[/^-?(?:(?:[1-9]\d*)|0)$/]]]] ``` ### `Stdlib::Compat::Ip_address` The Stdlib::Compat::Ip_address data type. Alias of ```puppet Variant[Stdlib::Compat::Ipv4, Stdlib::Compat::Ipv6] ``` ### `Stdlib::Compat::Ipv4` Emulate the validate_ipv4_address and is_ipv4_address functions Alias of ```puppet Pattern[/^((([0-9](?!\d)|[1-9][0-9](?!\d)|1[0-9]{2}(?!\d)|2[0-4][0-9](?!\d)|25[0-5](?!\d))[.]){3}([0-9](?!\d)|[1-9][0-9](?!\d)|1[0-9]{2}(?!\d)|2[0-4][0-9](?!\d)|25[0-5](?!\d)))(\/((([0-9](?!\d)|[1-9][0-9](?!\d)|1[0-9]{2}(?!\d)|2[0-4][0-9](?!\d)|25[0-5](?!\d))[.]){3}([0-9](?!\d)|[1-9][0-9](?!\d)|1[0-9]{2}(?!\d)|2[0-4][0-9](?!\d)|25[0-5](?!\d))|[0-9]+))?$/] ``` ### `Stdlib::Compat::Ipv6` The Stdlib::Compat::Ipv6 data type. Alias of ```puppet Pattern[/\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/] ``` ### `Stdlib::Compat::Numeric` Emulate the is_numeric and validate_numeric functions The regex is what's currently used in is_numeric validate_numeric also allows range checking, which cannot be mapped to the string parsing inside the function. For full backwards compatibility, you will need to keep the validate_numeric call around to catch everything. To keep your development moving forward, you can also add a deprecation warning using the Integer type: ```class example($value) { validate_numeric($value, 10, 0) }``` would turn into ``` class example(Stdlib::Compat::Numeric $value) { validate_numeric($value, 10, 0) assert_type(Integer[0, 10], $value) |$expected, $actual| { warning("The 'value' parameter for the 'ntp' class has type ${actual}, but should be ${expected}.") } } ``` > Note that you need to use Variant[Integer[0, 10], Float[0, 10]] if you want to match both integers and floating point numbers. This allows you to find all places where a consumers of your code call it with unexpected values. Alias of ```puppet Variant[Numeric, Pattern[/^-?(?:(?:[1-9]\d*)|0)(?:\.\d+)?(?:[eE]-?\d+)?$/], Array[Variant[Numeric, Pattern[/^-?(?:(?:[1-9]\d*)|0)(?:\.\d+)?(?:[eE]-?\d+)?$/]]]] ``` ### `Stdlib::Compat::String` Emulate the is_string and validate_string functions Alias of ```puppet Optional[String] ``` ### `Stdlib::Datasize` The Stdlib::Datasize data type. Alias of ```puppet Pattern[/^\d+(?i:[kmgt]b?|b)$/] ``` ### `Stdlib::Email` https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address +lint:ignore:140chars Alias of ```puppet Pattern[/\A[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*\z/] ``` ### `Stdlib::Ensure::File` The Stdlib::Ensure::File data type. Alias of ```puppet Enum['present', 'file', 'directory', 'link', 'absent'] ``` ### `Stdlib::Ensure::File::Directory` The Stdlib::Ensure::File::Directory data type. Alias of ```puppet Enum['directory', 'absent'] ``` ### `Stdlib::Ensure::File::File` The Stdlib::Ensure::File::File data type. Alias of ```puppet Enum['file', 'absent'] ``` ### `Stdlib::Ensure::File::Link` The Stdlib::Ensure::File::Link data type. Alias of ```puppet Enum['link', 'absent'] ``` ### `Stdlib::Ensure::Service` The Stdlib::Ensure::Service data type. Alias of ```puppet Enum['stopped', 'running'] ``` ### `Stdlib::Filemode` See `man chmod.1` for the regular expression for symbolic mode lint:ignore:140chars Alias of ```puppet Pattern[/\A(([0-7]{1,4})|(([ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+)(,([ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+))*))\z/] ``` ### `Stdlib::Filesource` Validate the source parameter on file types Alias of ```puppet Variant[Stdlib::Absolutepath, Stdlib::HTTPUrl, Pattern[ /\Afile:\/\/\/([^\n\/\0]+(\/)?)+\z/, /\Apuppet:\/\/(([\w-]+\.?)+)?\/([^\n\/\0]+(\/)?)+\z/, ]] ``` ### `Stdlib::Fqdn` The Stdlib::Fqdn data type. Alias of ```puppet Pattern[/\A(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])\z/] ``` ### `Stdlib::HTTPSUrl` The Stdlib::HTTPSUrl data type. Alias of ```puppet Pattern[/(?i:\Ahttps:\/\/.*\z)/] ``` ### `Stdlib::HTTPUrl` The Stdlib::HTTPUrl data type. Alias of ```puppet Pattern[/(?i:\Ahttps?:\/\/.*\z)/] ``` ### `Stdlib::Host` The Stdlib::Host data type. Alias of ```puppet Variant[Stdlib::Fqdn, Stdlib::Compat::Ip_address] ``` ### `Stdlib::HttpStatus` The Stdlib::HttpStatus data type. Alias of ```puppet Integer[100, 599] ``` ### `Stdlib::IP::Address` The Stdlib::IP::Address data type. Alias of ```puppet Variant[Stdlib::IP::Address::V4, Stdlib::IP::Address::V6] ``` ### `Stdlib::IP::Address::Nosubnet` The Stdlib::IP::Address::Nosubnet data type. Alias of ```puppet Variant[Stdlib::IP::Address::V4::Nosubnet, Stdlib::IP::Address::V6::Nosubnet] ``` ### `Stdlib::IP::Address::V4` The Stdlib::IP::Address::V4 data type. Alias of ```puppet Variant[Stdlib::IP::Address::V4::CIDR, Stdlib::IP::Address::V4::Nosubnet] ``` ### `Stdlib::IP::Address::V4::CIDR` lint:ignore:140chars Alias of ```puppet Pattern[/\A([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}\/([0-9]|[12][0-9]|3[0-2])\z/] ``` ### `Stdlib::IP::Address::V4::Nosubnet` lint:ignore:140chars Alias of ```puppet Pattern[/\A([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}\z/] ``` ### `Stdlib::IP::Address::V6` The Stdlib::IP::Address::V6 data type. Alias of ```puppet Variant[Stdlib::IP::Address::V6::Full, Stdlib::IP::Address::V6::Compressed, Stdlib::IP::Address::V6::Alternative, Stdlib::IP::Address::V6::Nosubnet] ``` ### `Stdlib::IP::Address::V6::Alternative` lint:ignore:140chars Alias of ```puppet Pattern[/\A([[:xdigit:]]{1,4}:){6}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?\z/, /\A([[:xdigit:]]{1,4}:){5}:([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?\z/, /\A([[:xdigit:]]{1,4}:){4}(:[[:xdigit:]]{1,4}){0,1}:([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?\z/, /\A([[:xdigit:]]{1,4}:){3}(:[[:xdigit:]]{1,4}){0,2}:([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?\z/, /\A([[:xdigit:]]{1,4}:){2}(:[[:xdigit:]]{1,4}){0,3}:([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?\z/, /\A([[:xdigit:]]{1,4}:){1}(:[[:xdigit:]]{1,4}){0,4}:([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?\z/, /\A:(:[[:xdigit:]]{1,4}){0,5}:([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?\z/] ``` ### `Stdlib::IP::Address::V6::CIDR` lint:ignore:140chars Alias of ```puppet Pattern[/\A((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*\/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8])?\z/] ``` ### `Stdlib::IP::Address::V6::Compressed` The Stdlib::IP::Address::V6::Compressed data type. Alias of ```puppet Pattern[/\A:(:|(:[[:xdigit:]]{1,4}){1,7})(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?\z/, /\A([[:xdigit:]]{1,4}:){1}(:|(:[[:xdigit:]]{1,4}){1,6})(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?\z/, /\A([[:xdigit:]]{1,4}:){2}(:|(:[[:xdigit:]]{1,4}){1,5})(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?\z/, /\A([[:xdigit:]]{1,4}:){3}(:|(:[[:xdigit:]]{1,4}){1,4})(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?\z/, /\A([[:xdigit:]]{1,4}:){4}(:|(:[[:xdigit:]]{1,4}){1,3})(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?\z/, /\A([[:xdigit:]]{1,4}:){5}(:|(:[[:xdigit:]]{1,4}){1,2})(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?\z/, /\A([[:xdigit:]]{1,4}:){6}(:|(:[[:xdigit:]]{1,4}){1,1})(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?\z/, /\A([[:xdigit:]]{1,4}:){7}:(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?\z/] ``` ### `Stdlib::IP::Address::V6::Full` The Stdlib::IP::Address::V6::Full data type. Alias of ```puppet Pattern[/\A[[:xdigit:]]{1,4}(:[[:xdigit:]]{1,4}){7}(\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9]))?\z/] ``` ### `Stdlib::IP::Address::V6::Nosubnet` The Stdlib::IP::Address::V6::Nosubnet data type. Alias of ```puppet Variant[Stdlib::IP::Address::V6::Nosubnet::Full, Stdlib::IP::Address::V6::Nosubnet::Compressed, Stdlib::IP::Address::V6::Nosubnet::Alternative] ``` ### `Stdlib::IP::Address::V6::Nosubnet::Alternative` lint:ignore:140chars Alias of ```puppet Pattern[/\A([[:xdigit:]]{1,4}:){6}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}\z/, /\A([[:xdigit:]]{1,4}:){5}:([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}\z/, /\A([[:xdigit:]]{1,4}:){4}(:[[:xdigit:]]{1,4}){0,1}:([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}\z/, /\A([[:xdigit:]]{1,4}:){3}(:[[:xdigit:]]{1,4}){0,2}:([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}\z/, /\A([[:xdigit:]]{1,4}:){2}(:[[:xdigit:]]{1,4}){0,3}:([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}\z/, /\A([[:xdigit:]]{1,4}:){1}(:[[:xdigit:]]{1,4}){0,4}:([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}\z/, /\A:(:[[:xdigit:]]{1,4}){0,5}:([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}\z/] ``` ### `Stdlib::IP::Address::V6::Nosubnet::Compressed` The Stdlib::IP::Address::V6::Nosubnet::Compressed data type. Alias of ```puppet Pattern[/\A:(:|(:[[:xdigit:]]{1,4}){1,7})\z/, /\A([[:xdigit:]]{1,4}:){1}(:|(:[[:xdigit:]]{1,4}){1,6})\z/, /\A([[:xdigit:]]{1,4}:){2}(:|(:[[:xdigit:]]{1,4}){1,5})\z/, /\A([[:xdigit:]]{1,4}:){3}(:|(:[[:xdigit:]]{1,4}){1,4})\z/, /\A([[:xdigit:]]{1,4}:){4}(:|(:[[:xdigit:]]{1,4}){1,3})\z/, /\A([[:xdigit:]]{1,4}:){5}(:|(:[[:xdigit:]]{1,4}){1,2})\z/, /\A([[:xdigit:]]{1,4}:){6}(:|(:[[:xdigit:]]{1,4}){1,1})\z/, /\A([[:xdigit:]]{1,4}:){7}:\z/] ``` ### `Stdlib::IP::Address::V6::Nosubnet::Full` The Stdlib::IP::Address::V6::Nosubnet::Full data type. Alias of ```puppet Pattern[/\A[[:xdigit:]]{1,4}(:[[:xdigit:]]{1,4}){7}\z/] ``` ### `Stdlib::MAC` A type for a MAC address Alias of ```puppet Pattern[/\A([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})\z/, /\A([0-9A-Fa-f]{2}[:-]){19}([0-9A-Fa-f]{2})\z/] ``` ### `Stdlib::ObjectStore` The Stdlib::ObjectStore data type. Alias of ```puppet Variant[Stdlib::ObjectStore::GSUri, Stdlib::ObjectStore::S3Uri] ``` ### `Stdlib::ObjectStore::GSUri` The Stdlib::ObjectStore::GSUri data type. Alias of ```puppet Pattern[/\Ags:\/\/.*\z/] ``` ### `Stdlib::ObjectStore::S3Uri` The Stdlib::ObjectStore::S3Uri data type. Alias of ```puppet Pattern[/\As3:\/\/.*\z/] ``` ### `Stdlib::Port` The Stdlib::Port data type. Alias of ```puppet Integer[0, 65535] ``` ### `Stdlib::Port::Dynamic` The Stdlib::Port::Dynamic data type. Alias of ```puppet Integer[49152, 65535] ``` ### `Stdlib::Port::Ephemeral` The Stdlib::Port::Ephemeral data type. Alias of ```puppet Stdlib::Port::Dynamic ``` ### `Stdlib::Port::Privileged` The Stdlib::Port::Privileged data type. Alias of ```puppet Integer[1, 1023] ``` ### `Stdlib::Port::Registered` The Stdlib::Port::Registered data type. Alias of ```puppet Stdlib::Port::User ``` ### `Stdlib::Port::Unprivileged` The Stdlib::Port::Unprivileged data type. Alias of ```puppet Integer[1024, 65535] ``` ### `Stdlib::Port::User` The Stdlib::Port::User data type. Alias of ```puppet Integer[1024, 49151] ``` ### `Stdlib::Syslogfacility` The Stdlib::Syslogfacility data type. Alias of ```puppet Enum['kern', 'user', 'mail', 'daemon', 'auth', 'syslog', 'lpr', 'news', 'uucp', 'cron', 'authpriv', 'ftp', 'ntp', 'security', 'console', 'solaris-cron', 'local0', 'local1', 'local2', 'local3', 'local4', 'local5', 'local6', 'local7'] ``` ### `Stdlib::Unixpath` this regex rejects any path component that does not start with "/" or is NUL Alias of ```puppet Pattern[/\A\/([^\n\/\0]+\/*)*\z/] ``` ### `Stdlib::Windowspath` The Stdlib::Windowspath data type. Alias of ```puppet Pattern[/\A(([a-zA-Z]:[\\\/])|([\\\/][\\\/][^\\\/]+[\\\/][^\\\/]+)|([\\\/][\\\/]\?[\\\/][^\\\/]+)).*\z/] ``` ### `Stdlib::Yes_no` The Stdlib::Yes_no data type. Alias of ```puppet Pattern[/\A(?i:(yes|no))\z/] ``` diff --git a/metadata.json b/metadata.json index d2994c9..bb48353 100644 --- a/metadata.json +++ b/metadata.json @@ -1,114 +1,114 @@ { "name": "puppetlabs-stdlib", - "version": "8.0.0", + "version": "8.1.0", "author": "puppetlabs", "summary": "Standard library of resources for Puppet modules.", "license": "Apache-2.0", "source": "https://github.com/puppetlabs/puppetlabs-stdlib", "project_page": "https://github.com/puppetlabs/puppetlabs-stdlib", "issues_url": "https://tickets.puppetlabs.com/browse/MODULES", "dependencies": [ ], "operatingsystem_support": [ { "operatingsystem": "RedHat", "operatingsystemrelease": [ "6", "7", "8" ] }, { "operatingsystem": "CentOS", "operatingsystemrelease": [ "6", "7", "8" ] }, { "operatingsystem": "OracleLinux", "operatingsystemrelease": [ "6", "7" ] }, { "operatingsystem": "Scientific", "operatingsystemrelease": [ "6", "7" ] }, { "operatingsystem": "SLES", "operatingsystemrelease": [ "12", "15" ] }, { "operatingsystem": "Debian", "operatingsystemrelease": [ "9", "10", "11" ] }, { "operatingsystem": "Ubuntu", "operatingsystemrelease": [ "14.04", "16.04", "18.04", "20.04" ] }, { "operatingsystem": "Solaris", "operatingsystemrelease": [ "10", "11" ] }, { "operatingsystem": "Windows", "operatingsystemrelease": [ "2008", "2008 R2", "2012", "2012 R2", "2016", "2019", "7", "8.1", "10" ] }, { "operatingsystem": "AIX", "operatingsystemrelease": [ "5.3", "6.1", "7.1" ] }, { "operatingsystem": "Rocky", "operatingsystemrelease": [ "8" ] } ], "requirements": [ { "name": "puppet", "version_requirement": ">= 6.0.0 < 8.0.0" } ], "description": "Standard Library for Puppet Modules", "pdk-version": "2.2.0", "template-url": "https://github.com/puppetlabs/pdk-templates#main", "template-ref": "heads/main-0-g51828b4" } diff --git a/pdk.yaml b/pdk.yaml new file mode 100644 index 0000000..4bef4bd --- /dev/null +++ b/pdk.yaml @@ -0,0 +1,2 @@ +--- +ignore: []