Books

Best Puppet and Chef Books for 2026 (OpenVox and Cinc Ready)

This post contains affiliate links. If you buy through them, we may earn a small commission at no extra cost to you. Learn more.

Only one Puppet book from a major publisher covers Puppet 8, and no major publisher has printed a new Chef book since early 2018. That is the honest state of the shelf for Puppet books and Chef books in 2026, and the tools moved underneath it. Perforce stopped publishing open source Puppet packages in early 2025, the community forked them as OpenVox, and Progress now puts a license key on its Chef Infra Client downloads, so you will want Cinc, the free community build.

Original content from computingforgeeks.com - post 77771

This list keeps the five books still worth paying for and says how old each one is. You do not need a Puppet 9 book to run OpenVox, because the language is the same and the commands keep their names, but you do need to know which install chapters will send you to a dead repository. We ran the Puppet 8 book’s own example manifests on OpenVox 9.1.0 and a Chef recipe on Cinc Client 19.3.14, both on Rocky Linux 10 in October 2026.

Pick a Puppet or Chef book by the tool you run

Start from the tool already running in your fleet, because a Chef shop gets nothing from a Puppet book and these two tools share no syntax. If you are still choosing a tool, skip to the last pick and read our Ansible vs Chef vs Puppet vs Salt comparison before you buy anything:

A Puppet team should own the first two, because one teaches the platform and the other teaches how to keep a large codebase from rotting. A Chef team gets less help: both Chef picks predate Chef Infra Client 19 by years, so you will read them next to the current Chef docs. Many new projects pick Ansible instead, and in that case our Ansible books list is the better place to spend money.

Know what changed under Puppet and Chef

Every book below tells you to install packages from yum.puppet.com or downloads.chef.io, and both of those stopped being the default free path. Perforce moved new Puppet builds to a private repository in early 2025, free for development use up to 25 nodes under a EULA, with a commercial license past that. Vox Pupuli shipped the first OpenVox release in January 2025 and OpenVox 9 on October 2, 2026. Chef went the same way earlier: Chef Software announced in April 2019 that its binaries would ship under a proprietary license, the Cinc project started shipping Apache 2.0 builds in response, and Progress bought Chef in 2020. This is where each one stands now:

ToolWho ships the packagesLicense on the packagesCurrent line (Oct 2026)
Puppet CorePerforce, private repositoryEULA, free to 25 nodes for developmentPuppet 8; last public open source build 8.10.0 (October 2024), no EL10 release package
OpenVoxVox Pupuli, yum.voxpupuli.org and apt.voxpupuli.orgApache 2.0openvox-agent 9.1.0 and 8.31.0, OpenVox 8 gets security fixes for at least six months
Chef Infra ClientProgress ChefChef EULA; license key needed for downloadsChef 19, the LTS line, packaged with Habitat
Cinc ClientCinc project on OSU Open Source LabApache 2.0, no EULA19.3.14 (May 2026)

Forks are what keep these books usable. OpenVox still installs the puppet command under /opt/puppetlabs/bin, and Cinc symlinks chef-client and chef-solo to its own wrapper, so the command names in every chapter still resolve. OpenVox 9 is still a major release with breaking changes, and three of them can trip a book’s examples:

  • no fallback to a server named puppet when server is unset
  • --configprint removed, use puppet config print
  • reports now defaults to none instead of store

The OpenVox 9.0.0 release notes list the rest. Set server in puppet.conf and swap the repository in the install chapter, and most of what the books teach holds. We tested some of it at the end of this guide.

How we picked these books

We pulled the full Puppet and Chef shelves for Packt, O’Reilly, Apress and Manning from Amazon’s catalog, out-of-stock titles included, instead of trusting a best-seller page. That census is where the dates in the intro come from. The newest Chef title from any of those publishers is Packt’s Implementing Chef from January 2018, and it is out of stock. The newest Puppet title is Puppet 8 for DevOps Engineers from June 2023. Nobody has published a book on OpenVox or Cinc yet. Manning never finished one: it cancelled its Chef in Action early-access title and has no Puppet book.

Each pick is a print edition Amazon sold and shipped itself when we checked, and each cover matches the exact edition linked. We left out self-published 2024 and 2025 titles with no publisher behind them, and these older books that are still listed but have been overtaken:

  • Learning Puppet 4 (O’Reilly, 2016), only from third-party sellers
  • Pro Puppet, Second Edition (Apress, 2013)
  • Puppet 5 Beginner’s Guide (Packt, 2017)
  • Mastering Puppet 5 (Packt, 2018)
  • Customizing Chef (O’Reilly, 2014)

