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:
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.)
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:
Adding Facter variables
I edited the template file to look like this:
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":}'
And this is the result of the modifications:
Sources
- Puppet CookBook: Show all facter facts (http://www.puppetcookbook.com/posts/list-facter-facts.html)
- Learning Puppet – Templates (http://docs.puppetlabs.com/learning/templates.html)
- Tero Karvinen: Linux centralized management lecture (http://terokarvinen.com/2013/aikataulu-%E2%80%93-linuxin-keskitetty-hallinta-%E2%80%93-ict4tn011-4-syksylla-2013)