20+ Best Puppet Interview Questions For Engineers

We've compiled a comprehensive list of Puppet interview questions and answers to help you in your upcoming technical interviews. These questions require an in-depth understanding of how Puppet is used to help an organization scale its infrastructure. Puppet is commonly covered in technical Dev Ops interviews, as it relates to common development practices for modern infrastructure stacks. Puppet is a way for Dev Ops engineers to describe a server collection’s configuration as code, allowing them to maintain, configure, and automate infrastructure saving time and resources. Thousands of technology organizations of all sizes use Puppet in their Dev Ops departments to automate and maintain their infrastructure.

Puppet Interview Questions & Answers

1. Who is responsible for the maintenance and updates to Puppet?

Puppet is an open source tool, so its configuration management capabilities are maintained and updated by a community of users and developers.

2. What is Puppet?

Puppet is a tool used for configuration management on both Unix based and Microsoft windows operating systems. Its main goal is to make the management of a large number of machines simpler, more reliable, and with more automation. Puppet makes use of its own declarative language to describe the configuration of a system or network of systems. It is also commonly used to automate system administration tasks.

3. At what point should a technology organization consider using a tool like Puppet?

Organizations of all different sizes may be able to benefit from the usage of a tool like Puppet; however, those with a large number of machines are most likely to see bigger benefits. The management of a handful of servers might provide a reasonable workload for one systems administrator, while the management of 20 servers might prove impossible. Using a tool like Puppet to configure, manage, and automate administration tasks for a large number of servers could bring the workload back into the realm of possibility.

4. What is a Puppet module and a Puppet manifest? How do they differ?

A manifest is a program in Puppet. They are written in Puppet code and they have a file extension of .pp. You can use a text editor or IDE to create or edit manifest files for Puppet.

A Puppet module is related to a manifest; it is a collection of manifests and data organized into a directory structure. Modules are especially useful for organization within your Puppet codebase, because they provide a method by which you can split your codebase along logical lines into manifests. When using Puppet it is considered a best practice to use modules in the organization of your manifests and data.

5. Can Puppet be run on a Windows machine?

New versions of Puppet can run on Windows machines; however, older versions (before 2.7.6) will not run. Versions immediately after 2.7.6 are likely to run on Windows machines but may have limited support for certain functionality, as initial Windows releases had support for basic types and providers, but other central pieces of functionality had yet to be implemented.

6. Explain etckeeper-commit-post and etckeeper-commit-pre?

Both etckeeper-commit-post and etckeeper-commit-pre are configuration files; however, the configurations and actions they define are executed at different times.

In the etckeeper-commit-post configuration file, you can define commands and scripts which will execute after pushing your configuration to the Agent.

In the etckeeper-commit-pre configuration file, you can define commands and scripts which will execute before pushing your configuration to the Agent.

7. Give one example of how a tool like Puppet can increase teamwork and collaboration between Dev Ops Engineers and Software developers.

Because Puppet relies on code, data, and configuration to orchestrate & manage infrastructure and to automate tasks, it is a Dev Ops tool that is often learnable for software developers and encourages collaboration between teams. Depending on organizational structure, an organization using Puppet might even give access to software developers to make their own system-configuration changes via Puppet configuration files, in a way that is straightforward for them to learn and understand. Even if developers themselves are not given the responsibility for infrastructure management via Puppet, using Puppet can give Dev Ops and Engineering teams a consistent format/language by which they can communicate needs for configuration changes.

8. Explain what a class is in Puppet?

In Puppet, lines of code grouped together and named are called a class. Classes exist within modules, and the expressions in their code are executed at the time the class is called by its name. You can declare classes within Puppet manifests, or you can use an ENC to assign them.

Classes are usually used for the configuration of sizeable pieces of functionality. For example, a class may be responsible for the config, services, and packages required to run an application on the server being configured by Puppet.

9. Describe what Facts are in Puppet?

Puppet uses a system called Facter to gather system information. This information is referred to as “Facts”, and they can automatically be used as variables within your Puppet manifest files. Factor provides data in your manifest files like Kernel version, CPU info, IP Address of the machine, dist release number, and more.

10. Describe what a Catalog is in Puppet?

A catalog describes the intended system configuration/state for one specific machine. It contains a list of every resource that should be installed on the machine, as well as any dependencies those resources require.

11. Describe PSON, what does Puppet use PSON for?