Where a publisher shares the book’s code, as Packt does on GitHub, we ran some of it: the chapter 3 examples from Puppet 8 for DevOps Engineers, on OpenVox 9. Where it doesn’t, the contents come from the publisher’s description and table of contents, and we say so. We did not read every chapter of every book.

Compare the 5 Puppet and Chef books

The “Written for” column is the release line the book was current with when it went to press. That is the version its install steps and screenshots will match, and the reason to read every install chapter with the table above open:

BookPublisher, yearPagesWritten forLevel
Puppet 8 for DevOps EngineersPackt, 2023416Puppet 7 and 8, Bolt, PDKBeginner to advanced
Puppet Best PracticesO’Reilly, 2018305Puppet 5, released as Puppet 6 shippedIntermediate
Learning ChefO’Reilly, 2014366Chef 12 era, ChefDKBeginner
Chef Cookbook, Third EditionPackt, 2017268Chef 12, two months before Chef 13Intermediate
Infrastructure as Code, 3rd EditionO’Reilly, 2025434No single toolIntermediate

Only one of the four tool-specific books was written in this decade. That is not a reason to skip the older three, because Puppet’s language and Chef’s resource model changed far less than their packaging did. It is a reason to treat their install chapters as history.

1. Puppet 8 for DevOps Engineers

David Sandilands, who was leading Puppet’s community and developer relations work at Perforce in 2024, wrote the only current Puppet book from a major publisher, and it is the one to buy if you run Puppet or OpenVox today. It covers the language from resources and classes through data types, facts and templating, then Hiera, the platform pieces such as Puppet server and PuppetDB, Bolt for orchestration, and a closing overview of Puppet Enterprise.

Puppet 8 for DevOps Engineers by David Sandilands book cover
Puppet 8 for DevOps Engineers, 1st Edition by David Sandilands. Image: Packt.

Packt’s code repository lists Puppet 7 or 8, Bolt, the PDK, VS Code and an Azure account as the lab kit, and the chapter folders run from ch02 to ch14. We applied the chapter 3 user manifest on OpenVox 9 without changing a line, and it created the group and three users as written. It also uses a resources purge in noop mode, and on our box that flagged our own login account for removal. That is exactly why the book sets noop, and a good lesson to learn on a lab VM.

Two parts have aged. The chapter 2 install script adds yum.puppet.com/puppet7-release and a Puppet Enterprise client tools RPM, and that open source repository has had no new build since October 2024 and no EL10 package. Use the OpenVox repository shown at the end of this guide instead. The Bolt and Enterprise chapters also assume Perforce tooling, so on OpenVox you’d use Vox Pupuli’s OpenBolt and skip the PEADM material.

Pass on it if your fleet is Chef, or if you only need a quick agent install, which our guide to install Puppet on Rocky Linux and AlmaLinux covers. It sold for about $45 to $50 when we checked. Check the current price on Amazon.

2. Puppet Best Practices

Chris Barbour and Jo Rhett wrote the book you read after a year of Puppet, when the codebase starts to hurt. It does not teach the language. It teaches how to lay out modules, keep data in Hiera instead of in manifests, split code into roles and profiles, classify nodes and deploy environments with r10k, which is a structure many large Puppet estates still use.

Puppet Best Practices by Chris Barbour and Jo Rhett book cover
Puppet Best Practices by Chris Barbour and Jo Rhett. Image: O’Reilly Media.

The roles and profiles chapter alone is worth the price, because that pattern decides whether a 500-node Puppet codebase stays readable. The book came out in autumn 2018, as Puppet 6 shipped, so it predates the deprecations in Puppet 7 and 8 and says nothing about OpenVox. None of that touches the design advice, which applies to OpenVox unchanged.

It is the wrong first book: it assumes you already write manifests. Amazon had it at about $20, well under its $49.99 list price, but Amazon had only a copy or two left when we checked, so the price may move. Check the current price on Amazon.

3. Learning Chef

Mischa Taylor and Seth Vargo’s O’Reilly guide is still the clearest introduction to how Chef thinks, even at more than ten years old. It walks through resources, recipes and cookbooks, then roles and environments, and it teaches testing with Test Kitchen and dependency management with Berkshelf. Those ideas carry straight into Chef 19 and Cinc.

