Puppet is an open-source (and enterprise) tool that is used for configuration management, deployment automation, and provisioning (AWS). It uses a pull configuration paradigm and makes it easy to manage large infrastructures through simple abstraction.
This competency area includes an understanding of basic manifests in Puppet, setting an attribute value for a resource, installing a package, creating a file, writing simple templates, exploring Puppet Forge, setting up Puppet for a cluster, among others.
- Writing Manifests - Ability to write basic manifests such as, setting an attribute value for a resource, installing a package, creating a file, using classes, running a command on a target machine, etc.
- Templates - Templates are written using embedded Ruby and are files that can be reused in multiple locations in modules. They are generally used to create dynamic templates that can be populated with parameters passed. Ability to write simple templates such as creating a file on a client with the name of that client.
- Puppet Forge - Understanding Puppet Forge, which is a large repository of 5000+ modules and Puppet Module CLI, which is used to install modules from Puppet Forge or other repositories.
- Understanding Security in Puppet - An SSL connection is established between the Puppet Master and Puppet Agent and all communication between them happens over this connection. Puppet has a builtin Certificate Authority that can be used to sign or manage SSL certificates. The agent sends an SSL certificate with its ID to the master and the master signs this certificate and sends it back to the agent. This authentication establishes a secure connection between the agent and the master.
- Setting up Puppet - Ability to setup Puppet for a cluster of 5 clients, this includes, setting up machines, setting up DNS, installation of Puppet master and Puppet agent, establishing SSL connection between master and agent, create and write manifests, and configure target machines using Puppet.