Joni Junni

Puppet: Using Templates and Facter facts

Categories: [school]
Tags: [linux], [puppet], [linux-centralized-management-course], [debian]

I did some experimenting on using templates and Facter on Puppet with Package-File-Service manifest structure.

Rewriting /etc/motd-file using a Puppet module template

For the template testing I decided to use it on motd-file, which is used to display a message when you log on a linux-machine from command line.

First I created the directory structure for the new module “motdtest” with the following command:

mkdir -p motdtest/manifests

Then I created a new manifest file:

nano motdtest/manifests/init.pp

I wrote the following to the init.pp-file:

class motdtest {
    file { '/etc/motd':<
        content => template("motdtest/motdtest.erb"),
    }
}

Then I created the templates directory to the  module root:

mkdir motdtest/templates
nano motdtest/templates/motdtest.erb

And wrote a message in the file:

puppet-template-motd

After saving the template file I made a test run on the module to see if it would work:

sudo puppet apply --modulepath modules/ -e 'class {"motdtest":}'

(Sudo is needed because we are making changes to a system config file with this module.)

motd-template-working

After I run the command above, it says that it has updated the content on /etc/motd-file. Let’s see if my message is in the file:

puppet-module-motdtest-working

Adding Facter variables

I edited the template file to look like this:

puppet-template-with-facter-facts

You can find more facts available with command “facter” and even more with “facter -p”. After saving the changes to the template, I applied the module again:

sudo puppet apply --modulepath modules/ -e 'class {"motdtest":}'

apply-changes-facter-facts

And this is the result of the modifications:

motd-with-facts-working

Sources