Learning Chef by Mischa Taylor and Seth Vargo book cover
Learning Chef by Mischa Taylor and Seth Vargo. Image: O’Reilly Media.

The tooling is where it shows its age. The book sets you up with the Chef Development Kit, which reached end of life on December 31, 2020 and was replaced by Chef Workstation, so install Workstation (or Cinc Workstation) wherever the book says ChefDK. Expect some command output and options to differ from what’s printed, and check the current Chef docs whenever a step fails.

Leave it on the shelf if you want current tooling explained, because neither Chef book here covers Chef Workstation or Chef 19’s Habitat packaging. It was about $17 when we checked, with only a copy or two left at Amazon. Check the current price on Amazon.

4. Chef Cookbook, Third Edition

Matthias Marschall’s Packt cookbook is a set of task recipes rather than a course, so it suits someone who already knows the basics and needs a working example for a specific job. Packt lists testing cookbooks with Test Kitchen and InSpec, managing dependencies with Berkshelf, reporting on chef-client runs, writing custom Ohai and Knife plugins, and building high-availability services with Heartbeat and HAProxy, plus an introduction to Habitat.

Chef Cookbook Third Edition by Matthias Marschall book cover
Chef Cookbook, Third Edition by Matthias Marschall. Image: Packt.

It came out in February 2017, two months before Chef 13, so its recipes are Chef 12 code. Basic resources such as package, service and file still behave the same, and a recipe built from them converged cleanly on Cinc 19 in our lab. The Knife plugins and Chef Server workflows are the parts most likely to need adjusting, so check them against our guide to configure Knife and upload cookbooks before you copy them into a pipeline.

Beginners should start with Learning Chef instead, because this book explains little before each recipe. It was about $50 with no discount when we checked. Check the current price on Amazon.

5. Infrastructure as Code, 3rd Edition

Kief Morris does not teach Puppet or Chef syntax, and that is the point of putting his book here. If you’re deciding whether to keep a Puppet or Chef estate, rebuild it on Ansible or move server state into images and Terraform, this is the book that frames the decision. The 2025 edition covers declarative versus procedural infrastructure languages, how to structure and test infrastructure code, platform patterns from servers to serverless, and operating models for governance and cost.

Infrastructure as Code 3rd Edition by Kief Morris book cover
Infrastructure as Code, 3rd Edition by Kief Morris. Image: O’Reilly Media.

It is the newest book on this list and the one least likely to date, because it argues about patterns instead of commands. Pair it with our roundup of infrastructure as code tools when you get to the shortlist, and with our Terraform books if provisioning is the bigger half of your work.

You will not write a single manifest or recipe from it, so it can’t replace the first four picks. Amazon listed it between about $55 and its $79.99 list price. Check the current price on Amazon.

Check these before buying any Puppet or Chef book

Most of what goes wrong with an old configuration management book is predictable, so check these five things on any title, including ones not on this list:

  • the release line its code pins, not the year on the cover
  • which repository the install chapter adds
  • how much depends on Puppet Enterprise or Chef Automate
  • ChefDK or Workstation in the setup chapter
  • whether the publisher shares the code

Those first two decide how much you’ll rewrite, and the third decides how much of the book applies at all if you run OpenVox or Cinc. A book with public code is worth more than its page count suggests, because you can run its labs on a scratch VM before trusting a chapter. If the answer to most of these is bad and you’re not maintaining an existing fleet, spend the money on learning Ansible playbooks instead.

Run the book examples on OpenVox and Cinc

The fastest way to follow either Puppet book in 2026 is a lab VM with OpenVox, because the commands and paths match the book. On Rocky Linux 10, add the OpenVox 9 repository and install the agent:

sudo rpm -Uvh https://yum.voxpupuli.org/openvox9-release-el-10.noarch.rpm
sudo dnf -y install openvox-agent

The binary keeps Puppet’s name and location, which is why the book’s commands work unchanged:

/opt/puppetlabs/bin/puppet --version

It reports the OpenVox release:

9.1.0

Fetch the chapter 3 user manifest straight from the book’s repository and apply it:

curl -fsSLO https://raw.githubusercontent.com/PacktPublishing/Puppet-8-for-DevOps-Engineers/main/ch03/linux_users.pp
sudo /opt/puppetlabs/bin/puppet apply --color=false linux_users.pp

The users and group were created, and the noop purge reported our login user without removing it:

