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).