I\'m using puppet to configure servers. I want to print current machine (node) name in *.erb template. There is hostname variable, but this holds puppetmaster hostname.
Seems like I have miss-looked somewhere. I can get(print) node-hostname simply by invoking following code in *.erb template:
<%= @hostname %>
Edit: As of Puppet 3, using local variables (i.e. hostname is deprecated; Puppet 4 will remove support for them entirely. The recommended way is to use instance variables (prefixed with @. So in this case, @hostname. Source
Entering the following command into your terminal will return variables available in your erb files:
facter --puppet
Apparently you can now use
<%= fqdn %>
and get the DNS reverse name.
If you need to lowercase it, use
<%= fqdn.downcase %>
Yes to all the above; you may also find the fqdn variable useful, depending on what you're up to.
If you DO find yourself needing the puppet master server's info in a template, you can use the variables servername, serverip, and serverversion (From the Puppet docs).
Do note though, this is the hostname rather than the node name (which you originally asked for). In 99% of cases, these will be the same. AFAIK there isn't a way to get the actual node name in templates (and if there is, I'd love to hear it).