Using templates in your manifests
Since the end result of a template is a file, you won't be surprised that we use Puppet's file
resource to work with templates. In fact, we use an attribute of the file
resource that you've seen before—the content
attribute.
Referencing template files
Recall from Chapter 2, Creating your first manifests, that you can use the content
attribute to set a file's contents to a literal string:
file { '/tmp/hello.txt': content => "hello, world\n", }
And, of course, you can interpolate the value of Puppet expressions into that string:
file { "/usr/local/bin/${task}": content => "echo I am ${task}\n", mode => '0755', }
So far, so familiar, but we can take one further step and replace the literal string with a call to the epp()
function (file_epp.pp
):
file { '/usr/local/bin/backup': content => epp('backup.sh.epp'), mode => '0755', }
Puppet will compile the template file referenced by backup.sh.epp
, replacing any tags with the value of their...