Notice: Compiled catalog for cm02.example.com in environment production in 0.02 seconds
Notice: /Stage[main]/Main/Group[exampleapp]/ensure: created
Notice: /Stage[main]/Main/User[exampleappdev]/ensure: created
Notice: /Stage[main]/Main/User[exampleapptest]/ensure: created
Notice: /Stage[main]/Main/User[exampleappprod]/ensure: created
Notice: /Stage[main]/Main/User[josphat]/ensure: removed (noop)
Notice: /Stage[main]/Main/User[josphat]/uid: audit change: newly-recorded value 1000
Notice: Applied catalog in 0.38 seconds

The sudoers example in the same chapter needs fixing before it goes anywhere near production, and it shows why a book’s code belongs on a snapshot VM first. The repository’s answer file, ch03/file_unix_answer.pp, manages /etc/sudoers.d/mongodb. Save that resource as its own manifest so you can test it alone:

vim book_mongodb.pp

This is the resource as the repository has it. The character between su and mongo in the original is an en dash (U+2013); this site’s code blocks can’t carry that character, so it appears here as <U+2013>:

file { '/etc/sudoers.d/mongodb':
  ensure       => 'file',
  content      => 'robin All=(ALL) NOPASSWD: su <U+2013> mongo',
  validate_cmd => '/sbin/visudo -c',
  owner        => 'root',
  group        => 'root',
  mode         => '0660'
}

That single sudoers line has three faults, and any one of them is enough to make it useless:

  • su without a full path, a hard parse error in sudoers
  • All instead of ALL, read as a hostname that never matches
  • an en dash where su expects the hyphen of su - mongo

Apply it on the snapshot VM:

sudo /opt/puppetlabs/bin/puppet apply --color=false book_mongodb.pp

OpenVox refuses the file, and visudo points at the bare su (the en dash is shown as <U+2013> again):

Notice: Compiled catalog for cm02.example.com in environment production in 0.02 seconds
Error: Execution of '/sbin/visudo -c' returned 1: /etc/sudoers.d/mongodb20261019-51386-1p81ypa:1:27: expected a fully-qualified path name
robin All=(ALL) NOPASSWD: su <U+2013> mongo
                          ^~
Error: /Stage[main]/Main/File[/etc/sudoers.d/mongodb]/ensure: change from 'absent' to 'file' failed: Execution of '/sbin/visudo -c' returned 1: /etc/sudoers.d/mongodb20261019-51386-1p81ypa:1:27: expected a fully-qualified path name
robin All=(ALL) NOPASSWD: su <U+2013> mongo
                          ^~
Notice: Applied catalog in 0.03 seconds

Look at the file name in that error, because it explains why the check worked at all. Without a % in validate_cmd, Puppet never passes the new content to visudo, so visudo -c only checks the live /etc/sudoers and the files it includes. OpenVox happened to stage the new content beside the target as /etc/sudoers.d/mongodb20261019-..., a name with no dot, so the #includedir in /etc/sudoers pulled it in and the check saw it by accident. The same resource escapes the check when the target is:

  • /etc/sudoers itself
  • a file outside the included directory
  • a sudoers.d name with a dot, such as mongodb.conf

We tested the last case: with the target renamed to /etc/sudoers.d/mongodb.conf, the broken line was written without an error, visudo -c still reported every file as parsed OK, and only visudo -cf /etc/sudoers.d/mongodb.conf showed the same parse error. The other two cases follow from how visudo -c and #includedir work in the sudoers manual. The fix is to hand visudo the staged file with %, so the check never depends on where the file lands:

vim fixed_mongodb.pp

Use a fully qualified su, the ALL keyword, a plain hyphen, a trailing newline and mode 0440, the same mode as the cloud-init drop-in:

file { '/etc/sudoers.d/mongodb':
  ensure       => 'file',
  content      => "robin ALL=(ALL) NOPASSWD: /usr/bin/su - mongo\n",
  validate_cmd => '/usr/sbin/visudo -cf %',
  owner        => 'root',
  group        => 'root',
  mode         => '0440',
}

Apply it, then check the whole sudoers tree:

sudo /opt/puppetlabs/bin/puppet apply --color=false fixed_mongodb.pp
sudo visudo -c

This time the file is written, and visudo -c lists it as clean:

Notice: Compiled catalog for cm02.example.com in environment production in 0.02 seconds
Notice: /Stage[main]/Main/File[/etc/sudoers.d/mongodb]/ensure: defined content as '{sha256}cb57b676cc23ce086c28f2e56e94296a9065e0c970576c530fb2c098f0330135'
Notice: Applied catalog in 0.03 seconds
/etc/sudoers: parsed OK
/etc/sudoers.d/90-cloud-init-users: parsed OK
/etc/sudoers.d/mongodb: parsed OK

