@@ -77,6 +77,43 @@ Returns the absolute value of a number, for example -34.56 becomes
77
77
78
78
- * Type* : rvalue
79
79
80
+ anchor
81
+ ------
82
+ A simple resource type intended to be used as an anchor in a composite class.
83
+
84
+ In Puppet 2.6, when a class declares another class, the resources in the
85
+ interior class are not contained by the exterior class. This interacts badly
86
+ with the pattern of composing complex modules from smaller classes, as it
87
+ makes it impossible for end users to specify order relationships between the
88
+ exterior class and other modules.
89
+
90
+ The anchor type lets you work around this. By sandwiching any interior
91
+ classes between two no-op resources that _ are_ contained by the exterior
92
+ class, you can ensure that all resources in the module are contained.
93
+
94
+ class ntp {
95
+ # These classes will have the correct order relationship with each
96
+ # other. However, without anchors, they won't have any order
97
+ # relationship to Class['ntp'].
98
+ class { 'ntp::package': }
99
+ -> class { 'ntp::config': }
100
+ -> class { 'ntp::service': }
101
+
102
+ # These two resources "anchor" the composed classes within the ntp
103
+ # class.
104
+ anchor { 'ntp::begin': } -> Class['ntp::package']
105
+ Class['ntp::service'] -> anchor { 'ntp::end': }
106
+ }
107
+
108
+ This allows the end user of the ntp module to establish require and before
109
+ relationships with Class[ 'ntp'] :
110
+
111
+ class { 'ntp': } -> class { 'mcollective': }
112
+ class { 'mcollective': } -> class { 'ntp': }
113
+
114
+
115
+ - * Type* : resource
116
+
80
117
any2array
81
118
---------
82
119
This converts any object to an array containing that object. Empty argument
@@ -103,6 +140,19 @@ true, t, 1, y, and yes to 1
103
140
Requires a single boolean or string as an input.
104
141
105
142
143
+ - * Type* : rvalue
144
+
145
+ bool2str
146
+ --------
147
+ Converts a boolean to a string.
148
+ Requires a single boolean as an input.
149
+
150
+ - * Type* : rvalue
151
+
152
+ camelcase
153
+ ---------
154
+ Converts the case of a string or all strings in an array to camel case.
155
+
106
156
- * Type* : rvalue
107
157
108
158
capitalize
@@ -160,6 +210,23 @@ Count the number of elements in array that matches second argument.
160
210
If called with only an array it counts the number of elements that are not nil/undef.
161
211
162
212
213
+ - * Type* : rvalue
214
+
215
+ deep_merge
216
+ ----------
217
+ Recursively merges two or more hashes together and returns the resulting hash.
218
+
219
+ * Example:*
220
+
221
+ $hash1 = {'one' => 1, 'two' => 2, 'three' => { 'four' => 4 } }
222
+ $hash2 = {'two' => 'dos', 'three' => { 'five' => 5 } }
223
+ $merged_hash = deep_merge($hash1, $hash2)
224
+ # The resulting hash is equivalent to:
225
+ # $merged_hash = { 'one' => 1, 'two' => 'dos', 'three' => { 'four' => 4, 'five' => 5 } }
226
+
227
+ When there is a duplicate key that is a hash, they are recursively merged.
228
+ When there is a duplicate key that is not a hash, the key in the rightmost hash will "win."
229
+
163
230
- * Type* : rvalue
164
231
165
232
defined_with_params
@@ -314,22 +381,54 @@ the type and parameters specified if it doesn't already exist.
314
381
315
382
file_line
316
383
---------
317
- This resource ensures that a given line is contained within a file. You can also use
318
- "match" to replace existing lines.
384
+ Ensures that a given line is contained within a file. The implementation
385
+ matches the full line, including whitespace at the beginning and end. If
386
+ the line is not contained in the given file, Puppet will add the line to
387
+ ensure the desired state. Multiple resources may be declared to manage
388
+ multiple lines in the same file.
319
389
320
390
* Examples:*
321
391
322
392
file_line { 'sudo_rule':
323
393
path => '/etc/sudoers',
324
394
line => '%sudo ALL=(ALL) ALL',
325
395
}
326
-
327
- file_line { 'change_mount':
328
- path => '/etc/fstab',
329
- line => '10.0.0.1:/vol/data /opt/data nfs defaults 0 0',
330
- match => '^172.16.17.2:/vol/old',
396
+ file_line { 'sudo_rule_nopw':
397
+ path => '/etc/sudoers',
398
+ line => '%sudonopw ALL=(ALL) NOPASSWD: ALL',
331
399
}
332
400
401
+ In this example, Puppet will ensure both of the specified lines are
402
+ contained in the file /etc/sudoers.
403
+
404
+ * Parameters within ` file_line ` :*
405
+
406
+ ** ` after ` **
407
+
408
+ An optional value used to specify the line after which we will add any new
409
+ lines. (Existing lines are added in place)
410
+
411
+ ** ` line ` **
412
+
413
+ The line to be appended to the file located by the path parameter.
414
+
415
+ ** ` match ` **
416
+
417
+ An optional regular expression to run against existing lines in the file;
418
+ if a match is found, we replace that line rather than adding a new line.
419
+
420
+ ** ` multiple ` **
421
+
422
+ An optional value to determine if match can change multiple lines.
423
+
424
+ ** ` name ` **
425
+
426
+ An arbitrary name used as the identity of the resource.
427
+
428
+ ** ` path ` **
429
+
430
+ The file Puppet will ensure contains the line specified by the line parameter.
431
+
333
432
- * Type* : resource
334
433
335
434
flatten
@@ -713,6 +812,30 @@ failing that, will use a default value of 1.449.
713
812
714
813
- * Type* : rvalue
715
814
815
+ pick_default
816
+ ------------
817
+ This function is similar to a coalesce function in SQL in that it will return
818
+ the first value in a list of values that is not undefined or an empty string
819
+ (two things in Puppet that will return a boolean false value). If no value is
820
+ found, it will return the last argument.
821
+
822
+ Typically, this function is used to check for a value in the Puppet
823
+ Dashboard/Enterprise Console, and failover to a default value like the
824
+ following:
825
+
826
+ $real_jenkins_version = pick_default($::jenkins_version, '1.449')
827
+
828
+ The value of $real_jenkins_version will first look for a top-scope variable
829
+ called 'jenkins_version' (note that parameters set in the Puppet Dashboard/
830
+ Enterprise Console are brought into Puppet as top-scope variables), and,
831
+ failing that, will use a default value of 1.449.
832
+
833
+ Note that, contrary to the pick() function, the pick_default does not fail if
834
+ all arguments are empty. This allows pick_default to use an empty value as
835
+ default.
836
+
837
+ - * Type* : rvalue
838
+
716
839
prefix
717
840
------
718
841
This function applies a prefix to all elements in an array.
@@ -749,6 +872,13 @@ Will return: ["a","b","c"]
749
872
750
873
Will return: [ "host01", "host02", ..., "host09", "host10"]
751
874
875
+ Passing a third argument will cause the generated range to step by that
876
+ interval, e.g.
877
+
878
+ range("0", "9", "2")
879
+
880
+ Will return: [ 0,2,4,6,8]
881
+
752
882
- * Type* : rvalue
753
883
754
884
reject
@@ -1166,6 +1296,43 @@ The following values will fail, causing compilation to abort:
1166
1296
1167
1297
1168
1298
1299
+ - * Type* : statement
1300
+
1301
+ validate_ipv4_address
1302
+ ---------------------
1303
+ Validate that all values passed are valid IPv4 addresses.
1304
+ Fail compilation if any value fails this check.
1305
+
1306
+ The following values will pass:
1307
+
1308
+ $my_ip = "1.2.3.4"
1309
+ validate_ipv4_address($my_ip)
1310
+ validate_bool("8.8.8.8", "172.16.0.1", $my_ip)
1311
+
1312
+ The following values will fail, causing compilation to abort:
1313
+
1314
+ $some_array = [ 1, true, false, "garbage string", "3ffe:505:2" ]
1315
+ validate_ipv4_address($some_array)
1316
+
1317
+ - * Type* : statement
1318
+
1319
+ validate_ipv6_address
1320
+ ---------------------
1321
+ Validate that all values passed are valid IPv6 addresses.
1322
+ Fail compilation if any value fails this check.
1323
+
1324
+ The following values will pass:
1325
+
1326
+ $my_ip = "3ffe:505:2"
1327
+ validate_ipv6_address(1)
1328
+ validate_ipv6_address($my_ip)
1329
+ validate_bool("fe80::baf6:b1ff:fe19:7507", $my_ip)
1330
+
1331
+ The following values will fail, causing compilation to abort:
1332
+
1333
+ $some_array = [ true, false, "garbage string", "1.2.3.4" ]
1334
+ validate_ipv6_address($some_array)
1335
+
1169
1336
- * Type* : statement
1170
1337
1171
1338
validate_re
@@ -1200,21 +1367,22 @@ A helpful error message can be returned like this:
1200
1367
validate_slength
1201
1368
----------------
1202
1369
Validate that the first argument is a string (or an array of strings), and
1203
- less/equal to than the length of the second argument. It fails if the first
1204
- argument is not a string or array of strings, and if arg 2 is not convertable
1205
- to a number.
1370
+ less/equal to than the length of the second argument. An optional third
1371
+ parameter can be given a the minimum length. It fails if the first
1372
+ argument is not a string or array of strings, and if arg 2 and arg 3 are
1373
+ not convertable to a number.
1206
1374
1207
1375
The following values will pass:
1208
1376
1209
1377
validate_slength("discombobulate",17)
1210
1378
validate_slength(["discombobulate","moo"],17)
1379
+ validate_slength(["discombobulate","moo"],17,3)
1211
1380
1212
1381
The following values will not:
1213
1382
1214
1383
validate_slength("discombobulate",1)
1215
1384
validate_slength(["discombobulate","thermometer"],5)
1216
-
1217
-
1385
+ validate_slength(["discombobulate","moo"],17,10)
1218
1386
1219
1387
- * Type* : statement
1220
1388
0 commit comments