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 configuration management, Puppet architecture, basics of Puppet DSL, among others.
- Configuration Management - Understanding configuration management, which is a process for maintaining computer systems, servers, and software in a desired, consistent state. It is a process that makes sure the systems and software perform consistently across a cluster as expected as changes are made over time.
- Puppet Architecture - Working with the Puppet Architecture and using its components, is included in this competency. The Puppet architectures follow a master-slave framework, with the following key components:
- Puppet Master - The Puppet Master is a server that manages the configuration of a cluster of machines.
- Puppet Agent - The Puppet agent is a working machine that is managed by the Puppet master. They constantly poll the master for any changes that need to be made in its configuration or current state.
- Config Repository - It is a repository for storage and retrieval of all node and server-related configurations.
- Key components in Puppet - Understanding the key components in Puppet. Catalog is a compiled format of all manifests or configurations that need to be sent to a puppet agent. Modules are a collection of resources, manifests, classes, files, definitions, and templates. Manifest files are written in Ruby and Puppet DSL and contain the code for the configuration desired on a target machine for a particular policy or a state, and Facts are information of resources or a state of a particular agent or master.
- Understanding Puppet Workflow - Ability to understand and work with the Puppet Workflow, which is: the agent constantly polls the master at periodic intervals. The 'facter' collects facts about the state of a client and sends them to the master, the master compiles manifests into catalogs and sends it to the client, the agent on the client initiates the catalog and generates and sends a report about the changes made on the client to the master.
- Basic Puppet DSL - Exploring the basics of Puppet DSL. This includes, keywords (include, service, package, ensure, enable, etc), classes, setting attribute values, conditionals, and variables.
- Advantages and Disadvantages - Advantages: Puppet forge provides a large number of open-source modules, large developer community, scalable, fault-tolerant, supports test driven development. Disadvantages: uses ruby and Puppet DSL to describe the configuration, takes longer to set-up compared to simpler competitors, uses pull-configuration, and hence doesn’t support instantaneous deployment natively, reporting is limited.