Check out my GitHub repo for the manifests and code.

What I Did
Installed Puppet using the official Puppet Labs repositories (AIO packages).
Configured my system so both master and agent use the FQDN ubuntu-docker.localdomain.
Set the agent to pull configuration from the master every 5 minutes.


The Manifest
Wrote a Puppet manifest that creates a shell script on the agent (/opt/hello_world.sh) which writes “Hello, world!” to /opt/hello_world_output.txt.
Placed the manifest in the master’s directory (/etc/puppetlabs/code/environments/production/manifests/site.pp).


How It Works
The Puppet agent runs as a service, automatically pulling and applying the manifest from the master.
After the agent runs, I checked /opt/hello_world_output.txt and saw “Hello, world!”—proving the automation worked.


Version Control
Tracked all my Puppet code in a GitHub repo, keeping only relevant files for a clean, professional project.


What I Learned
Setting up Puppet master/agent automation.
Writing and deploying manifests for real configuration management.
The importance of version control in infrastructure-as-code projects.
Managing Linux file and directory permissions (e.g., with chmod, chown).
Using systemctl commands to control and monitor services.
Understanding the purpose of the /opt/ folder for custom and third-party software/scripts.
The process of signing SSL certificates for secure master/agent communication.