If you recognize JSON, you would recognize PSON for its similarities. Puppet uses PSON in order to serialize data that can then be sent across a network or stored on the local file system. JSON requires that the form of the serialized data is UTF-8, unicode encoded, PSON is a more generic 8-bit ASCII. Because of its unique encoding, PSON can represent any sequence of bytes as a string. When specifying the PSON MIME type, the proper types is “text/pson”.

12. What is Puppet server?

Puppet Server offers the same processes and features as the classic Puppet master program; however, Puppet Server runs on the JVM (Java Virtual Machine), doing so by running the Puppet master codebase within JRuby interpreters. Some parts of the classic Puppet master program are reimplemented in Closure in Puppet server.

13. Describe a potential benefit that could be created by automating a process through using Puppet?

In automating the configuration and deployment of various machines in your organization using Puppet, you could shorten the process from being weeks long to less than 30 minutes. After developing an automatic infrastructure configuration and deployment, the process you created can be broken into modules and described thoroughly in a README, which is then checked into version control like git or svn. This allows future Dev Ops teams to update the Puppet modules, change the infrastructure configurations, and access a history or even roll back to previous versions of the configured infrastructure.

14. Why is Puppet’s model driven design significant?

In the past, if a Dev Ops engineer wanted to update the configuration of multiple machines, they would have to do so one step at a time. The engineer could SSH into each machine separately, change particular configurations within the machine, save the configuration, and then SSH into the next machine to repeat the process. Although scripting would be used to automate the process of SSHing into each machine and running config updates, the process is still limited, slow, and never reveals a reflection of the current state or the desired state of the full system to the Dev Ops team.

Puppet models everything related to a given machine (or a set of machines) as data. This includes its configuration, the actions taken during configuration, etc. A machine receives what is called a catalog defining the resources and relationships desired on the machine, compares it to the current system state, and then updates itself to bring the machine into compliance.

Because the modeling of system is done in data, Puppet can simulate config changes, and track the history of a system over time using version control. Changes to Puppet code can be tested to guarantee that refactored code results in the same system state.

15. If you are a Dev Ops engineer orchestrating servers which are all unique in various ways, can Puppet still be a useful tool for you?

Yes, Puppet can still be useful. Although there are multiple differences between almost any two servers, very few servers (especially two within the same organization), are completely unique. For example, it is likely that some or even all of your servers run similar Unix-based or Microsoft windows operating systems, they might also have similar security configurations with other servers in your organization. Puppet can handle uniqueness; however, it can also help promote commonality between your servers and consistency within your infrastructure.

16. What is a Puppet Resource?

Puppet resources are the smallest unit it a system configuration. A resource provides a description for some aspect of the system, for example a package that must be installed for a service with which the machine must communicate.

Puppet Catalogs contain lists of resources, which together in a Catalog describe the target state of the system and manages all of the resources installed on the system.

17. What is a Resource type?

A Resource type describes the kind of configurations managed by a given resource. Puppet comes out of the box with several resource types, for example, CRON jobs, service connections, files, and more. Resource types can also be expanded.

18. Can Resource types be added to Puppet. If so, how?

Puppet allows users to create new Resource types. The pre-defined types available in Puppet are written in the Puppet language; however, custom types must be written in Ruby. Despite the difference in language, custom resource types have access to the same capabilities and options as the pre-defined Puppet resource types.

19. Provide a description of the agent/master architecture of Puppet. What is an agent? What is a master?

A Puppet master server is where the configuration information for the entire managed system of machines is held. Each managed machine is called an agent node, and the agent node requests its own particular configuration from the master server.

More simply put:
Master - Holds configuration information for collection of agents.
Agent - Requests configuration data from master.

20. How do agents and masters communicate with one another in Puppet’s agent/master architecture?

Agent nodes and Puppet masters use the HTTPS protocol to communicate information between one another. The Puppet master provides an API interface accessible over HTTP, where an agent node can access information or submit information to the Puppet master via a defined endpoint.

Since the communication between agent nodes and Puppet masters are HTTPS secure, that means each master or agent must carry an SSL certificate. When communicating, each examines the opposite’s certificate to determine if the communication request is authorized. Puppet has an easy certificate authority for managing SSL security.

21. What is Puppet parser and what is it used for?

Puppet parser looks through your manifest files to make sure the code within them contains correct syntax. Puppet parser is especially useful as part of a continuous integration pipeline, because it can be used as an automated check that prevents invalid Puppet code from making it into your production environment and damaging infrastructure configurations.

Share

Help us by spreading the word