diff --git a/Servers & Workflows/Linux/Automation/Puppet/Puppet Deployment.md b/Servers & Workflows/Linux/Automation/Puppet/Puppet Deployment.md index 43df087..8c5511d 100644 --- a/Servers & Workflows/Linux/Automation/Puppet/Puppet Deployment.md +++ b/Servers & Workflows/Linux/Automation/Puppet/Puppet Deployment.md @@ -163,5 +163,55 @@ chmod 600 /root/.git-credentials # Cleanup After Ourselves rm -rf /tmp/PuppetTest +``` +Finally we validate that everything is working by pulling down the Puppet environments using r10k on the Puppet Server: +``` sh +sudo /usr/local/bin/r10k deploy environment -p +``` +!!! success "Successful Puppet Environment Deployment + If you got no errors about Puppetfile formatting or Gitea permissions errors, then you are good to move onto the next step. + +## External Node Classifier (ENC) +An ENC allows you to define node-specific data, including the environment, on the Puppet Server. The agent requests its configuration, and the Puppet Server provides the environment and classes to apply. + +**Advantages**: + +- **Centralized Control**: Environments and classifications are managed from the server. +- **Security**: Agents cannot override their assigned environment. +- **Scalability**: Suitable for managing environments for hundreds or thousands of nodes. + +### Create an ENC Script +```ruby title="/opt/puppetlabs/server/data/puppetserver/scripts/enc.rb" +#!/usr/bin/env ruby +# enc.rb + +require 'yaml' + +node_name = ARGV[0] + +# Define environment assignments +node_environments = { + 'fedora.bunny-lab.io' => 'development', + # Add more nodes and their environments as needed +} + +environment = node_environments[node_name] || 'production' + +# Define classes to include per node (optional) +node_classes = { + 'fedora.bunny-lab.io' => ['neofetch'], + # Add more nodes and their classes as needed +} + +classes = node_classes[node_name] || [] + +# Output the YAML document +output = { + 'environment' => environment, + 'classes' => classes +} + +puts output.to_yaml +``` \ No newline at end of file