Don’t copy the first resource in that answer file at all on a cloud VM. It sets /etc/sudoers.d to recurse => true and purge => true, which deletes every drop-in Puppet doesn’t manage, including 90-cloud-init-users, the file that gives the cloud login user sudo. Put it in its own manifest:

vim book_sudoers_dir.pp

Copy the directory resource exactly as the answer file has it:

file { '/etc/sudoers.d':
  ensure  => 'directory',
  recurse => true,
  purge   => true,
}

Apply it with --noop only, so nothing is deleted:

sudo /opt/puppetlabs/bin/puppet apply --color=false --noop book_sudoers_dir.pp

The noop run names the cloud-init drop-in:

Notice: Compiled catalog for cm02.example.com in environment production in 0.01 seconds
Notice: /Stage[main]/Main/File[/etc/sudoers.d/90-cloud-init-users]/ensure: removed (noop)
Notice: /etc/sudoers.d: Would have triggered 'refresh' from 1 event
Notice: Class[Main]: Would have triggered 'refresh' from 1 event
Notice: Stage[main]: Would have triggered 'refresh' from 1 event
Notice: Applied catalog in 0.04 seconds

Run that for real over SSH and your login user loses sudo on the box, with no way back except the console or a snapshot. Manage the cloud-init drop-in as a Puppet resource before you turn on a directory purge, and always validate sudoers content with visudo -cf %.

For the Chef books, Cinc’s installer takes the major version and needs no license key:

curl -fsSL https://omnitruck.cinc.sh/install.sh | sudo bash -s -- -v 19

Then write a small recipe with the core resources both Chef books lean on:

vim base.rb

It installs chrony, starts the service and writes a message of the day:

package 'chrony'

service 'chronyd' do
  action [:enable, :start]
end

file '/etc/motd' do
  content "Managed by Cinc Client\n"
  mode '0644'
end

Run it with cinc-apply. Cinc’s packages are Apache 2.0 with no EULA, but the --chef-license option comes along from the upstream Chef code that Cinc is rebuilt from, so we passed accept-silent the way the Chef docs show it:

sudo cinc-apply base.rb --chef-license accept-silent

Chrony was already present on the Rocky image, so only the file resource changed, and Cinc restored the SELinux context on /etc/motd by itself:

Recipe: (cinc-apply cookbook)::(cinc-apply recipe)
  * dnf_package[chrony] action install (up to date)
  * service[chronyd] action enable (up to date)
  * service[chronyd] action start (up to date)
  * file[/etc/motd] action create
    - update content in file /etc/motd from e3b0c4 to 572ecc
    --- /etc/motd	2023-11-29 10:34:49.000000000 +0000
    +++ /etc/.chef-motd20261019-51582-3e9kye	2026-10-19 15:33:11.237165408 +0000
    @@ -0,0 +1 @@
    +Managed by Cinc Client
    - restore selinux security context

Typing sudo chef-client --version prints “Redirecting to cinc-client” and then Cinc Client: 19.3.14, so the chef-client command names in Learning Chef and the Cookbook still resolve. With the two forks in place, the language in these books still works, and the install chapters are the part you rewrite first. For a full Chef server rather than a single node, our Chef Infra Server setup guide still applies, but plan past it: Progress ends open source Chef Infra Server in November 2026 in favor of Chef 360, and the Cinc project is forking Cinc Server to keep it going. For a Puppet server on Debian, use the Puppet Server 8 install on Debian.

Keep reading

Best Machine Learning Books (2026): Textbooks, Python, Free PDFs AI Best Machine Learning Books (2026): Textbooks, Python, Free PDFs Best C++ and C Programming Books for 2026: Beginner to Advanced Books Best C++ and C Programming Books for 2026: Beginner to Advanced Best System Design Books for Interviews and Architecture in 2026 Books Best System Design Books for Interviews and Architecture in 2026 Best OpenShift Books for Admins and EX280 Candidates Books Best OpenShift Books for Admins and EX280 Candidates Best API Design Books: REST, gRPC and GraphQL Books Best API Design Books: REST, gRPC and GraphQL Best Cybersecurity Career Books for SOC Analyst and Pentest Jobs Books Best Cybersecurity Career Books for SOC Analyst and Pentest Jobs

Leave a Comment

Press ESC to close