Using definitions
In the previous example, we saw how to reduce redundant code by grouping identical resources into arrays. However, this technique is limited to resources where all the parameters are the same. When you have a set of resources have some parameters in common, you need to use a definition to group them together.
How to do it…
The following steps will show you how to create a definition:
Add the following code to your manifest:
define tmpfile() { file { "/tmp/${name}": content => "Hello, world\n", } } tmpfile { ['a', 'b', 'c']: }
Run Puppet:
ubuntu@cookbook:~/puppet$ papply Notice: /Stage[main]/Admin::Test/Admin::Test::Tmpfile[a]/File[/tmp/a]/ensure: defined content as '{md5}a7966bf58e23583c9a5a4059383ff850' Notice: /Stage[main]/Admin::Test/Admin::Test::Tmpfile[b]/ File[/tmp/b]/ensure: defined content as '{md5}a7966bf58e23583c9a5a4059383ff850' Notice: /Stage[main]/Admin::Test/Admin::Test::Tmpfile[c]/File[/tmp/c]/ensure: defined content as '{md5}a7966bf58e23583c9a5a4059383ff850...