I'm learning to use Puppet and have successfully setup and connected a master server with 2 nodes.
I've created files for the default production
environment which is working. I also have a second set of configs called beta
in my environments folder.
I'd like to assign 1 of my 2 nodes to the beta group via the master server. How would I go about doing this?
Puppet version 4
Best Answer
The environment can either be set by the agent's
puppet.conf
config file, the agent's--environment
command line option, or the master using an external node classifier (ENC), in order of increasing precedence.Run
puppet agent -t --environment beta
to run the agent with a non-default environment.Set
environment = beta
under[agent]
in/etc/puppetlabs/puppet/puppet.conf
to set the default environment.Or to configure an ENC to define the environment on the master:
Create a script such as
/etc/puppetlabs/puppet/node.sh
in any language you like, e.g.Ensure the script is executable (
chmod +x /etc/puppetlabs/puppet/node.sh
)In the master's
/etc/puppetlabs/puppet/puppet.conf
under[master]
, set:When the agent runs, it will retrieve the node information from the master, which runs the node script. The script returns a YAML document (one line in this case) with the environment name. If the environment name is given, then the agent will be forced to use that environment.
The script can be implemented however you see fit - it can perform some sort of query (e.g. against a database), perform some logic against the hostname (the first argument,
$1
), or just be hardcoded.