<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: puppet</title>
    <description>The latest articles tagged 'puppet' on DEV Community.</description>
    <link>https://dev.to/t/puppet</link>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tag/puppet"/>
    <language>en</language>
    <item>
      <title>Puppetlabs Modules Roundup – August 2026</title>
      <dc:creator>Jason St-Cyr</dc:creator>
      <pubDate>Tue, 08 Sep 2026 18:54:01 +0000</pubDate>
      <link>https://dev.to/puppet/puppetlabs-modules-roundup-august-2026-38ch</link>
      <guid>https://dev.to/puppet/puppetlabs-modules-roundup-august-2026-38ch</guid>
      <description>&lt;p&gt;August 2026 brought 24 releases across 22 Puppetlabs modules (puppet_metrics_collector and cd4peadm each shipped twice), headlined by a broad Puppet Core 9 compatibility rollout. Continuous Delivery for PE also shipped a required upgrade, Security Compliance Management 3.9.0 closed out 117 CVEs, and a few community contributions were rolled into modules as well. This roundup pulls the most important changes into one place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Highlighted Updates
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Puppet Core 9 Support Continues to be Added Across Modules
&lt;/h3&gt;

&lt;p&gt;Fourteen &lt;code&gt;puppetlabs&lt;/code&gt; modules added Puppet Core 9 compatibility this month, continuing the ongoing Puppet 9 rollout. Five of them (&lt;code&gt;package&lt;/code&gt;, &lt;code&gt;node_encrypt&lt;/code&gt;, &lt;code&gt;service&lt;/code&gt;, &lt;code&gt;reboot&lt;/code&gt;, and &lt;code&gt;tomcat&lt;/code&gt;) paired the Puppet Core 9 addition with dropping Puppet 7 support in major version bumps as part of a broader Puppet Core modernization pass; see below.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Affected modules: exec, package, node_encrypt, mount_iso, lvm, service, java, inifile, reboot, windows_eventlog, cd4pe, cd4pe_jobs, cd4peadm, tomcat.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Puppet 7 Support Dropped
&lt;/h3&gt;

&lt;p&gt;Five modules dropped Puppet 7 support in major version bumps this month as part of the same Puppet Core modernization pass: &lt;code&gt;package&lt;/code&gt;, &lt;code&gt;node_encrypt&lt;/code&gt;, &lt;code&gt;service&lt;/code&gt;, &lt;code&gt;reboot&lt;/code&gt;, and &lt;code&gt;tomcat&lt;/code&gt;. &lt;code&gt;reboot&lt;/code&gt; also picked up CentOS 9 support in the same release.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Affected modules: package, node_encrypt, service, reboot, tomcat.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Continuous Delivery for PE: Required Upgrade for Newer PE Versions
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;cd4peadm&lt;/code&gt; 5.17.0 is a required upgrade if you're integrating with PE 2023.8.11, 2025.12.0, or 2026.0.0+. Those PE versions now require cert-based auth on puppetserver's &lt;code&gt;/status/v1/services&lt;/code&gt; endpoint, and CD's older unauthenticated calls to it fail with a 403 until you upgrade.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The same release also adds Puppet 9 support and closes a second batch of CVEs (bouncycastle, react-router, nanoid, and others).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Security Compliance Management Patches 117 CVEs
&lt;/h3&gt;

&lt;p&gt;Security Compliance Management 3.9.0, shipped as both &lt;code&gt;comply&lt;/code&gt; and &lt;code&gt;complyadm&lt;/code&gt;, updates roughly 20 bundled third-party components to address 117 CVEs. These included curl/libcurl, OpenSSL, the Netty codec family, Jackson Databind, Keycloak services, and libxml2. — .&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Also restricts the Keycloak administration console and Admin REST API from public access by default, and adds support for pulling container images from a private or air-gapped registry instead of only the public default.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What Updates Happened to Puppetlabs Modules in August 2026?
&lt;/h2&gt;

&lt;p&gt;The following is an alphabetical listing of modules which received updates in August 2026. If a module had multiple versions released, the updates are collected together, numbered with the "latest" version available.&lt;/p&gt;




&lt;h3&gt;
  
  
  cd4pe 3.4.1
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-08-13 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/cd4pe" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Adds Puppet version 9 to the version requirements and updates the module with PDK 3.8.0, along with allowing the stdlib dependency to move to 10.x.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Added version 9 to the Puppet version range.&lt;/li&gt;
&lt;li&gt;Updated module with PDK 3.8.0.&lt;/li&gt;
&lt;li&gt;Expanded the puppetlabs-stdlib dependency to allow stdlib 10.x.&lt;/li&gt;
&lt;li&gt;Removed unused/dead methods from cd4pe_client.rb.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  cd4pe_jobs 1.7.5
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-08-12 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/cd4pe_jobs" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Adds Puppet version 9 support without dropping Puppet 7.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Support for Puppet 9. The &lt;code&gt;puppet&lt;/code&gt; requirement in &lt;code&gt;metadata.json&lt;/code&gt; is now &lt;code&gt;&amp;gt;= 7.24 &amp;lt; 10.0.0&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  cd4peadm 5.18.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-08-26 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/cd4peadm" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Two releases this month for Continuous Delivery for PE: 5.17.0 is a &lt;strong&gt;required upgrade&lt;/strong&gt; for anyone integrating with PE 2023.8.11, 2025.12.0, or 2026.0.0+ — those PE versions require cert-based auth on puppetserver's &lt;code&gt;/status/v1/services&lt;/code&gt; endpoint, which CD previously called unauthenticated, and integration fails with a 403 until you upgrade. 5.17.0 also adds Puppet version 9 support. 5.18.0 follows up with a smaller set of fixes: ssl_cert_chain and ssl_crl in common.yaml can now reference file paths instead of requiring inline PEM contents, and several UI rendering bugs are fixed. Combined, the two releases close 42 CVEs.&lt;/p&gt;

&lt;p&gt;Includes monthly releases: 5.18.0 (2026-08-26), 5.17.0 (2026-08-18).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Added support for version 9 of Puppet.&lt;/li&gt;
&lt;li&gt;Fixed an issue where lastLoginTime data might not be current in some situations. The lastLoginTime field of the user details response from GET /v1/users/{userID} is now correctly updated for LDAP and SAML logins, as well as the initial login after account creation.&lt;/li&gt;
&lt;li&gt;Fixed an issue where some upgraded environments could show a blank Pipelines as Code view and a blank approval details page for module repo pipelines. These pages now render properly without recreating the pipeline.&lt;/li&gt;
&lt;li&gt;42 CVEs addressed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check the official &lt;a href="https://help.puppet.com/cdpe/current/Content/UserGuide/CDPE/ReleaseNotes/cd_release_notes.htm#Version5180" rel="noopener noreferrer"&gt;release notes for cd4peadm 5.18.0&lt;/a&gt; for the full details.&lt;/p&gt;




&lt;h3&gt;
  
  
  comply 3.9.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-08-21 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/comply" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Security Compliance Management 3.9.0 addresses 117 CVEs across bundled third-party components, adds support for a private or air-gapped image registry, and restricts the Keycloak administration console and Admin REST API from public access by default.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Supported benchmarks updated in this release: Microsoft Windows 11 Enterprise Benchmark v5.1.0 Microsoft Windows Server 2022 Benchmark v5.1.0 Microsoft Windows Server 2025 Benchmark v2.1.0.&lt;/li&gt;
&lt;li&gt;Fixed an issue where Assessor CLI downloads could fail if the assessor files were added after the comply-ui container started. Downloads now work after the files are deployed without requiring a manual container restart.&lt;/li&gt;
&lt;li&gt;Fixed an issue where default desired compliance could select different non-STIG benchmarks for the same operating system and version depending on database query ordering. SCM now uses a deterministic selection rule so the default benchmark is chosen consistently.&lt;/li&gt;
&lt;li&gt;117 CVEs addressed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check the official &lt;a href="https://help.puppet.com/scm/current/Content/UserGuide/SCM/Release_notes/release_notes.htm#SecurityComplianceManagement390" rel="noopener noreferrer"&gt;release notes for comply 3.9.0&lt;/a&gt; for the full details.&lt;/p&gt;




&lt;h3&gt;
  
  
  complyadm 3.9.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-08-21 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/complyadm" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Ships the same Security Compliance Management 3.9.0 update as comply, covering the same 117 CVE remediations, the new private/air-gapped image registry option, and the Keycloak admin console/API restriction.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Supported benchmarks updated in this release: Microsoft Windows 11 Enterprise Benchmark v5.1.0 Microsoft Windows Server 2022 Benchmark v5.1.0 Microsoft Windows Server 2025 Benchmark v2.1.0.&lt;/li&gt;
&lt;li&gt;Fixed an issue where Assessor CLI downloads could fail if the assessor files were added after the comply-ui container started. Downloads now work after the files are deployed without requiring a manual container restart.&lt;/li&gt;
&lt;li&gt;Fixed an issue where default desired compliance could select different non-STIG benchmarks for the same operating system and version depending on database query ordering. SCM now uses a deterministic selection rule so the default benchmark is chosen consistently.&lt;/li&gt;
&lt;li&gt;117 CVEs addressed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check the official &lt;a href="https://help.puppet.com/scm/current/Content/UserGuide/SCM/Release_notes/release_notes.htm#SecurityComplianceManagement390" rel="noopener noreferrer"&gt;release notes for complyadm 3.9.0&lt;/a&gt; for the full details.&lt;/p&gt;




&lt;h3&gt;
  
  
  cron_core 2.0.3
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-08-12 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/cron_core" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Fixes a bug where &lt;code&gt;CronParam#numfix&lt;/code&gt; used the &lt;code&gt;=~&lt;/code&gt; operator on non-String values, and updates the related spec tests.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(PE-45112) Don't use =~ on non-String in CronParam#numfix and update spec tests &lt;a href="https://github.com/puppetlabs/puppetlabs-cron_core/pull/94" rel="noopener noreferrer"&gt;#94&lt;/a&gt; (&lt;a href="https://github.com/AriaXLi" rel="noopener noreferrer"&gt;AriaXLi&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  exec 4.1.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-08-31 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/exec" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Adds support for Puppet Core 9.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(MODULES-11713) Add Puppet 9 support &lt;a href="https://github.com/puppetlabs/puppetlabs-exec/pull/250" rel="noopener noreferrer"&gt;#250&lt;/a&gt; (&lt;a href="https://github.com/imaqsood" rel="noopener noreferrer"&gt;imaqsood&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  inifile 6.5.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-08-31 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/inifile" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Adds Puppet Core 9 support, and fixes &lt;code&gt;array_matching&lt;/code&gt; to return the first element when it isn't set to &lt;code&gt;:all&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(MODULES-11703) Add Puppet 9 support &lt;a href="https://github.com/puppetlabs/puppetlabs-inifile/pull/573" rel="noopener noreferrer"&gt;#573&lt;/a&gt; (&lt;a href="https://github.com/imaqsood" rel="noopener noreferrer"&gt;imaqsood&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Return the first element if &lt;code&gt;array_matching&lt;/code&gt; is not &lt;code&gt;:all&lt;/code&gt; &lt;a href="https://github.com/puppetlabs/puppetlabs-inifile/pull/571" rel="noopener noreferrer"&gt;#571&lt;/a&gt; (&lt;a href="https://github.com/bwitt" rel="noopener noreferrer"&gt;bwitt&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  java 12.1.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-08-31 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/java" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Adds Puppet Core 9 support and defaults RHEL 10 nodes to OpenJDK 21.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(MODULES-11704) Add Puppet 9 support &lt;a href="https://github.com/puppetlabs/puppetlabs-java/pull/630" rel="noopener noreferrer"&gt;#630&lt;/a&gt; (&lt;a href="https://github.com/imaqsood" rel="noopener noreferrer"&gt;imaqsood&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;(MODULES-11917) Default RHEL 10 to OpenJDK 21 &lt;a href="https://github.com/puppetlabs/puppetlabs-java/pull/631" rel="noopener noreferrer"&gt;#631&lt;/a&gt; (&lt;a href="https://github.com/imaqsood" rel="noopener noreferrer"&gt;imaqsood&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  kubernetes 8.1.1
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-08-11 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/kubernetes" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Bumps several dependency constraints (augeasproviders_sysctl, augeas core, stdlib) and moves the module to Puppet Core 8, alongside a fix for &lt;code&gt;kubernetes_version&lt;/code&gt; matching and a batch of CI/environment maintenance work.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fix(MODULES-11856): Bump augeasproviders_sysctl to &amp;lt;5.0.0 and core to &amp;lt;6.0.0 &lt;a href="https://github.com/puppetlabs/puppetlabs-kubernetes/pull/722" rel="noopener noreferrer"&gt;#722&lt;/a&gt; (&lt;a href="https://github.com/imaqsood" rel="noopener noreferrer"&gt;imaqsood&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;(MODULES-11840) Allow puppetlabs/stdlib 10.x &lt;a href="https://github.com/puppetlabs/puppetlabs-kubernetes/pull/718" rel="noopener noreferrer"&gt;#718&lt;/a&gt; (&lt;a href="https://github.com/imaqsood" rel="noopener noreferrer"&gt;imaqsood&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;CAT-2378: Update puppetlabs-kubernetes to use Puppet Core 8 &lt;a href="https://github.com/puppetlabs/puppetlabs-kubernetes/pull/712" rel="noopener noreferrer"&gt;#712&lt;/a&gt; (&lt;a href="https://github.com/span786" rel="noopener noreferrer"&gt;span786&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fix kubernetes_version matching &lt;a href="https://github.com/puppetlabs/puppetlabs-kubernetes/pull/705" rel="noopener noreferrer"&gt;#705&lt;/a&gt; (&lt;a href="https://github.com/xbulat" rel="noopener noreferrer"&gt;xbulat&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;ci(MODULES-11557): add Twingate setup step to GitHub Actions workflow &lt;a href="https://github.com/puppetlabs/puppetlabs-kubernetes/pull/704" rel="noopener noreferrer"&gt;#704&lt;/a&gt; (&lt;a href="https://github.com/imaqsood" rel="noopener noreferrer"&gt;imaqsood&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;MODULES-11577 chore(ruby): upgrade Ruby from 2.7 to 3.1 &lt;a href="https://github.com/puppetlabs/puppetlabs-kubernetes/pull/702" rel="noopener noreferrer"&gt;#702&lt;/a&gt; (&lt;a href="https://github.com/imaqsood" rel="noopener noreferrer"&gt;imaqsood&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;(MAINT): Updated the version for puppetlabs-apt module in metadata.json file &lt;a href="https://github.com/puppetlabs/puppetlabs-kubernetes/pull/698" rel="noopener noreferrer"&gt;#698&lt;/a&gt; (&lt;a href="https://github.com/span786" rel="noopener noreferrer"&gt;span786&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;(CAT-2193): Fixed kubernetes environment setup for Debian. &lt;a href="https://github.com/puppetlabs/puppetlabs-kubernetes/pull/694" rel="noopener noreferrer"&gt;#694&lt;/a&gt; (&lt;a href="https://github.com/span786" rel="noopener noreferrer"&gt;span786&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;(CAT-2095): Fixed puppetlabs-kubernetes modules CI &amp;amp; nightly failures &lt;a href="https://github.com/puppetlabs/puppetlabs-kubernetes/pull/693" rel="noopener noreferrer"&gt;#693&lt;/a&gt; (&lt;a href="https://github.com/span786" rel="noopener noreferrer"&gt;span786&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  lvm 4.1.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-08-31 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/lvm" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Now supports Puppet Core 9.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(MODULES-11719) Add Puppet 9 support &lt;a href="https://github.com/puppetlabs/puppetlabs-lvm/pull/391" rel="noopener noreferrer"&gt;#391&lt;/a&gt; (&lt;a href="https://github.com/imaqsood" rel="noopener noreferrer"&gt;imaqsood&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  mount_iso 5.1.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-08-31 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/mount_iso" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Puppet Core 9 is now supported.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(MODULES-11723) Add Puppet 9 support &lt;a href="https://github.com/puppetlabs/puppetlabs-mount_iso/pull/61" rel="noopener noreferrer"&gt;#61&lt;/a&gt; (&lt;a href="https://github.com/imaqsood" rel="noopener noreferrer"&gt;imaqsood&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  node_encrypt 4.0.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-08-31 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/node_encrypt" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Drops Puppet 7 support (&lt;strong&gt;BREAKING&lt;/strong&gt;) as part of a Puppet Core update, and adds version 9 support in the same release.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(CAT-2382) Update for Puppet Core / Drop Support for Puppet 7 &lt;a href="https://github.com/puppetlabs/puppetlabs-node_encrypt/pull/125" rel="noopener noreferrer"&gt;#125&lt;/a&gt; (&lt;a href="https://github.com/david22swan" rel="noopener noreferrer"&gt;david22swan&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;(MODULES-11724) Add Puppet 9 support &lt;a href="https://github.com/puppetlabs/puppetlabs-node_encrypt/pull/126" rel="noopener noreferrer"&gt;#126&lt;/a&gt; (&lt;a href="https://github.com/imaqsood" rel="noopener noreferrer"&gt;imaqsood&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  package 4.0.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-08-31 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/package" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Puppet 7 support gets dropped (&lt;strong&gt;BREAKING&lt;/strong&gt;) as part of a Puppet Core update and also adds Puppet Core 9 support. Also, Chocolatey bootstrap failures are now surfaced more clearly in Windows acceptance testing.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(CAT-2384) Prepare module for Puppet Core / Drop Support for Puppet 7 &lt;a href="https://github.com/puppetlabs/puppetlabs-package/pull/346" rel="noopener noreferrer"&gt;#346&lt;/a&gt; (&lt;a href="https://github.com/shubhamshinde360" rel="noopener noreferrer"&gt;shubhamshinde360&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;(MODULES-11927) Surface chocolatey bootstrap failures in Windows acceptance &lt;a href="https://github.com/puppetlabs/puppetlabs-package/pull/354" rel="noopener noreferrer"&gt;#354&lt;/a&gt; (&lt;a href="https://github.com/imaqsood" rel="noopener noreferrer"&gt;imaqsood&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;(MODULES-11730) Add Puppet 9 support &lt;a href="https://github.com/puppetlabs/puppetlabs-package/pull/353" rel="noopener noreferrer"&gt;#353&lt;/a&gt; (&lt;a href="https://github.com/imaqsood" rel="noopener noreferrer"&gt;imaqsood&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;(CAT-2296) Update github runner image to ubuntu-24.04 &lt;a href="https://github.com/puppetlabs/puppetlabs-package/pull/345" rel="noopener noreferrer"&gt;#345&lt;/a&gt; (&lt;a href="https://github.com/shubhamshinde360" rel="noopener noreferrer"&gt;shubhamshinde360&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  puppet_metrics_collector 8.2.3
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-08-14 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/puppet_metrics_collector" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Fixes a PostgreSQL 17 checkpoints query and hardens version parsing, cleans up puppet-lint warnings, and removes a broken plaintext-port fallback in PuppetDB metrics collection.&lt;/p&gt;

&lt;p&gt;Includes monthly releases: 8.2.3 (2026-08-14), 8.2.2 (2026-08-07).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(PE-45849) Fix PG17 checkpoints query and harden version parsing &lt;a href="https://github.com/puppetlabs/puppetlabs-puppet_metrics_collector/pull/213" rel="noopener noreferrer"&gt;#213&lt;/a&gt; (&lt;a href="https://github.com/beechtom" rel="noopener noreferrer"&gt;beechtom&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fix puppet-lint space_before_arrow and 140chars warnings &lt;a href="https://github.com/puppetlabs/puppetlabs-puppet_metrics_collector/pull/210" rel="noopener noreferrer"&gt;#210&lt;/a&gt; (&lt;a href="https://github.com/jonathannewman" rel="noopener noreferrer"&gt;jonathannewman&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Remove broken plaintext-port fallback in PuppetDB metrics collection &lt;a href="https://github.com/puppetlabs/puppetlabs-puppet_metrics_collector/pull/209" rel="noopener noreferrer"&gt;#209&lt;/a&gt; (&lt;a href="https://github.com/jonathannewman" rel="noopener noreferrer"&gt;jonathannewman&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  reboot 6.0.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-08-26 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/reboot" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Drops Puppet 7 (&lt;strong&gt;BREAKING&lt;/strong&gt;) amd adds support for Puppet Core 9 and CentOS 9.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(CAT-2388) Puppet Core update and Remove Puppet 7 support &lt;a href="https://github.com/puppetlabs/puppetlabs-reboot/pull/378" rel="noopener noreferrer"&gt;#378&lt;/a&gt; (&lt;a href="https://github.com/LukasAud" rel="noopener noreferrer"&gt;LukasAud&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;(MODULES-11707) Add Puppet 9 support &lt;a href="https://github.com/puppetlabs/puppetlabs-reboot/pull/381" rel="noopener noreferrer"&gt;#381&lt;/a&gt; (&lt;a href="https://github.com/skyamgarp" rel="noopener noreferrer"&gt;skyamgarp&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;(CAT-7110) Add CentOS 9 support &lt;a href="https://github.com/puppetlabs/puppetlabs-reboot/pull/373" rel="noopener noreferrer"&gt;#373&lt;/a&gt; (&lt;a href="https://github.com/shubhamshinde360" rel="noopener noreferrer"&gt;shubhamshinde360&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  security_policy 1.1.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-08-04 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/security_policy" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;A &lt;code&gt;kerberos_policy&lt;/code&gt; type/provider and a &lt;code&gt;new_guest_name&lt;/code&gt; class parameter are added, expanding the module's native parity coverage ahead of SCE integration. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[MODULES-11883/MODULES-11884] Epic F: kerberos_policy type/provider (F.1) + new_guest_name parameter (F.2) &lt;a href="https://github.com/puppetlabs/puppetlabs-security_policy/pull/45" rel="noopener noreferrer"&gt;#45&lt;/a&gt; (&lt;a href="https://github.com/mehul-jain1" rel="noopener noreferrer"&gt;mehul-jain1&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;[MODULES-11884] Add new_guest_name class parameter (Epic F.2) &lt;a href="https://github.com/puppetlabs/puppetlabs-security_policy/pull/44" rel="noopener noreferrer"&gt;#44&lt;/a&gt; (&lt;a href="https://github.com/mehul-jain1" rel="noopener noreferrer"&gt;mehul-jain1&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;[MODULES-11848] plan: add Epic F (native parity superset for SCE integration) &lt;a href="https://github.com/puppetlabs/puppetlabs-security_policy/pull/43" rel="noopener noreferrer"&gt;#43&lt;/a&gt; (&lt;a href="https://github.com/mehul-jain1" rel="noopener noreferrer"&gt;mehul-jain1&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;plan/: post-release cleanup — Epics A/B/D/E done, Epic C transferred to puppetlabs-sce_windows &lt;a href="https://github.com/puppetlabs/puppetlabs-security_policy/pull/42" rel="noopener noreferrer"&gt;#42&lt;/a&gt; (&lt;a href="https://github.com/mehul-jain1" rel="noopener noreferrer"&gt;mehul-jain1&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;[MODULES-11804] CHANGELOG: rename Breaking Changes -&amp;gt; Changed (release-blocker) &lt;a href="https://github.com/puppetlabs/puppetlabs-security_policy/pull/41" rel="noopener noreferrer"&gt;#41&lt;/a&gt; (&lt;a href="https://github.com/mehul-jain1" rel="noopener noreferrer"&gt;mehul-jain1&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  service 4.0.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-08-31 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/service" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Drops support for Puppet version 7 (&lt;strong&gt;BREAKING&lt;/strong&gt;) and adds version 9 support.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(CAT-2392) Puppet Core update / Drop support for puppet 7 &lt;a href="https://github.com/puppetlabs/puppetlabs-service/pull/263" rel="noopener noreferrer"&gt;#263&lt;/a&gt; (&lt;a href="https://github.com/LukasAud" rel="noopener noreferrer"&gt;LukasAud&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;(MODULES-11709) Add Puppet 9 support &lt;a href="https://github.com/puppetlabs/puppetlabs-service/pull/268" rel="noopener noreferrer"&gt;#268&lt;/a&gt; (&lt;a href="https://github.com/imaqsood" rel="noopener noreferrer"&gt;imaqsood&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Update link for contributing documentation &lt;a href="https://github.com/puppetlabs/puppetlabs-service/pull/264" rel="noopener noreferrer"&gt;#264&lt;/a&gt; (&lt;a href="https://github.com/jst-cyr" rel="noopener noreferrer"&gt;jst-cyr&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;(CAT-2296) Update github runner image to ubuntu-24.04 &lt;a href="https://github.com/puppetlabs/puppetlabs-service/pull/262" rel="noopener noreferrer"&gt;#262&lt;/a&gt; (&lt;a href="https://github.com/shubhamshinde360" rel="noopener noreferrer"&gt;shubhamshinde360&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  sshkeys_core 3.0.2
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-08-05 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/sshkeys_core" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Hardens the sshkey type by rejecting key values that contain embedded whitespace, preventing malformed authorized_keys entries.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(PA-8911) Reject embedded whitespace in sshkey key &lt;a href="https://github.com/puppetlabs/puppetlabs-sshkeys_core-private/pull/1" rel="noopener noreferrer"&gt;#1&lt;/a&gt; (&lt;a href="https://github.com/mhashizume" rel="noopener noreferrer"&gt;mhashizume&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  stdlib 10.0.2
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-08-06 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/stdlib" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Fixes a &lt;code&gt;stdlib::manage&lt;/code&gt; parser bug that failed to parse &lt;code&gt;$type&lt;/code&gt; resources.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fix(stdlib::manage) parser fails &lt;code&gt;$type&lt;/code&gt; resources &lt;a href="https://github.com/puppetlabs/puppetlabs-stdlib/pull/1477" rel="noopener noreferrer"&gt;#1477&lt;/a&gt; (&lt;a href="https://github.com/jcpunk" rel="noopener noreferrer"&gt;jcpunk&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  tomcat 8.0.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-08-11 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/tomcat" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Drops Puppet 7 support (&lt;strong&gt;BREAKING&lt;/strong&gt;) as part of a Puppet Core update, and allows the stdlib dependency to move to 10.x.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(CAT-2396) Prepare module for Puppet Core / Drop Support for Puppet 7 &lt;a href="https://github.com/puppetlabs/puppetlabs-tomcat/pull/580" rel="noopener noreferrer"&gt;#580&lt;/a&gt; (&lt;a href="https://github.com/david22swan" rel="noopener noreferrer"&gt;david22swan&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;(MODULES-11840) Allow puppetlabs/stdlib 10.x &lt;a href="https://github.com/puppetlabs/puppetlabs-tomcat/pull/584" rel="noopener noreferrer"&gt;#584&lt;/a&gt; (&lt;a href="https://github.com/imaqsood" rel="noopener noreferrer"&gt;imaqsood&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Update link for contributing documentation &lt;a href="https://github.com/puppetlabs/puppetlabs-tomcat/pull/583" rel="noopener noreferrer"&gt;#583&lt;/a&gt; (&lt;a href="https://github.com/jst-cyr" rel="noopener noreferrer"&gt;jst-cyr&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;(CAT-2296) Update github runner image to ubuntu-24.04 &lt;a href="https://github.com/puppetlabs/puppetlabs-tomcat/pull/579" rel="noopener noreferrer"&gt;#579&lt;/a&gt; (&lt;a href="https://github.com/shubhamshinde360" rel="noopener noreferrer"&gt;shubhamshinde360&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  windows_eventlog 5.2.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-08-31 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/windows_eventlog" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Adds Puppet Core 9 support to the module.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(MODULES-11729) Add Puppet 9 support &lt;a href="https://github.com/puppetlabs/puppetlabs-windows_eventlog/pull/100" rel="noopener noreferrer"&gt;#100&lt;/a&gt; (&lt;a href="https://github.com/imaqsood" rel="noopener noreferrer"&gt;imaqsood&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Until Next Time!
&lt;/h2&gt;

&lt;p&gt;That wraps up the August 2026 roundup. If any of these modules intersect with your environment,  especially the five modules that removed Puppet 7 support (&lt;code&gt;package&lt;/code&gt;, &lt;code&gt;node_encrypt&lt;/code&gt;, &lt;code&gt;service&lt;/code&gt;, &lt;code&gt;reboot&lt;/code&gt;, and &lt;code&gt;tomcat&lt;/code&gt;), or some of the other breaking or required changes, the linked Forge pages and release notes are worth a closer look before upgrading.&lt;/p&gt;

&lt;p&gt;Feedback on the series is always useful, especially if there are module families or release-note patterns that deserve more attention in future editions.&lt;/p&gt;

&lt;p&gt;More updates coming next month when the September 2026 releases land, and you should expect to see continued Puppet Core 9 support rolling out across September!&lt;/p&gt;

&lt;h2&gt;
  
  
  🤖 AI Disclosure
&lt;/h2&gt;

&lt;p&gt;This roundup is produced by a mostly-automated pipeline, with some AI sprinkled in for orchestration and enrichment (or 'Combobulating' and 'Finagling'), followed by a human review (that would be me) before publishing.&lt;/p&gt;

&lt;p&gt;The automation is an &lt;a href="https://github.com/jst-cyr/puppetlabs-modules-roundup-writer" rel="noopener noreferrer"&gt;open-source project&lt;/a&gt; with deterministic python scripts to crawl the Forge and determine which &lt;code&gt;puppetlabs&lt;/code&gt; modules were released during a specific month (and catching when a module gets more than one release in a month). By combining a template, automation scripts, and some AI orchestration the content all gets pulled together for a structured markdown document. I then jump in to double-check the content and update any wording that seems repetitive or irrelevant (and sometimes I need to add some extra context that isn't in the changelog notes).&lt;/p&gt;

</description>
      <category>puppet</category>
    </item>
    <item>
      <title>Automating 204 Lighthouse Audits to find the fastest Shopify Theme</title>
      <dc:creator>Deepak Jangra</dc:creator>
      <pubDate>Thu, 03 Sep 2026 15:25:58 +0000</pubDate>
      <link>https://dev.to/ivewor/automating-204-lighthouse-audits-to-find-the-fastest-shopify-theme-514n</link>
      <guid>https://dev.to/ivewor/automating-204-lighthouse-audits-to-find-the-fastest-shopify-theme-514n</guid>
      <description>&lt;p&gt;I needed to find the actual baseline speed of popular Shopify themes. Since dev stores are password-protected, manual PageSpeed Insights URLs don't work.&lt;/p&gt;

&lt;p&gt;I wrote a Node.js script using Puppeteer to bypass the storefront password, and hooked it into the Lighthouse CLI to audit 17 themes across mobile and desktop viewports, running 3 passes each to get the median.&lt;/p&gt;

&lt;p&gt;It turns out that while Shopify's default free themes are highly optimized, a few premium themes (like Broadcast and Expanse) manage to keep a perfect 100 score even with heavy UI components.&lt;/p&gt;

&lt;p&gt;I published my methodology, the full dataset, and the raw JSON reports on my blog. If you do Shopify dev work, you can check the baseline numbers. You check more about the &lt;a href="https://deepakj.dev/blog/fastest-shopify-themes" rel="noopener noreferrer"&gt;fastest shopify theme here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>performance</category>
      <category>puppet</category>
      <category>staticwebapps</category>
      <category>ai</category>
    </item>
    <item>
      <title>Security Compliance Management 3.9.0 now supports Ubuntu 24.04, RHEL 10, Puppet Core 9 and new benchmarks!</title>
      <dc:creator>Jason St-Cyr</dc:creator>
      <pubDate>Thu, 27 Aug 2026 14:29:27 +0000</pubDate>
      <link>https://dev.to/puppet/security-compliance-management-390-now-supports-ubuntu-2404-rhel-10-puppet-core-9-and-new-ndh</link>
      <guid>https://dev.to/puppet/security-compliance-management-390-now-supports-ubuntu-2404-rhel-10-puppet-core-9-and-new-ndh</guid>
      <description>&lt;p&gt;The latest Security Compliance Management (SCM) 3.9.0 has new supported platforms, improvements for air-gapped environments, benchmark updates, feature improvements, and security updates to address vulnerabilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  Highlights
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Expanded platform support:&lt;/strong&gt; SCM 3.9.0 now supports Ubuntu 24.04, Red Hat Enterprise Linux (RHEL) 10, and Puppet 9&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Private image registry support:&lt;/strong&gt; &lt;code&gt;complyadm&lt;/code&gt; can now pull SCM container images from a private image registry to better support air-gapped and private-registry environments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IP-based access restrictions:&lt;/strong&gt; Keycloak Administration Console and Admin REST APIs can now be access restricted to IP addresses defined in the frontdoor allowlist.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expanded benchmarks:&lt;/strong&gt; CIS-CAT Pro Assessor was updated to 4.65.0,  expanded benchmark support for AlmaLinux and MacOS, and updated coverage on Microsoft Windows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;119 security vulnerabilities&lt;/strong&gt; addressed via updates and fixes, along with several other security hardening fixes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Below are some other summary details, but you may want to jump straight into the &lt;a href="https://help.puppet.com/scm/current/Content/UserGuide/SCM/Release_notes/release_notes.htm#SecurityComplianceManagement390" rel="noopener noreferrer"&gt;full release notes&lt;/a&gt; right away! &lt;/p&gt;

&lt;h2&gt;
  
  
  CIS-CAT Pro Assessor Updates
&lt;/h2&gt;

&lt;p&gt;Along with updating to CIS-CAT Pro Assessor 4.65.0, the following benchmarks were added:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AlmaLinux OS 9 STIG v1.0.0&lt;/li&gt;
&lt;li&gt;Apple macOS 15 (Sequoia) STIG v1.1.0&lt;/li&gt;
&lt;li&gt;Apple macOS 26 Tahoe STIG v1.0.0&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These supported benchmarks were also updated:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Microsoft Windows 11 Enterprise Benchmark v5.1.0&lt;/li&gt;
&lt;li&gt;Microsoft Windows Server 2022 Benchmark v5.1.0&lt;/li&gt;
&lt;li&gt;Microsoft Windows Server 2025 Benchmark v2.1.0&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Operational Improvements and Security updates
&lt;/h2&gt;

&lt;p&gt;There were several changes made to improve behavior and address vulnerabilities in this release, including addressing 119 security reports.&lt;/p&gt;

&lt;p&gt;A few notable changes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SCM handles interrupted scheduled scans after reboots more reliably.&lt;/li&gt;
&lt;li&gt;Default benchmark selection is now more reliable when multiple non-STIG benchmarks are available.&lt;/li&gt;
&lt;li&gt;Hasura GraphQL field suggestions are now disabled to prevent schema enumeration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See the full list &lt;a href="https://help.puppet.com/scm/current/Content/UserGuide/SCM/Release_notes/release_notes.htm#SecurityComplianceManagement390" rel="noopener noreferrer"&gt;in the release notes&lt;/a&gt;!&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Upgrade?
&lt;/h2&gt;

&lt;p&gt;For customers running Ubuntu 24.04, RHEL 10, Puppet 9, private registries, or security-sensitive environments, SCM 3.9.0 delivers meaningful operational, platform, and security improvements. Combined with expanded benchmark coverage and enhanced upgrade behavior, this release helps organizations maintain compliance with greater confidence and less administrative overhead.&lt;/p&gt;


&lt;div class="ltag-offer"&gt;
  &lt;div class="ltag-offer__body"&gt;View the full SCM 3.9.0 release notes!&lt;/div&gt;
    &lt;a href="https://help.puppet.com/scm/current/Content/UserGuide/SCM/Release_notes/release_notes.htm#SecurityComplianceManagement390" class="ltag-offer__button crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Read More&lt;/a&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  🤖 AI Disclosure
&lt;/h2&gt;

&lt;p&gt;This summary was initially drafted by AI and deterministic automation to pull together release notes information from the latest Security Compliance Management 3.9.0 release notes. The draft was then human edited, rewritten, and reviewed before publishing.&lt;/p&gt;

</description>
      <category>puppet</category>
      <category>devops</category>
      <category>security</category>
    </item>
    <item>
      <title>Serverless Infrastructure</title>
      <dc:creator>Nuwair Systems</dc:creator>
      <pubDate>Tue, 25 Aug 2026 11:59:33 +0000</pubDate>
      <link>https://dev.to/nuwairsystems/serverless-infrastructure-3lkg</link>
      <guid>https://dev.to/nuwairsystems/serverless-infrastructure-3lkg</guid>
      <description>&lt;p&gt;Scale to Millions of Requests — Pay Only for What You Use.&lt;/p&gt;

&lt;p&gt;Nuwair Systems designs and deploys event-driven serverless architectures on AWS Lambda, API Gateway, DynamoDB, and EventBridge. Infinite elasticity with zero server management — and a cost model that charges only for actual compute consumed.&lt;/p&gt;

&lt;p&gt;What We Deliver&lt;br&gt;
The four delivery pillars behind every Serverless Infrastructure engagement.&lt;/p&gt;

&lt;p&gt;Serverless Architecture Design&lt;br&gt;
Event-driven diagrams and function boundary decisions before a single line is written.&lt;/p&gt;

&lt;p&gt;Lambda &amp;amp; API Gateway&lt;br&gt;
Versioned functions with IAM least-privilege, WAF integration, and custom domain routing.&lt;/p&gt;

&lt;p&gt;DynamoDB &amp;amp; Aurora Serverless&lt;br&gt;
Single-table DynamoDB or Aurora Serverless v2 with automated backups and point-in-time recovery.&lt;/p&gt;

&lt;p&gt;IaC with CDK / Terraform&lt;br&gt;
Entire stack defined as code — reproducible across all environments with a single command.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://nuwair.com/serverless-infrastructure" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fnuwair.com%2Fimages%2Flogo.png" height="114" class="m-0" width="553"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://nuwair.com/serverless-infrastructure" rel="noopener noreferrer" class="c-link"&gt;
            Serverless Infrastructure | Nuwair Systems
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Serverless infrastructure on AWS by Nuwair Systems. Lambda, API Gateway, DynamoDB architectures that auto-scale and charge only for actual usage.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fnuwair.com%2Ffavicon.png" width="553" height="114"&gt;
          nuwair.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


</description>
      <category>serverless</category>
      <category>staticwebapps</category>
      <category>infrastructure</category>
      <category>puppet</category>
    </item>
    <item>
      <title>How I Enforced a Privacy Rule, Commented It, Yet Still Shipped a Data Leak – Lessons Learned</title>
      <dc:creator>Tech Pulse</dc:creator>
      <pubDate>Mon, 24 Aug 2026 06:43:02 +0000</pubDate>
      <link>https://dev.to/devtechpulse/how-i-enforced-a-privacy-rule-commented-it-yet-still-shipped-a-data-leak-lessons-learned-3nah</link>
      <guid>https://dev.to/devtechpulse/how-i-enforced-a-privacy-rule-commented-it-yet-still-shipped-a-data-leak-lessons-learned-3nah</guid>
      <description>&lt;h2&gt;
  
  
  AI-Powered Privacy Policy Generators
&lt;/h2&gt;

&lt;p&gt;LLM‑driven privacy policy generators have moved from experimental prototypes to production‑grade services in 2026, offering on‑demand, jurisdiction‑aware drafts that can be directly embedded into compliance pipelines.&lt;/p&gt;

&lt;p&gt;Tools such as PrivacyGPT and PolicyCraft combine retrieval‑augmented generation with rule‑extraction models, turning natural‑language privacy intents into enforceable policy clauses that can be exported as JSON‑LD or plain‑text templates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deep Dive Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PrivacyGPT leverages a hybrid architecture: a domain‑specific transformer fine‑tuned on 10 million privacy statements, paired with a deterministic rule engine that maps extracted obligations to GDPR, CCPA, and emerging AI‑Act provisions.&lt;/li&gt;
&lt;li&gt;PolicyCraft adds a feedback loop where the generated draft is automatically validated against an internal compliance knowledge graph; mismatches trigger a self‑correcting prompt that iteratively refines the text until a confidence score above 92 % is achieved.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Real-World Engineering Examples&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A fintech startup integrated PrivacyGPT via its CI/CD pipeline; each pull request that modifies data‑collection code triggers an API call that updates the “Data Retention” clause, keeping the public policy in sync with code changes.&lt;/li&gt;
&lt;li&gt;A multinational e‑commerce platform deployed PolicyCraft to generate locale‑specific consent banners; the system produced 27 variants in under five minutes, each certified against the EU’s Digital Services Act.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Zero‑Trust Architecture for Rule Enforcement&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Zero‑trust architecture (ZTA) starts from the assumption that no network segment—whether on‑prem, cloud, or edge—can be implicitly trusted. Instead of a perimeter, every request is evaluated against a continuously refreshed identity profile that fuses user credentials, device posture, and behavioral risk scores. In practice, this means deploying a Policy Decision Point (PDP) that consumes attributes from an identity provider, a device‑trust service, and a telemetry bus, then returns an allow/deny decision in real time. The decision is enforced by a Policy Enforcement Point (PEP) embedded in the data plane—e.g., a sidecar proxy, a firewall rule, or a service‑mesh gateway—so that the same rule is applied whether the traffic originates from a laptop on a public Wi‑Fi or a container inside a Kubernetes pod.&lt;/p&gt;

&lt;p&gt;Micro‑segmentation refines ZTA by carving the attack surface into least‑privilege zones that align with business domains. Using a service‑mesh control plane, each micro‑service advertises its required inbound and outbound intents as declarative policies. The mesh’s sidecar proxies terminate mutual TLS, inject identity headers, and consult the PDP before any payload leaves the enclave. This approach guarantees that even if a compromised workload obtains network access, it cannot reach data stores or other services without a matching intent. The result is end‑to‑end enforcement of privacy rules at every hop, eliminating the “trusted internal network” loophole that historically caused data leaks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deep Dive Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PDP‑PEP handshake: When a request arrives, the sidecar extracts the SPIFFE ID, queries the PDP via gRPC, and receives a signed policy token. The token includes a TTL, required scopes, and a cryptographic hash of the request path. The sidecar validates the token locally, avoiding round‑trips for subsequent packets in the same flow.&lt;/li&gt;
&lt;li&gt;Policy as code pipeline: Teams author policies in Rego (OPA) or CEL, store them in a GitOps repo, and use a CI/CD gate to run unit tests with simulated attribute sets. The compiled policies are shipped to the PDP runtime, enabling instant roll‑out without service restarts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Real-World Engineering Examples&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google’s BeyondCorp Enterprise implements ZTA for all G‑Suite users, pushing identity verification to the edge and using Cloud Armor as a PEP for every API call.&lt;/li&gt;
&lt;li&gt;Netflix’s open‑source Zuul 3.0 and the internal “Lattice” mesh enforce micro‑segmentation across its CDN edge nodes, ensuring that only authorized services can fetch subscriber metadata.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2025‑2026 Breach Metrics: Why Leaks Still Occur&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The 2025 Verizon Data Breach Investigations Report logged 5,300 confirmed incidents, a 4 % rise over 2024, while IBM X‑Force’s 2025 Cost of a Data Breach study reported an average total cost of $4.45 million—up 3 % year‑over‑year. Notably, 71 % of those incidents were traced to human error, and 60 % involved cloud‑service misconfigurations, underscoring that compliance check‑lists alone no longer guarantee safety.&lt;/p&gt;

&lt;p&gt;A deeper dive shows that the most common technical failures are insecure default settings, missing encryption keys, and unpatched third‑party libraries. On the human side, credential‑stuffing, phishing, and privileged‑account abuse account for the bulk of accidental disclosures. The convergence of these factors explains why organizations that rigorously document privacy rules still ship leaks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deep Dive Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DBIR 2025 aggregates data from 70 % of Fortune 500 firms, providing a statistically significant view of breach vectors across sectors. X‑Force augments this with cost modeling that isolates direct remediation, regulatory fines, and reputational impact.&lt;/li&gt;
&lt;li&gt;Correlation analysis across the two reports shows a 0.68 Pearson coefficient between the frequency of cloud misconfigurations and overall breach cost, indicating that each misconfiguration adds roughly $150k to the incident’s financial footprint.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Real-World Engineering Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Capital One’s 2025 AWS S3 bucket exposure, caused by an overlooked public ACL, resulted in 100 GB of customer data being scraped within hours.&lt;/p&gt;

&lt;p&gt;Accenture’s 2026 insider leak, where a senior consultant inadvertently emailed a confidential client spreadsheet to the wrong distribution list, highlighting the persistent risk of human error even in highly trained teams.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Observability Platforms for Privacy Compliance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Modern privacy programs rely on observability pipelines that surface policy violations the moment data leaves a trusted boundary. OpenTelemetry provides a vendor‑agnostic telemetry SDK, while Splunk and the Elastic Stack supply powerful ingestion, indexing, and alerting layers that can correlate logs, traces, and metrics to detect GDPR or CCPA breaches in real time across multi‑cloud deployments.&lt;/p&gt;

&lt;p&gt;By instrumenting services with OpenTelemetry and routing telemetry to Splunk or Elastic, security teams gain a unified view of who accessed what, when, and under which policy context. This enables automated compliance dashboards, anomaly‑driven alerts, and audit‑ready evidence without retroactive forensics, turning privacy compliance from a periodic audit into a continuous, observable control.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deep Dive Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenTelemetry Collector acts as a programmable edge: receivers ingest traces, logs, and metrics; processors can enrich or scrub PII; exporters forward to Splunk HEC or Elastic Beats. This decouples application code from vendor specifics and lets you swap back‑ends with a single YAML change.&lt;/li&gt;
&lt;li&gt;Splunk’s Privacy Guard app and Elastic’s Security Solution both ship pre‑built rule sets that match on OpenTelemetry attributes. They support real‑time correlation across data streams, auto‑generation of GDPR‑required Data Subject Access Request (DSAR) logs, and integration with SOAR platforms for automated remediation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Real-World Engineering Examples&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;At a fintech firm, the OpenTelemetry Collector filtered "account_number" fields with a SHA‑256 hash before sending logs to Splunk, where a Splunk SPL query flagged any access to "data.category=PII" without a matching "policy.id=GDPR-1" tag, triggering a PagerDuty incident within seconds.&lt;/li&gt;
&lt;li&gt;A global e‑commerce retailer deployed Elastic APM agents with OpenTelemetry SDKs; Elastic Watcher rules detected anomalous read spikes on "user.email" fields from an unapproved IP range, automatically creating a case in Elastic Security and revoking the offending API key via a webhook.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;LLM‑Assisted Code Comment Auditing&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LLM‑assisted comment auditing injects a large‑language model into the developer workflow to scan natural‑language annotations for leakage of secrets, internal APIs, or privacy‑critical logic. By treating comments as first‑class code artifacts, tools such as CodeGuard AI query the model in real time during pull‑request analysis, flagging patterns that match a curated risk taxonomy.&lt;/li&gt;
&lt;li&gt;The audit loop typically runs in CI/CD, where the LLM evaluates each diff, scores the comment against a confidence threshold, and either annotates the PR with a remediation suggestion or blocks the merge. Because the model is hosted on a secure, isolated inference endpoint, no raw source is transmitted to third‑party services, satisfying enterprise data‑sovereignty requirements.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Deep Dive Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Model pipeline – the comment text is tokenized, passed through a 7‑billion‑parameter transformer that has been instruction‑tuned for data‑leak detection. The model outputs a risk vector (PII, credential, business‑logic) which is then mapped to policy rules defined in a YAML manifest.&lt;/li&gt;
&lt;li&gt;Policy enforcement – each rule specifies a severity, a confidence cutoff, and an optional auto‑remediation script. When a comment exceeds the threshold, the CI step injects a review comment with a code‑action link that either redacts the offending text or suggests a placeholder
.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Real-World Engineering Examples&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;At a mid‑size fintech, CodeGuard AI caught a developer comment that referenced a hard‑coded OAuth client ID, automatically replacing it with a placeholder and preventing a GDPR‑related breach.&lt;/li&gt;
&lt;li&gt;An open‑source library using GitGuardian’s comment scanner discovered a stray “TODO: remove test key” note in the README, prompting a rapid upstream patch before the repository was cloned millions of times.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Secure CI/CD Pipelines with Privacy Gates&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In modern regulated environments, privacy compliance cannot be an after‑thought. GDPR, CCPA, and emerging AI‑data statutes require that any personal data leaving source control be vetted before it reaches production. Embedding privacy gates directly into the CI/CD pipeline ensures that violations are caught at the earliest possible stage, reducing remediation cost and preventing costly data leaks. By treating privacy as a first‑class quality gate—on par with unit tests and linting—organizations shift risk left, automate evidence collection for auditors, and create a repeatable “privacy‑as‑code” posture that scales across dozens of micro‑services and repositories.&lt;/p&gt;

&lt;p&gt;GitHub Advanced Security (GHAS) provides native secret scanning, code‑QL‑based data‑flow analysis, and custom policy bundles that can flag PII patterns in pull requests. When paired with a GitOps engine like Argo CD, the pipeline can enforce those findings as deployment blockers. Argo CD’s integration with Open Policy Agent (OPA) Gatekeeper lets teams codify privacy rules as Rego policies that evaluate Helm values, Kubernetes manifests, and even container images before they are applied. The result is a seamless, automated gate: a PR that passes GHAS scans proceeds to Argo CD, which then validates the manifest against OPA policies; any violation aborts the sync and raises a ticket for remediation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deep Dive Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub secret scanning can be extended with a .github/secret-scanning.yml file that defines regexes for proprietary identifiers, ensuring that even custom data formats are caught at PR time.&lt;/li&gt;
&lt;li&gt;Argo CD uses an OPA ConstraintTemplate that inspects Helm values for fields named &lt;em&gt;email&lt;/em&gt;, &lt;em&gt;ssn&lt;/em&gt;, or &lt;em&gt;dob&lt;/em&gt; and rejects any manifest where those fields are hard‑coded instead of sourced from a sealed‑secret.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Real-World Engineering Examples&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A fintech startup integrated GHAS with a custom regex for IBAN numbers. Every pull request that introduced a new account‑number literal was automatically marked with a “privacy‑violation” label, preventing accidental exposure of customer banking data.&lt;/li&gt;
&lt;li&gt;A telehealth provider deployed an Argo CD Application that referenced a ConstraintTemplate enforcing that any Kubernetes Secret of type Opaque must contain only base64‑encoded references to HashiCorp Vault secrets, eliminating plaintext credential leaks during Helm releases.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Viral Leak Case Studies and Their Tech Stacks&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;High‑profile leaks in 2026 have exposed how modern cloud‑native stacks can become attack surfaces when privacy rules are enforced only on paper.&lt;/li&gt;
&lt;li&gt;By dissecting the architectures behind the ChatChain AI breach, the FinTechX transaction dump, and the MetaVerse VR exposure, we can extract concrete safeguards for any organization.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Deep Dive Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The ChatChain breach leveraged a misconfigured AWS S3 bucket combined with an over‑privileged IAM role provisioned via Terraform, allowing a scraped API key to enumerate all user embeddings.&lt;/li&gt;
&lt;li&gt;FinTechX’s leak originated from a Kafka Connect sink that wrote raw transaction logs to an unsecured Azure Blob container, bypassing their GDPR masking layer because the connector’s schema registry was outdated.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Real-World Engineering Examples&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ChatChain AI (March 2026) – 12 TB of conversational embeddings exposed due to a missing bucket policy; the stack included Kubernetes, Istio, Terraform, and S3.&lt;/li&gt;
&lt;li&gt;FinTechX (July 2026) – Real‑time transaction stream leaked to the public internet; stack comprised Confluent Kafka, Azure Event Hubs, Snowflake, and a custom Python ETL runner.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;RegTech Platforms Dominating 2026&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The compliance market in 2026 is concentrated around a few mature SaaS suites—OneTrust and TrustArc—while a wave of open‑source frameworks such as OPA‑Compliance and OpenReg are gaining traction among privacy‑by‑design teams. Vendors now bundle AI‑driven rule extraction, automated data‑map discovery, and real‑time enforcement hooks that can be invoked directly from CI/CD pipelines.&lt;/p&gt;

&lt;p&gt;Open‑source alternatives differentiate themselves through extensibility: policy logic lives in declarative languages (Rego, CEL) and can be version‑controlled alongside code, enabling immutable compliance-as‑code. However, they require in‑house expertise to manage policy lifecycle, audit trails, and jurisdiction‑specific rule sets, which the commercial platforms abstract away with managed rule libraries and regulatory calendars.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deep Dive Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OneTrust’s Enforcement Engine now supports webhook triggers that push violation events to a Kafka topic, allowing downstream micro‑services to abort processing before PII leaves the trust boundary.&lt;/li&gt;
&lt;li&gt;TrustArc introduced a policy‑as‑code SDK that compiles its proprietary rule DSL into Open Policy Agent bundles, giving customers the flexibility to run the same logic on‑premise or in edge devices.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Real-World Engineering Examples&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A global fintech integrated OneTrust’s webhook with its fraud‑detection pipeline, automatically flagging and quarantining any transaction that matched a newly added cross‑border data‑transfer rule within seconds.&lt;/li&gt;
&lt;li&gt;A health‑tech startup adopted OPA‑Compliance, storing all privacy rules in a GitOps repo; a nightly CI job regenerated policy bundles and performed a drift check against the regulatory catalog, cutting audit prep time by 70 %.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;*&lt;em&gt;Data Masking, Tokenization, and Synthetic Data&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Modern masking engines have evolved from static column‑level redaction to context‑aware, on‑the‑fly transformation pipelines. In 2026, solutions such as Delphix Dynamic Data Platform and IBM Guardium Data Masking embed a policy engine that evaluates the requester’s role, query intent, and data sensitivity tags before applying reversible tokenization, format‑preserving encryption, or deterministic masking. The token vault lives behind a hardened micro‑service, exposing only opaque identifiers while preserving referential integrity for downstream analytics. Because the transformation occurs at the data‑access layer, production workloads remain untouched and compliance audits can verify that no raw PII ever leaves the protected zone.&lt;/p&gt;

&lt;p&gt;Synthetic data generators now complement masking by creating entirely artificial records that retain statistical properties of the source. Model‑based approaches—e.g., GAN‑driven tools from Mostly AI or the open‑source SDV library—train on masked datasets, then emit rows that are provably non‑identifiable under differential privacy budgets. This enables developers to spin up full‑scale dev/test environments, run AI pipelines, or share data with partners without exposing any real customer attributes. When a breach occurs, the leaked artifact is either a reversible token (which can be revoked instantly) or a synthetic record that offers no direct re‑identification path, dramatically shrinking the blast radius.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deep Dive Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Token vaults are typically backed by a distributed ledger (e.g., Apache Cassandra with Raft consensus) that guarantees tamper‑evidence and high availability. Each token request triggers a lookup that returns a format‑preserving token, allowing downstream systems to continue using legacy schemas without code changes.&lt;/li&gt;
&lt;li&gt;Synthetic generators must balance fidelity and privacy. Setting a differential privacy epsilon between 0.1 and 0.5 yields data that mirrors marginal distributions while ensuring the probability of re‑identifying any individual stays below regulatory thresholds (e.g., GDPR’s ‘reasonable likelihood’ test).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Real-World Engineering Examples&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A major North American bank integrated Guardium Dynamic Data Masking into its API gateway. When a misconfigured endpoint exposed transaction logs, the leaked payload contained only tokenized account numbers that were revoked within minutes, preventing fraud.&lt;/li&gt;
&lt;li&gt;A telehealth startup adopted Mostly AI’s synthetic patient dataset to train a diagnostic model. After a cloud storage breach, the attacker obtained 1.2 M synthetic records; a post‑mortem showed zero overlap with real patient identifiers, satisfying HIPAA’s de‑identification rule.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Decentralized Identity &amp;amp; Self‑Sovereign Data Governance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The emerging wave of Self‑Sovereign Identity (SSI) frameworks—DIDs, Verifiable Credentials (VCs) and associated registries—offers a cryptographic enforcement layer that can embed privacy rules directly into the identity fabric. By shifting control of personal data from siloed platforms to the user’s wallet, regulators can mandate consent, purpose limitation, and revocation at the protocol level, making non‑compliant leaks technically impossible without breaking the chain of trust.&lt;/p&gt;

&lt;p&gt;As 2026 sees widespread adoption of DID methods (did:web, did:ion, did:key) across cloud providers, fintech, and health ecosystems, privacy‑by‑design becomes a built‑in feature rather than an after‑the‑fact audit. Enterprises can now encode GDPR‑style obligations into credential schemas, and automated policy engines can verify compliance before any data exchange occurs, turning privacy enforcement into a real‑time, decentralized transaction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deep Dive Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A DID Document contains public keys, service endpoints, and authentication methods that are signed by the controller’s private key. When a holder presents a VC, the verifier resolves the DID, validates the signature chain, and evaluates any embedded privacy policies expressed in JSON‑LD using the W3C Data Privacy Vocabulary (DPV). This enables automated enforcement of consent scopes, expiration, and revocation without human intervention.&lt;/li&gt;
&lt;li&gt;SSI ecosystems integrate with decentralized storage (IPFS, Ceramic) to host encrypted credential payloads. The holder retains decryption keys, and the issuer can rotate keys or revoke credentials by publishing a revocation bitmap to the ledger, which verifiers must check in real time. This model eliminates centralized data lakes that are typical sources of leaks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion &amp;amp; Next Steps&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The incident began with a well‑intentioned privacy rule designed to block any export of personally identifiable information. After writing the rule, the team enforced it through automated tests and added extensive comments to document its purpose, believing the safeguard was airtight.&lt;/li&gt;
&lt;li&gt;However, a later performance‑driven change introduced a shortcut that inadvertently disabled the rule in the release branch. The oversight slipped through code review, and the build was shipped, exposing user data to external services. This highlights how even documented safeguards can be nullified by unchecked merges or rushed deployments.&lt;/li&gt;
&lt;li&gt;To prevent repeat occurrences, organizations must couple static rule enforcement with continuous monitoring, enforce merge‑gate policies, and treat privacy controls as immutable code. Regular audits, automated policy validation, and a culture that prioritises security over speed are essential to protect user trust.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Found this deep-dive helpful? Explore more architecture breakdowns, engineering tutorials, and tech insights over at my platform:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.devtechpulse.me/" rel="noopener noreferrer"&gt;🔗 TechPulse&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Building and scaling software architectures, one blueprint at a time.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>softwaredevelopment</category>
      <category>puppet</category>
    </item>
    <item>
      <title>Your AI makes decisions. We make sure every data move obeys the law. Try the demo at viradotech.com and give us your honest take.</title>
      <dc:creator>virgiljunioradoleyine-stack</dc:creator>
      <pubDate>Sat, 22 Aug 2026 16:38:09 +0000</pubDate>
      <link>https://dev.to/viradotech/your-ai-makes-decisions-we-make-sure-every-data-move-obeys-the-law-try-the-demo-at-viradotechcom-2l95</link>
      <guid>https://dev.to/viradotech/your-ai-makes-decisions-we-make-sure-every-data-move-obeys-the-law-try-the-demo-at-viradotechcom-2l95</guid>
      <description></description>
      <category>ai</category>
      <category>productivity</category>
      <category>puppet</category>
    </item>
    <item>
      <title>Puppet Core 9.0 and 8.21 Released: Ruby 4.0, OpenSSL 3.5, Platform Changes, and Security Hardening</title>
      <dc:creator>Jason St-Cyr</dc:creator>
      <pubDate>Thu, 20 Aug 2026 15:26:21 +0000</pubDate>
      <link>https://dev.to/puppet/puppet-core-90-and-821-released-ruby-40-openssl-35-platform-changes-and-security-hardening-4294</link>
      <guid>https://dev.to/puppet/puppet-core-90-and-821-released-ruby-40-openssl-35-platform-changes-and-security-hardening-4294</guid>
      <description>&lt;p&gt;Did you know there's a new major version in town for Puppet Core? You might have heard about it through the grapevine or in the &lt;a href="https://www.puppet.com/resources/events/webinars/puppet-9" rel="noopener noreferrer"&gt;Are You Ready for Puppet 9?&lt;/a&gt; webinar that &lt;a class="mentioned-user" href="https://dev.to/gpatton"&gt;@gpatton&lt;/a&gt; and I recently hosted. The wait is over and Puppet Core 9.0.0 is now available alongside Puppet Core 8.21.0.&lt;/p&gt;

&lt;p&gt;Puppet Core 9 introduces significant runtime and platform changes, moving to Ruby 4.0, OpenSSL 3.5, and other changes, but the essential Puppet under the hood is largely unchanged from Puppet 8. The majority of upgrade effort will center on Ruby 4 compatibility and runtime dependency changes rather than Puppet language changes.&lt;/p&gt;

&lt;p&gt;If you are staying on the Puppet Core 8.x release track, the latest Puppet Core 8.21 delivers the basic support fixes and security improvements you might need without the major dependency changes found in Puppet Core 9.&lt;/p&gt;

&lt;h2&gt;
  
  
  What matters most for the admins
&lt;/h2&gt;

&lt;p&gt;Before upgrading to Puppet Core 9:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Test custom facts, functions, types, and providers against Ruby 4.0.&lt;/li&gt;
&lt;li&gt;Validate any Forge modules you use for Ruby 4 compatibility.&lt;/li&gt;
&lt;li&gt;Review integrations that depend on OpenSSL behavior.&lt;/li&gt;
&lt;li&gt;Verify any workflows that still rely on SHA-1.&lt;/li&gt;
&lt;li&gt;Confirm managed nodes are running supported operating systems.&lt;/li&gt;
&lt;li&gt;Review any custom code that depends on PSON or &lt;code&gt;multi_json&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Check deferred function behavior if you have custom types or providers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Perforce will be rolling out updates to Puppetlabs modules on the Forge based on their &lt;a href="https://dev.to/puppet/puppetlabs-modules-now-have-tiered-review-cycles-42ob"&gt;priority tier&lt;/a&gt; and dependencies. The first batch of these should be rolling out soon.&lt;/p&gt;




&lt;h2&gt;
  
  
  Puppet Core 9.0 highlights
&lt;/h2&gt;

&lt;p&gt;These are a few highlights I pulled from the release notes. Make sure to reference the &lt;a href="https://help.puppet.com/core/current/Content/PuppetCore/PuppetReleaseNotes/release_notes_puppet_x-9-0-0.htm" rel="noopener noreferrer"&gt;full 9.0 release notes&lt;/a&gt; to get all the details about what has changed!&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ruby updated to 4.0.5:&lt;/strong&gt; With a new Ruby baseline some deprecated syntax from older Ruby versions will no longer be compatible. This is the primary focus area for upgrades as you will want to validate your custom code and modules. The latest &lt;a href="https://help.puppet.com/pdk/current/topics/release_notes_pdk.htm#PDK380" rel="noopener noreferrer"&gt;PDK 3.8.0&lt;/a&gt; introduced some Ruby 4 validators to help you update your syntax while you are still on Puppet Core 8, before upgrading to Puppet Core 9. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;OpenSSL updated to 3.5.7:&lt;/strong&gt; This lays the groundwork for supporting post-quantum cryptography (PQC) and moves to TLS 1.3 as the default protocol version. This upgrade will resolve several OpenSSL-related CVEs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Puppet Server has updated baseline components:&lt;/strong&gt; As part of the move to JRuby 10.1, Puppet Server is now updated to require minimum JDK 21. The embedded web server is now using Jetty 12. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;PSON support removed:&lt;/strong&gt; You will need to migrate to a supported data format if your code has relied on PSON.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Deferred functions return to Puppet 7 behavior:&lt;/strong&gt; While Puppet Core 9 largely keeps the same underlying behavior as Puppet Core 8.x, there is one change worth noting about deferred functions. In older versions (like Puppet 7), &lt;code&gt;preprocess_deferred&lt;/code&gt; was enabled by default, but this was disabled by default in Puppet 8. In Puppet Core 9, &lt;code&gt;preprocess_deferred&lt;/code&gt; is now enabled by default again.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;UTF-8 encoding now used on Windows:&lt;/strong&gt; Puppet Core now uses UTF-8 as the default external encoding on Windows. You will want to look for any configuration files encoded in non-UTF-8 before upgrading.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These are just some highlights I pulled from the full list, I really recommend taking a look at the release notes to get a full picture.&lt;/p&gt;




&lt;h2&gt;
  
  
  Security hardening
&lt;/h2&gt;

&lt;p&gt;Both the 9.0 and 8.21 releases contain security-related fixes.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Stricter SSH key validation:&lt;/strong&gt; Puppet now rejects malformed SSH keys that previously passed validation. This includes invalid inputs such as embedded newline characters. The goal is to prevent unsafe content from being written to managed files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Improved autoloader validation:&lt;/strong&gt; The &lt;code&gt;puppet resource&lt;/code&gt; command now performs stricter validation of autoloader inputs. This change helps prevent unintended code loading through user-controlled values.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;curl updated to 8.21.0:&lt;/strong&gt; Both Puppet Core 9.0 and Puppet Core 8.21 update curl from 8.20.0 to 8.21.0. The update addresses numerous curl CVEs. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Admins who track dependency risk should review the release notes for the complete CVE list:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://help.puppet.com/core/current/Content/PuppetCore/PuppetReleaseNotes/release_notes_puppet_x-9-0-0.htm" rel="noopener noreferrer"&gt;Puppet Core 9.0 Release Notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://help.puppet.com/core/8/Content/PuppetCore/PuppetReleaseNotes/release_notes_puppet_x-8-21-0.htm" rel="noopener noreferrer"&gt;Puppet Core 8.21 Release Notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Platform updates
&lt;/h2&gt;

&lt;h3&gt;
  
  
  New agent platforms
&lt;/h3&gt;

&lt;p&gt;The following agent platforms are now supported in both Puppet Core 9.0 and 8.21:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rocky Linux 10 (x86_64)&lt;/li&gt;
&lt;li&gt;Alma Linux 10 (x86_64)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Operating systems removed from support
&lt;/h3&gt;

&lt;p&gt;Several end-of-life operating systems have been removed: Debian 10, macOS 13, RHEL 7, Ubuntu 18.04 and 20.04, and others. &lt;/p&gt;

&lt;p&gt;The official full list is &lt;a href="https://help.puppet.com/core/current/Content/PuppetCore/PuppetReleaseNotes/release_notes_puppet_x-9-0-0.htm#Deprecations" rel="noopener noreferrer"&gt;in the docs&lt;/a&gt;. The list in this article is not complete, so make sure to reference those notes to check your systems! &lt;/p&gt;

&lt;p&gt;If you need to keep using a platform that has been removed you should know there is an extended support option. Migrating to a more modern OS is likely the best path, but if you can't migrate just yet, make sure to &lt;a href="https://www.puppet.com/extended-agent-support" rel="noopener noreferrer"&gt;reach out to the team to get help with extended platform support&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Upgrade resources
&lt;/h2&gt;

&lt;p&gt;Before moving to Puppet Core 9, review the official upgrade documentation and release notes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://help.puppet.com/core/current/Content/PuppetCore/upgrading-from-puppet8-to-puppet9.htm" rel="noopener noreferrer"&gt;Puppet Core 9 upgrade documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://help.puppet.com/core/current/Content/PuppetCore/PuppetReleaseNotes/release_notes_puppet_x-9-0-0.htm" rel="noopener noreferrer"&gt;Puppet Core 9.0.0 release notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://help.puppet.com/core/8/Content/PuppetCore/PuppetReleaseNotes/release_notes_puppet_x-8-21-0.htm" rel="noopener noreferrer"&gt;Puppet Core 8.21.0 release notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.puppet.com/products/puppet-core/support-lifecycle" rel="noopener noreferrer"&gt;Puppet Core platform support lifecycle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://help.puppet.com/pdk/current/topics/release_notes_pdk.htm#PDK380" rel="noopener noreferrer"&gt;PDK 3.8.0 compatibility testing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Make sure to start your Puppet Core 9 compatibility testing early and send over any questions as you encounter issues so that the team can help!&lt;/p&gt;

</description>
      <category>puppet</category>
      <category>devops</category>
      <category>infrastructureascode</category>
    </item>
    <item>
      <title>Why Healthcare Software Needs a Different QA Bar Than Everything Else You've Built</title>
      <dc:creator>Ayushi Kumari</dc:creator>
      <pubDate>Tue, 18 Aug 2026 06:56:13 +0000</pubDate>
      <link>https://dev.to/ayushi_kumari_22cee92b18f/why-healthcare-software-needs-a-different-qa-bar-than-everything-else-youve-built-2nc0</link>
      <guid>https://dev.to/ayushi_kumari_22cee92b18f/why-healthcare-software-needs-a-different-qa-bar-than-everything-else-youve-built-2nc0</guid>
      <description>&lt;p&gt;Most engineers carry an intuitive sense of "good enough" QA from whatever domain they cut their teeth in — e-commerce, SaaS dashboards, internal tools. That instinct is dangerous the moment it gets applied unchanged to healthcare software, where the cost of a subtle bug isn't a support ticket or a refund. It can be a missed medication interaction, a delayed diagnosis, or a compliance violation with real legal consequences.&lt;/p&gt;

&lt;p&gt;Here's what actually has to change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Failure Modes Are Categorically Different&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In a typical SaaS product, a bug that shows a stale number on a dashboard is annoying. In a system tracking medication dosages, a stale or incorrectly calculated number can directly affect patient safety. The same class of bug — a caching issue, a rounding error, a race condition in concurrent writes — carries a wildly different severity depending on what data it touches.&lt;/p&gt;

&lt;p&gt;This means healthcare QA can't treat all features equally. A cosmetic UI bug on a marketing page and a calculation bug in a dosage calculator are not the same priority tier, even if they'd be treated similarly in a typical product backlog.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Edge Cases Aren't Edge Cases — They're Tuesday&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Healthcare data is messier than most systems are designed to expect. Patient records have missing fields because the information genuinely wasn't available at intake. Names have characters that break naive string validation. A single patient might have multiple records that need to be reconciled, or duplicate entries that shouldn't be merged automatically. What would be a rare edge case in a typical CRUD app is routine, everyday data in a clinical system.&lt;/p&gt;

&lt;p&gt;QA for healthcare software has to actively hunt for these patterns rather than treating them as improbable inputs unlikely to matter — because in this domain, they're the normal case, not the exception.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Compliance Isn't a Separate Checklist — It's a Testing Requirement&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;HIPAA (or equivalent regional regulations) isn't just a legal document to review once during planning. It has direct, testable implications: who can access which records, how access is logged, how long data is retained, what happens when a record needs to be permanently deleted versus archived. These aren't features to build and forget — they're behaviors that need explicit test coverage, the same way a payment flow needs test coverage for its critical paths.&lt;/p&gt;

&lt;p&gt;A permissions bug that lets the wrong role view a patient record isn't a minor defect in this context. It's a reportable incident with real regulatory consequences, which changes how much test coverage that logic actually deserves relative to a typical feature.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Concurrency Bugs Have Higher Stakes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Multiple clinicians updating the same patient record simultaneously — a nurse logging vitals while a doctor updates a treatment plan — is a routine occurrence in clinical settings, not a rare race condition. Systems that haven't been explicitly tested for concurrent writes to the same record can silently lose or overwrite critical updates, and because the failure is silent, it might not surface until someone notices a treatment plan doesn't match what was actually decided.&lt;/p&gt;

&lt;p&gt;This makes concurrency testing a first-class requirement rather than something addressed only if it happens to surface during normal testing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Audit Trails Need Their Own Test Suite&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Beyond the primary feature working correctly, healthcare systems typically need to prove who did what, when — an audit trail robust enough to hold up under regulatory review. It's not enough for the audit log to usually capture changes; gaps in the audit trail can themselves become a compliance finding, independent of whether the underlying feature worked correctly. This means the audit logging mechanism needs dedicated test coverage, not an assumption that it'll work because the primary code path was thoroughly tested.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Practical Shift in QA Priorities&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Compared to a typical SaaS QA process, healthcare software QA generally needs:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Explicit test coverage for permission boundaries, not just functional correctness&lt;/li&gt;
&lt;li&gt;Deliberate testing of messy, incomplete, and duplicate data, treated as the expected case rather than an edge case&lt;/li&gt;
&lt;li&gt;Concurrency testing on any record multiple roles can update simultaneously&lt;/li&gt;
&lt;li&gt;Dedicated tests for audit trail completeness, separate from tests of the feature the audit trail is logging&lt;/li&gt;
&lt;li&gt;A severity framework that weights patient-safety-adjacent bugs above cosmetic or convenience bugs, even when they'd rank similarly by engineering complexity alone&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;The Takeaway&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The technical skills required for healthcare software aren't fundamentally different from any other domain — the discipline around testing priorities and failure-mode awareness is what actually shifts. Teams that bring a generic SaaS QA mindset into healthcare software tend to catch the bugs that would matter anywhere and miss the ones that matter specifically because of what's at stake here. Getting this right usually means building with a development partner that's specifically experienced in healthcare software, not just competent engineering applied without domain context.&lt;/p&gt;

&lt;p&gt;Anchor text used above: "a development partner that's specifically experienced in healthcare software" → links to &lt;a href="https://www.weboraz.com/industries/healthcare" rel="noopener noreferrer"&gt;https://www.weboraz.com/industries/healthcare&lt;/a&gt;&lt;/p&gt;

</description>
      <category>healthcare</category>
      <category>qa</category>
      <category>softwareengineering</category>
      <category>puppet</category>
    </item>
    <item>
      <title>PDK 3.8.0 now has Ruby validation to prepare for Puppet 9!</title>
      <dc:creator>Jason St-Cyr</dc:creator>
      <pubDate>Tue, 11 Aug 2026 12:53:45 +0000</pubDate>
      <link>https://dev.to/puppet/pdk-380-now-has-ruby-validation-to-prepare-for-puppet-9-2ici</link>
      <guid>https://dev.to/puppet/pdk-380-now-has-ruby-validation-to-prepare-for-puppet-9-2ici</guid>
      <description>&lt;p&gt;A new release is out for the Puppet Development Kit and it has some new additions like Debian 13 support, some security-related updates, and some new validation for Ruby syntax to help you get yourself ready for Puppet Core 9!&lt;/p&gt;

&lt;p&gt;The next releases of Puppet Core 9 and Puppet Enterprise 2026, due out soon, will be moving to Ruby 4. To help you get ready, you can start using this new version of PDK on your Puppet 8 installation to look for areas that might need updates.&lt;/p&gt;

&lt;p&gt;When you run &lt;code&gt;pdk validate&lt;/code&gt;, it can now identify changes you can make that will be safe to run on Puppet 8, but also will prepare your codebase for Puppet Core 9:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Code that uses legacy Ruby Hash#inspect formatting, for example &lt;code&gt;{:x=&amp;gt;1, "baz"=&amp;gt;3}&lt;/code&gt; . Legacy formatting can cause module code to fail after you upgrade to Puppet Core 9.&lt;/li&gt;
&lt;li&gt;Ruby 4 syntax compatibility checks.&lt;/li&gt;
&lt;li&gt;The Security/Open Rubocop flags Ruby patterns associated with &lt;code&gt;Kernel#open&lt;/code&gt; and &lt;code&gt;IO.open&lt;/code&gt; invocation that are no longer valid in Ruby 4. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once Puppet Core 9 is out, you'll be able to do additional validation, but this should help you get started finding those places where the syntax might need some updates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Full release notes:&lt;/strong&gt; &lt;a href="https://help.puppet.com/pdk/current/topics/release_notes_pdk.htm#PDK380" rel="noopener noreferrer"&gt;https://help.puppet.com/pdk/current/topics/release_notes_pdk.htm#PDK380&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Download PDK:&lt;/strong&gt; &lt;a href="https://forge.puppet.com/resources/pdk" rel="noopener noreferrer"&gt;https://forge.puppet.com/resources/pdk&lt;/a&gt;&lt;/p&gt;

</description>
      <category>puppet</category>
    </item>
    <item>
      <title>Vox Pupuli Container Statistics</title>
      <dc:creator>Robert Waffen</dc:creator>
      <pubDate>Sat, 08 Aug 2026 11:13:05 +0000</pubDate>
      <link>https://dev.to/voxpupuli/vox-pupuli-container-statistics-ph3</link>
      <guid>https://dev.to/voxpupuli/vox-pupuli-container-statistics-ph3</guid>
      <description>&lt;p&gt;Hello everyone! &lt;br&gt;
I am excited to share some updates regarding container statistics.&lt;/p&gt;

&lt;p&gt;We now have a page where we display the statistics for all our containers.&lt;br&gt;
You can find it at &lt;a href="https://voxpupuli.org/container_statistics/" rel="noopener noreferrer"&gt;https://voxpupuli.org/container_statistics/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It is built from &lt;a href="https://github.com/voxpupuli/container_statistics" rel="noopener noreferrer"&gt;https://github.com/voxpupuli/container_statistics&lt;/a&gt; and is updated every 24 hours.&lt;/p&gt;
&lt;h2&gt;
  
  
  Getting the Downloads
&lt;/h2&gt;

&lt;p&gt;For the download count, it scrapes the package HTML pages for the containers.&lt;br&gt;
Sadly, this does not work with GraphQL or the API, so we have to use the HTML pages for now.&lt;br&gt;
GraphQL and the API do expose a download count, but it is only for GitHub's legacy container system and not for ghcr.io &lt;code&gt;¯\_(ツ)_/¯&lt;/code&gt;.&lt;br&gt;
If someone has an idea for a better way to get the download count from ghcr.io, please let me know.&lt;br&gt;
The API is not very talkative about this :/&lt;/p&gt;
&lt;h2&gt;
  
  
  Getting the CVEs
&lt;/h2&gt;

&lt;p&gt;For CVEs, we run two scanners: the wildly popular Trivy scanner and Grype from Anchore.&lt;br&gt;
Both are run against the latest version of each container, and the results are displayed on the statistics page.&lt;br&gt;
For Grype, we downplay the nvd/cpe entries, as they tend to be false positives.&lt;br&gt;
They are still displayed, but specifically marked as nvd/cpe entries, so you can filter them out if you want to.&lt;/p&gt;
&lt;h2&gt;
  
  
  How the statistics are generated
&lt;/h2&gt;

&lt;p&gt;The statistics can be generated by running the &lt;code&gt;bin/container-statistics&lt;/code&gt; script in the container_statistics repository.&lt;br&gt;
It needs a configuration file, which is located in the &lt;code&gt;config&lt;/code&gt; directory.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;containers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;openvoxproject/openbolt&lt;/span&gt;
    &lt;span class="na"&gt;registry&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ghcr.io&lt;/span&gt;
    &lt;span class="na"&gt;tags&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;latest&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;openvoxproject/openvoxagent&lt;/span&gt;
    &lt;span class="na"&gt;registry&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ghcr.io&lt;/span&gt;
    &lt;span class="na"&gt;tags&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;latest&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We run it in GitHub Actions and push the results to the gh-pages branch, which is then displayed on the statistics page.&lt;br&gt;
Scanning is also done in GitHub Actions.&lt;br&gt;
The whole process is automated and runs every 24 hours, so the statistics are always up to date.&lt;br&gt;
See the GitHub Actions workflow in the container_statistics repository (&lt;a href="https://github.com/voxpupuli/container_statistics/blob/main/.github/workflows/container-statistics.yml" rel="noopener noreferrer"&gt;.github/workflows/container-statistics.yml&lt;/a&gt;) for more details.&lt;/p&gt;

&lt;p&gt;You can run it locally and generate the statistics yourself.&lt;br&gt;
You will need to have the scanners installed and available in your path.&lt;/p&gt;
&lt;h2&gt;
  
  
  CLI Commands
&lt;/h2&gt;
&lt;h3&gt;
  
  
  bin/container-statistics --download-report
&lt;/h3&gt;

&lt;p&gt;This will display the downloads for all containers in a table format.&lt;br&gt;
This will live-scrape the HTML pages for the containers, so it might take a while to run.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;bin/container-statistics --download-report

CONTAINER                             TOTAL DOWNLOADS
------------------------------------  ---------------
ghcr.io/openvoxproject/openbolt                 1,504
ghcr.io/openvoxproject/openvoxagent            11,814
ghcr.io/openvoxproject/openvoxdb              157,774
ghcr.io/openvoxproject/openvoxserver          151,344
ghcr.io/voxpupuli/commitlint                      756
ghcr.io/voxpupuli/onceover                      4,248
ghcr.io/voxpupuli/r10k-webhook                  7,738
ghcr.io/voxpupuli/r10k                         22,548
ghcr.io/voxpupuli/renovate                      5,551
ghcr.io/voxpupuli/semantic-release              7,870
ghcr.io/voxpupuli/voxbox                      131,841
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  bin/container-statistics --cve-report
&lt;/h3&gt;

&lt;p&gt;This will display the CVEs for all containers in a table format.&lt;br&gt;
It depends on the scanners being installed and having been run at least once, so that the results are available in the cache.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;bin/container-statistics --cve-report
CONTAINER                                           CRITICAL  HIGH  MEDIUM  LOW  UNKNOWN  TOTAL
--------------------------------------------------  --------  ----  ------  ---  -------  -----
ghcr.io/openvoxproject/openbolt:latest                     1     4       2    1        -      8
ghcr.io/openvoxproject/openvoxagent:latest                 -     7      58    7        2     74
ghcr.io/openvoxproject/openvoxdb:latest                    -     6      79    9        2     96
ghcr.io/openvoxproject/openvoxdb:latest-alpine             -     1       -    -        -      1
ghcr.io/openvoxproject/openvoxserver:latest                2    49     634  100        4    789
ghcr.io/openvoxproject/openvoxserver:latest-alpine         -     1       -    -        -      1
ghcr.io/voxpupuli/commitlint:latest                        1     6       5    2        -     14
ghcr.io/voxpupuli/onceover:latest                          1     4       2    1        -      8
ghcr.io/voxpupuli/r10k-webhook:latest                      3    41      35    2        7     88
ghcr.io/voxpupuli/r10k:latest                              -     8       5    -        1     14
ghcr.io/voxpupuli/renovate:latest                          -     1       -    -        -      1
ghcr.io/voxpupuli/semantic-release:latest                  1     6       8    2        -     17
ghcr.io/voxpupuli/voxbox:latest                            -     -       -    -        -      -
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;First published at: &lt;a href="https://voxpupuli.org/blog/2026/08/07/container-statistics/" rel="noopener noreferrer"&gt;https://voxpupuli.org/blog/2026/08/07/container-statistics/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>containers</category>
      <category>voxpupuli</category>
      <category>openvox</category>
      <category>puppet</category>
    </item>
    <item>
      <title>Puppetlabs Modules Roundup - July 2026</title>
      <dc:creator>Jason St-Cyr</dc:creator>
      <pubDate>Thu, 06 Aug 2026 12:19:41 +0000</pubDate>
      <link>https://dev.to/puppet/puppetlabs-modules-roundup-july-2026-3325</link>
      <guid>https://dev.to/puppet/puppetlabs-modules-roundup-july-2026-3325</guid>
      <description>&lt;p&gt;July 2026 brought 17 Puppetlabs module releases, headlined by a fairly large Continuous Delivery release. cd4peadm 5.16.0 added external PostgreSQL database support and a configurable image pull policy, and closes 11 CVEs, alongside a breaking change to commit status contexts. More modules dropped Puppet 7 support, some others picked up stdlib 10, and Windows Server 2025 support started rolling out into the modules. This roundup pulls the most important changes into one place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Highlighted Updates
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Continuous Delivery Adds External Databases, Configurable Image Pull Policies, and Closes 11 CVEs
&lt;/h3&gt;

&lt;p&gt;cd4peadm 5.16.0 is the biggest release of the month. It adds support for pointing Continuous Delivery at an externally managed PostgreSQL database. That could be a self-managed instance, Amazon RDS for PostgreSQL, or Amazon Aurora. This externally managed db can be used instead of the database CD manages internally, giving operators control over durability, backups, and high availability. It also adds a configurable &lt;code&gt;image_pull_policy&lt;/code&gt; option for job templates (&lt;code&gt;Always&lt;/code&gt;/&lt;code&gt;IfNotPresent&lt;/code&gt;/&lt;code&gt;Never&lt;/code&gt;) and removes the &lt;code&gt;docker.io&lt;/code&gt; fallback when using Podman; the matching cd4pe_jobs 1.7.4 release adds the same task parameter and fallback removal, so upgrade both together.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;BREAKING:&lt;/strong&gt; Commit status contexts now include the pipeline name (&lt;code&gt;cd-pe/&amp;lt;pipelineName&amp;gt;/stage-&amp;lt;N&amp;gt;&lt;/code&gt; instead of &lt;code&gt;cd-pe/stage-&amp;lt;N&amp;gt;&lt;/code&gt;). Review any branch protection rules or required status checks that reference the old format.&lt;/li&gt;
&lt;li&gt;This release also closed 11 CVEs across opentelemetry, NGINX, jetty, jackson, log4j, postgresql, golang.org/x/sys, and react-router.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Puppet 7 Support Dropped
&lt;/h3&gt;

&lt;p&gt;Five modules dropped Puppet 7 support in major version bumps: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;haproxy, iis, mount_iso, scheduled_task, sslcertificate.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There were all released as major version bumps to ensure that users still working on upgrading from Puppet 7 can stay pinned on the previous major version releases. &lt;/p&gt;

&lt;p&gt;In related news, postgresql 10.6.3 restored the Puppet 7 support that 10.6.2 broke in a previous release; see its entry below.&lt;/p&gt;

&lt;h3&gt;
  
  
  stdlib 10.x Rollout Continues
&lt;/h3&gt;

&lt;p&gt;Following June's stdlib 10.x rollout, four more modules now allow the puppetlabs-stdlib dependency to move to 10.x: haproxy, mount_iso, puppet_authorization, and sslcertificate. haproxy also widens its concat constraint to 10.x.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Affected modules: haproxy, mount_iso, puppet_authorization, sslcertificate.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Windows Server 2025 Support Added
&lt;/h3&gt;

&lt;p&gt;Three Windows-focused modules added support for Windows Server 2025 this month: scheduled_task, windows_env, and windows_eventlog. These now all run acceptance testing against the 2025 version of the OS, in addition to other supported Windows versions.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Updates Happened to Puppetlabs Modules in July 2026?
&lt;/h2&gt;

&lt;p&gt;The following is an alphabetical listing of modules which received updates in July 2026. If a module had multiple versions released, the updates are collected together, numbered with the "latest" version available.&lt;/p&gt;




&lt;h3&gt;
  
  
  apache 13.3.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-07-23 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/apache" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Added OWASP CRS v4 support on modern Enterprise Linux (EL10) while preserving existing EL7/8/9 behaviour.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(MODULES-11857) Scaffold OWASP CRS v4 support on EL10 via crs_source enum &lt;a href="https://github.com/puppetlabs/puppetlabs-apache/pull/2637" rel="noopener noreferrer"&gt;#2637&lt;/a&gt; (&lt;a href="https://github.com/SugatD" rel="noopener noreferrer"&gt;SugatD&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  cd4pe_jobs 1.7.4
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-07-28 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/cd4pe_jobs" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Adds the same configurable &lt;code&gt;image_pull_policy&lt;/code&gt; task parameter and Podman fallback removal shipping in cd4peadm 5.16.0 — upgrade both together to get matching behavior.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A new optional &lt;code&gt;image_pull_policy&lt;/code&gt; task parameter controls whether the container image is pulled before a job runs: &lt;code&gt;Always&lt;/code&gt; (the default, and the previous behavior) pulls on every run; &lt;code&gt;IfNotPresent&lt;/code&gt; pulls only when the image is absent from the local runtime; &lt;code&gt;Never&lt;/code&gt; skips the pull entirely and relies on the locally present image. Presence is checked with &lt;code&gt;docker image inspect&lt;/code&gt; / &lt;code&gt;podman image exists&lt;/code&gt;. Omitting the parameter keeps the existing pull-every-run behavior.&lt;/li&gt;
&lt;li&gt;The module no longer retries a failed image pull against &lt;code&gt;docker.io&lt;/code&gt;. Image names are now pulled exactly as given. If you rely on unqualified image names (e.g. &lt;code&gt;nginx&lt;/code&gt;, &lt;code&gt;myuser/myimage&lt;/code&gt;) on a Podman host, add &lt;code&gt;docker.io&lt;/code&gt; to &lt;code&gt;unqualified-search-registries&lt;/code&gt; in &lt;code&gt;registries.conf&lt;/code&gt;, or use a fully-qualified name.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  cd4peadm 5.16.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-07-29 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/cd4peadm" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;The changes this month added external PostgreSQL database support, a configurable image pull policy, source control token management improvements, and closed 11 CVEs. There is also a breaking change to commit status contexts — see below (and the linked release notes).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Added support for external databases. You can now point Continuous Delivery at a PostgreSQL instance you operate yourself, Amazon RDS for PostgreSQL, Amazon Aurora (PostgreSQL-compatible), or a self-managed PostgreSQL server, instead of the database CD manages for you. This gives you control over durability, backups, and high availability. You can configure external mode on a fresh install or migrate an existing managed install.&lt;/li&gt;
&lt;li&gt;Added a feature to Continuous Delivery job templates so you can set an image pull policy per job (&lt;code&gt;Always&lt;/code&gt;, &lt;code&gt;IfNotPresent&lt;/code&gt;, or &lt;code&gt;Never&lt;/code&gt;). In an air-gapped environment, for example, setting the policy to &lt;code&gt;Never&lt;/code&gt; stops Continuous Delivery's attempts to reach out to the internet for the image.&lt;/li&gt;
&lt;li&gt;Updated the &lt;strong&gt;Source Control&lt;/strong&gt; settings page to show when a configured Personal Access Token (PAT) expires on each connected GitHub, GitHub Enterprise, and GitLab integration card. Tokens that have already expired or will expire within 30 days are clearly flagged so you can renew them before they cause failures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BREAKING:&lt;/strong&gt; Commit status contexts now include the pipeline name (&lt;code&gt;cd-pe/&amp;lt;pipelineName&amp;gt;/stage-&amp;lt;N&amp;gt;&lt;/code&gt; instead of &lt;code&gt;cd-pe/stage-&amp;lt;N&amp;gt;&lt;/code&gt;), which prevents collisions when multiple pipelines report status for the same commit. Review any branch protection rules or required status checks that reference the old format.&lt;/li&gt;
&lt;li&gt;11 CVEs addressed, including opentelemetry, NGINX, jetty, jackson, log4j, postgresql, golang.org/x/sys, and react-router.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check the official &lt;a href="https://help.puppet.com/cdpe/current/Content/UserGuide/CDPE/ReleaseNotes/cd_release_notes.htm#Version5160" rel="noopener noreferrer"&gt;release notes for cd4peadm 5.16.0&lt;/a&gt; for the full details.&lt;/p&gt;




&lt;h3&gt;
  
  
  comply 3.8.1
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-07-03 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/comply" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;A Security Compliance Management maintenance release that did not have any new CVE fixes this time and was mostly operational and licensing improvements.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Increased the CIS-CAT Pro Assessor license expiry time; licenses are now good for a full year.&lt;/li&gt;
&lt;li&gt;Added a &lt;code&gt;license_path&lt;/code&gt; parameter to update the CIS-CAT Pro Assessor license without upgrading SCM.&lt;/li&gt;
&lt;li&gt;Added an &lt;code&gt;assessor_scan_timeout&lt;/code&gt; option to control the task timeout for Windows 2022 domain controllers.&lt;/li&gt;
&lt;li&gt;Added a background scan sweeper that detects and cancels scans stuck in a "running" state.&lt;/li&gt;
&lt;li&gt;Increased the default &lt;strong&gt;Max graphql requests limit&lt;/strong&gt; to 300 requests per window; use the &lt;code&gt;complyadm::configure&lt;/code&gt; Bolt plan to customize.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check the official &lt;a href="https://help.puppet.com/scm/current/Content/UserGuide/SCM/Release_notes/release_notes.htm#SecurityComplianceManagement381" rel="noopener noreferrer"&gt;release notes for comply 3.8.1&lt;/a&gt; for the full details.&lt;/p&gt;




&lt;h3&gt;
  
  
  haproxy 9.1.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-07-28 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/haproxy" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Two releases this month: 9.0.0 dropped Puppet 7 support (&lt;strong&gt;BREAKING&lt;/strong&gt;) and added &lt;code&gt;cache&lt;/code&gt; resource support, while 9.1.0 removed a sensitive-data workaround and allows both stdlib and concat to move to their 10.x releases.&lt;/p&gt;

&lt;p&gt;Includes monthly releases: 9.1.0 (2026-07-28), 9.0.0 (2026-07-20).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Eliminate Workaround for Sensitive Data; raises minimum &lt;code&gt;puppetlabs/concat&lt;/code&gt; requirement to &lt;code&gt;7.4.0&lt;/code&gt; &lt;a href="https://github.com/puppetlabs/puppetlabs-haproxy/pull/607" rel="noopener noreferrer"&gt;#607&lt;/a&gt; (&lt;a href="https://github.com/cocker-cc" rel="noopener noreferrer"&gt;cocker-cc&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Add support for running programs &lt;a href="https://github.com/puppetlabs/puppetlabs-haproxy/pull/604" rel="noopener noreferrer"&gt;#604&lt;/a&gt; (&lt;a href="https://github.com/deric" rel="noopener noreferrer"&gt;deric&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Pass install_options to package installer &lt;a href="https://github.com/puppetlabs/puppetlabs-haproxy/pull/603" rel="noopener noreferrer"&gt;#603&lt;/a&gt; (&lt;a href="https://github.com/deric" rel="noopener noreferrer"&gt;deric&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;examples: disable default stats listener &lt;a href="https://github.com/puppetlabs/puppetlabs-haproxy/pull/640" rel="noopener noreferrer"&gt;#640&lt;/a&gt; (&lt;a href="https://github.com/bastelfreak" rel="noopener noreferrer"&gt;bastelfreak&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;make picking haproxy::globals::sort_options_alphabetic work &lt;a href="https://github.com/puppetlabs/puppetlabs-haproxy/pull/573" rel="noopener noreferrer"&gt;#573&lt;/a&gt; (&lt;a href="https://github.com/trefzer" rel="noopener noreferrer"&gt;trefzer&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remove Puppet 7 support (BREAKING); the module now requires &lt;code&gt;puppet &amp;gt;= 8.0.0 &amp;lt; 9.0.0&lt;/code&gt;&lt;/strong&gt; &lt;a href="https://github.com/puppetlabs/puppetlabs-haproxy/pull/631" rel="noopener noreferrer"&gt;#631&lt;/a&gt; (&lt;a href="https://github.com/gavindidrichsen" rel="noopener noreferrer"&gt;gavindidrichsen&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Add support for &lt;code&gt;cache&lt;/code&gt; resource, extra backend options, and docs &lt;a href="https://github.com/puppetlabs/puppetlabs-haproxy/pull/626" rel="noopener noreferrer"&gt;#626&lt;/a&gt; (&lt;a href="https://github.com/matejzero" rel="noopener noreferrer"&gt;matejzero&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;(MODULES-11840) Allow puppetlabs/stdlib 10.x &lt;a href="https://github.com/puppetlabs/puppetlabs-haproxy/pull/642" rel="noopener noreferrer"&gt;#642&lt;/a&gt; (&lt;a href="https://github.com/imaqsood" rel="noopener noreferrer"&gt;imaqsood&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Allow puppetlabs/concat 10.x &lt;a href="https://github.com/puppetlabs/puppetlabs-haproxy/pull/641" rel="noopener noreferrer"&gt;#641&lt;/a&gt; (&lt;a href="https://github.com/bastelfreak" rel="noopener noreferrer"&gt;bastelfreak&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;dependency: create mapfile before configfile &lt;a href="https://github.com/puppetlabs/puppetlabs-haproxy/pull/572" rel="noopener noreferrer"&gt;#572&lt;/a&gt; (&lt;a href="https://github.com/trefzer" rel="noopener noreferrer"&gt;trefzer&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  iis 11.0.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-07-01 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/iis" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Dropped Puppet 7 support (&lt;strong&gt;BREAKING&lt;/strong&gt;) as part of ongoing modernization efforts, and marked the &lt;code&gt;iis_application_pool&lt;/code&gt; password parameter as sensitive so it no longer leaks into Puppet reports.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(CAT-2374) Puppet Core update (BREAKING) — drops Puppet 7 support &lt;a href="https://github.com/puppetlabs/puppetlabs-iis/pull/414" rel="noopener noreferrer"&gt;#414&lt;/a&gt; (&lt;a href="https://github.com/LukasAud" rel="noopener noreferrer"&gt;LukasAud&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;(MODULES-11595) Mark iis_application_pool password as sensitive to stop report leak &lt;a href="https://github.com/puppetlabs/puppetlabs-iis/pull/418" rel="noopener noreferrer"&gt;#418&lt;/a&gt; (&lt;a href="https://github.com/imaqsood" rel="noopener noreferrer"&gt;imaqsood&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  mount_iso 5.0.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-07-22 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/mount_iso" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Dropped Puppet 7 support (&lt;strong&gt;BREAKING&lt;/strong&gt;) and allowed the stdlib dependency to move to 10.x.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(CAT-2380) Update for Puppet Core / Drop Support for Puppet 7 (BREAKING) &lt;a href="https://github.com/puppetlabs/puppetlabs-mount_iso/pull/58" rel="noopener noreferrer"&gt;#58&lt;/a&gt; (&lt;a href="https://github.com/david22swan" rel="noopener noreferrer"&gt;david22swan&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;(MODULES-11840) Allow puppetlabs/stdlib 10.x &lt;a href="https://github.com/puppetlabs/puppetlabs-mount_iso/pull/59" rel="noopener noreferrer"&gt;#59&lt;/a&gt; (&lt;a href="https://github.com/imaqsood" rel="noopener noreferrer"&gt;imaqsood&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  mysql 17.1.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-07-02 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/mysql" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;This month was a small update but important as RHEL 10 support was added.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(MODULES-11802) Add support for RHEL 10 &lt;a href="https://github.com/puppetlabs/puppetlabs-mysql/pull/1712" rel="noopener noreferrer"&gt;#1712&lt;/a&gt; (&lt;a href="https://github.com/skyamgarp" rel="noopener noreferrer"&gt;skyamgarp&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  node_encrypt 3.2.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-07-22 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/node_encrypt" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Adds Ubuntu 24 and Debian 12 support, and upgrades rexml to address a CVE.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(CAT-2124) Add support for Ubuntu 24 &lt;a href="https://github.com/puppetlabs/puppetlabs-node_encrypt/pull/120" rel="noopener noreferrer"&gt;#120&lt;/a&gt; (&lt;a href="https://github.com/skyamgarp" rel="noopener noreferrer"&gt;skyamgarp&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;(CAT-2100) Add Debian 12 support &lt;a href="https://github.com/puppetlabs/puppetlabs-node_encrypt/pull/119" rel="noopener noreferrer"&gt;#119&lt;/a&gt; (&lt;a href="https://github.com/shubhamshinde360" rel="noopener noreferrer"&gt;shubhamshinde360&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;(CAT-2158) Upgrade rexml to address CVE-2024-49761 &lt;a href="https://github.com/puppetlabs/puppetlabs-node_encrypt/pull/121" rel="noopener noreferrer"&gt;#121&lt;/a&gt; (&lt;a href="https://github.com/amitkarsale" rel="noopener noreferrer"&gt;amitkarsale&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  peadm 3.38.1
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-07-08 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/peadm" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Restores public-schema privileges on PostgreSQL 15+ in &lt;code&gt;restore.pp&lt;/code&gt;, fixing a bug that could affect PE restores on newer PostgreSQL versions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(PE-44867) Restore public-schema privileges on PostgreSQL 15+ in restore.pp &lt;a href="https://github.com/puppetlabs/puppetlabs-peadm/pull/676" rel="noopener noreferrer"&gt;#676&lt;/a&gt; (&lt;a href="https://github.com/CharithaDunuwille" rel="noopener noreferrer"&gt;CharithaDunuwille&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  postgresql 10.6.3
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-07-07 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/postgresql" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Restores Puppet 7 support that was unintentionally dropped in the 10.6.2 patch release last month.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; As flagged in June's roundup, the Puppet 7 removal in 10.6.2 shipped in a patch release rather than a major one. 10.6.3 restores Puppet 7 support; the removal will happen again, correctly, in a future major release.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(MODULES-11858) Restore Puppet 7 support broken by 10.6.2 &lt;a href="https://github.com/puppetlabs/puppetlabs-postgresql/pull/1686" rel="noopener noreferrer"&gt;#1686&lt;/a&gt; (&lt;a href="https://github.com/imaqsood" rel="noopener noreferrer"&gt;imaqsood&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  puppet_authorization 1.0.1
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-07-21 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/puppet_authorization" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;A maintenance release: allows both the stdlib and concat dependencies to move to 10.x, tweaks a CI workflow flag, and adds a LICENSE file.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Change flag option in CI workflow &lt;a href="https://github.com/puppetlabs/puppetlabs-puppet_authorization/pull/56" rel="noopener noreferrer"&gt;#56&lt;/a&gt; (&lt;a href="https://github.com/zaben903" rel="noopener noreferrer"&gt;zaben903&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;(MODULES-11840) Allow puppetlabs/stdlib 10.x &lt;a href="https://github.com/puppetlabs/puppetlabs-puppet_authorization/pull/57" rel="noopener noreferrer"&gt;#57&lt;/a&gt; (&lt;a href="https://github.com/imaqsood" rel="noopener noreferrer"&gt;imaqsood&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;puppetlabs/concat: Allow 10.x &lt;a href="https://github.com/puppetlabs/puppetlabs-puppet_authorization/pull/55" rel="noopener noreferrer"&gt;#55&lt;/a&gt; (&lt;a href="https://github.com/bastelfreak" rel="noopener noreferrer"&gt;bastelfreak&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Create LICENSE &lt;a href="https://github.com/puppetlabs/puppetlabs-puppet_authorization/pull/52" rel="noopener noreferrer"&gt;#52&lt;/a&gt; (&lt;a href="https://github.com/binford2k" rel="noopener noreferrer"&gt;binford2k&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  sce_linux 2.8.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-07-28 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/sce_linux" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Updates CIS Benchmarks from v3.0.0 to v4.0.0 for RHEL 8, AlmaLinux 8, and Oracle Linux 8, with matching control updates for each, and fixes three bugs affecting benchmark enforcement.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Updated CIS Benchmarks.&lt;/strong&gt; RHEL 8, AlmaLinux 8, and Oracle Linux 8 move from CIS Benchmark v3.0.0 to v4.0.0, with matching control updates for each operating system.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Updated dependency.&lt;/strong&gt; SCE for Linux now supports puppetlabs-stdlib &amp;gt;= 9.2.0 &amp;lt; 11.0.0; avoid using earlier stdlib versions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fixed:&lt;/strong&gt; the user-specified &lt;code&gt;default_zone&lt;/code&gt; setting was not enforced for CIS control 3.4.1.2; it is now enforced correctly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fixed:&lt;/strong&gt; &lt;code&gt;aide --init&lt;/code&gt; failed on RHEL/AlmaLinux/Oracle Linux/Rocky Linux 8 hosts shipping AIDE 0.17.x, which renamed the &lt;code&gt;database=&lt;/code&gt; directive to &lt;code&gt;database_in=&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fixed:&lt;/strong&gt; CIS control 6.2.2.2 (journald log-forwarding) did not work as designed on RHEL/AlmaLinux/Oracle Linux/Rocky Linux 9 and 10; control 6.2.3.3 was also added.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check the official &lt;a href="https://help.puppet.com/sce/current/linux/scel_relnotes_280.htm" rel="noopener noreferrer"&gt;release notes for sce_linux 2.8.0&lt;/a&gt; for the full details.&lt;/p&gt;




&lt;h3&gt;
  
  
  scheduled_task 5.0.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-07-13 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/scheduled_task" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Drops Puppet 7 support (&lt;strong&gt;BREAKING&lt;/strong&gt;) and also adds Windows Server 2025 support.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(CAT-2391) Puppet Core upgrade (BREAKING) — drops Puppet 7 support &lt;a href="https://github.com/puppetlabs/puppetlabs-scheduled_task/pull/271" rel="noopener noreferrer"&gt;#271&lt;/a&gt; (&lt;a href="https://github.com/LukasAud" rel="noopener noreferrer"&gt;LukasAud&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;[MODULES-11616] Adding Windows 2025 support to module &lt;a href="https://github.com/puppetlabs/puppetlabs-scheduled_task/pull/275" rel="noopener noreferrer"&gt;#275&lt;/a&gt; (&lt;a href="https://github.com/jst-cyr" rel="noopener noreferrer"&gt;jst-cyr&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Update link to contributing documentation &lt;a href="https://github.com/puppetlabs/puppetlabs-scheduled_task/pull/273" rel="noopener noreferrer"&gt;#273&lt;/a&gt; (&lt;a href="https://github.com/jst-cyr" rel="noopener noreferrer"&gt;jst-cyr&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  sslcertificate 6.0.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-07-22 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/sslcertificate" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Drops Puppet 7 support (&lt;strong&gt;BREAKING&lt;/strong&gt;) and allows the stdlib dependency to move to 10.x.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(CAT-2394) Puppet Core update (BREAKING) — drops Puppet 7 support &lt;a href="https://github.com/puppetlabs/puppetlabs-sslcertificate/pull/142" rel="noopener noreferrer"&gt;#142&lt;/a&gt; (&lt;a href="https://github.com/LukasAud" rel="noopener noreferrer"&gt;LukasAud&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;(MODULES-11840) Allow puppetlabs/stdlib 10.x &lt;a href="https://github.com/puppetlabs/puppetlabs-sslcertificate/pull/143" rel="noopener noreferrer"&gt;#143&lt;/a&gt; (&lt;a href="https://github.com/imaqsood" rel="noopener noreferrer"&gt;imaqsood&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  windows_env 6.1.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-07-21 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/windows_env" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Adds Windows Server 2025 support.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(MODULES-11891) Add Windows Server 2025 support &lt;a href="https://github.com/puppetlabs/puppetlabs-windows_env/pull/115" rel="noopener noreferrer"&gt;#115&lt;/a&gt; (&lt;a href="https://github.com/imaqsood" rel="noopener noreferrer"&gt;imaqsood&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  windows_eventlog 5.1.0
&lt;/h3&gt;

&lt;p&gt;📅 Latest release: 2026-07-22 (🌐 &lt;a href="https://forge.puppet.com/modules/puppetlabs/windows_eventlog" rel="noopener noreferrer"&gt;View on the Forge&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Adds Windows Server 2025 support.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(MODULES-11892) Add Windows Server 2025 support &lt;a href="https://github.com/puppetlabs/puppetlabs-windows_eventlog/pull/98" rel="noopener noreferrer"&gt;#98&lt;/a&gt; (&lt;a href="https://github.com/imaqsood" rel="noopener noreferrer"&gt;imaqsood&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Until Next Time!
&lt;/h2&gt;

&lt;p&gt;That wraps up the July 2026 roundup. If any of these modules intersect with your environment. especially the cd4peadm breaking change to commit status contexts and the Puppet 7 removals, the linked Forge pages and release notes are worth a closer look before upgrading.&lt;/p&gt;

&lt;p&gt;Feedback on the series is always useful, especially if there are module families or release-note patterns that deserve more attention in future editions!&lt;/p&gt;

&lt;p&gt;More updates coming next month when the August 2026 releases land.&lt;/p&gt;

&lt;h2&gt;
  
  
  🤖 AI Disclosure
&lt;/h2&gt;

&lt;p&gt;This roundup is produced by a mostly-automated pipeline, with some AI sprinkled in for orchestration and enrichment (or 'Combobulating' and 'Finagling'), followed by a human review (that would be me) before publishing.&lt;/p&gt;

&lt;p&gt;The automation is an &lt;a href="https://github.com/jst-cyr/puppetlabs-modules-roundup-writer" rel="noopener noreferrer"&gt;open-source project&lt;/a&gt; with deterministic python scripts to crawl the Forge and determine which &lt;code&gt;puppetlabs&lt;/code&gt; modules were released during a specific month (and catching when a module gets more than one release in a month). By combining a template, automation scripts, and some AI orchestration the content all gets pulled together for a structured markdown document. I then jump in to double-check the content and update any wording that seems repetitive or irrelevant (and sometimes I need to add some extra context that isn't in the changelog notes).&lt;/p&gt;

</description>
      <category>puppet</category>
    </item>
    <item>
      <title>The Decision Maker’s Guide to Puppet: What is Perforce Puppet? Which Edition of Puppet is Right for You?</title>
      <dc:creator>Dragonsoft DevSecOps</dc:creator>
      <pubDate>Mon, 03 Aug 2026 09:13:31 +0000</pubDate>
      <link>https://dev.to/dragonsoft_devsecops/the-decision-makers-guide-to-puppet-what-is-perforce-puppet-which-edition-of-puppet-is-right-for-1e7k</link>
      <guid>https://dev.to/dragonsoft_devsecops/the-decision-makers-guide-to-puppet-what-is-perforce-puppet-which-edition-of-puppet-is-right-for-1e7k</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;As your infrastructure expands, you need a solution that securely scales as quickly as your organization grows. In this article, Dragonsoft, an authorized Perforce partner, will guide you through the modern automation landscape to help you make the right choice for your organization, including comparisons for each edition of Puppet, from open source to enterprise-ready options.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What is Perforce Puppet
&lt;/h2&gt;

&lt;p&gt;Perforce Puppet empowers people to innovate through infrastructure automation. For more than a dozen years, Puppet has led the way in IT infrastructure automation to simplify complexity for the masses in order to strengthen customers’ security posture, compliance standards, and business resiliency beyond the data center to the cloud. More than 40,000 organizations — including more than 80 percent of the Global 5000 — have benefited from Puppet’s open source and commercial solutions.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to Consider When Choosing Automation Solutions Like Puppet
&lt;/h2&gt;

&lt;p&gt;What happens when your IT matures? IT maturity can mean a lot of things, but in a digital-first world, it almost always means new problems to solve.&lt;/p&gt;

&lt;p&gt;As your business grows, your infrastructure must evolve to keep up. Your IT teams need to strengthen security, ensure compliance, enhance observability, and stay audit-ready without sacrificing performance or reliability. Even if your IT footprint isn’t expanding, it may shift laterally, introducing complexity without adding scale. Legacy tools and technical debt can still hold you back. Regardless of how it happens, your infrastructure will face growing pains.&lt;/p&gt;

&lt;p&gt;One thing is certain: Your IT doesn't get easier to manage on its own.&lt;/p&gt;

&lt;p&gt;So naturally, you turn to automation to handle the expanding workloads and increased expectations. All of a sudden, you’re writing scripts, automating tasks, and saving mountains of time by keeping everything in your desired state. Automation empowers infrastructure teams to be more focused and productive and break through the limits of human scale. Soon, you can’t imagine ever doing development, operations, or DevOps differently.&lt;/p&gt;

&lt;p&gt;But before long, those growing pains start to show up again. You find that the tools, solutions, and processes that kept your IT afloat in the past don’t cut it anymore. The security, scale, and sophistication of your IT are essential to business success, but in a fast-paced, ever-changing digital landscape, new challenges and complexity are never far behind.&lt;/p&gt;

&lt;h2&gt;
  
  
  The IT Automation Landscape: A Brief Overview
&lt;/h2&gt;

&lt;p&gt;Broadly, IT automation solutions fall into three categories: open source automation tools, open core solutions, and enterprise platforms. Each has distinct strengths and limitations, making them suitable for different use cases. Here’s a quick comparison of Puppet offerings to support informed decision-making.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkr4hqoyqmhjbaui09x43.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkr4hqoyqmhjbaui09x43.png" alt=" " width="800" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OpenSource Puppet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open Source Puppet is freely available for organizations looking to adopt automation. It appeals to businesses with limited budgets or that have an open source-first model and the resources to build and maintain it. But open source tools have  underlying costs: They require significant in-house expertise and ongoing maintenance. They also often lack rigorous security testing, which can present issues for organizations with compliance and SLA requirements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Puppet Core&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Puppet Core is designed to balance cost efficiency with security. It delivers reliable, stable, and secure software builds that are consistently updated and rigorously tested. Hardened binaries, defect support, and guaranteed SLAs reduce the burden on internal teams, letting them focus on keeping their systems running smoothly with Puppet instead of worrying about the security of their infrastructure automation solution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Puppet Enterprise Platform&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For organizations prioritizing scalability and future growth, an enterprise infrastructure automation and management platform is the go-to choice. With advanced features, enhanced integrations and capabilities, and dedicated support, the Puppet Enterprise platform is designed to ensure long-term efficiency and resiliency in large, complex environments.&lt;/p&gt;

&lt;p&gt;Enterprise organizations benefit from the advanced capabilities of an infrastructure operations platform that scales with their needs — particularly businesses with a strong focus on security and compliance and who are unwilling to sacrifice innovation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Puppet Products Compared
&lt;/h2&gt;

&lt;p&gt;Puppet is here to support your path to more resilient IT — especially when you need to handle greater complexity, support a growing userbase, and speed up evelopment.&lt;/p&gt;

&lt;p&gt;All editions of Puppet are built on the same proven foundation, but there are key differences to consider.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In short:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;• Open Source Puppet automates and enforces desired state without cost, although maintaining it requires trained resources and involves greater manual effort.&lt;/p&gt;

&lt;p&gt;• Puppet Core is for those who want the same hands-on control of Open Source Puppet but require hardened, stable builds with vendor-backed SLAs.&lt;/p&gt;

&lt;p&gt;• The Puppet Enterprise platform is built for enterprise teams who need their automation to work for them — not the other way around. The AI-powered user experience and intuitive GUI interface help users get started quickly, and advanced capabilities and exclusive third-party integrations increase productivity at every level.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8f2m4voc38bvxrgtta44.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8f2m4voc38bvxrgtta44.png" alt=" " width="800" height="653"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“The more we use Puppet Enterprise, the more we find we can do with it. Puppet Enterprise comes with many modules to help us manage our Puppet setup more easily. The open source version does not come with these modules … Every new upgrade of Puppet proves to be more innovative, and brings exciting features that we want.”——Pope Davis, Senior Director of systems Engineering, NYSE/ICE&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why Organizations Choose Puppet Core
&lt;/h2&gt;

&lt;p&gt;Puppet Core builds on the powerful automation capabilities of Open Source Puppet and adds additional peace of mind for security-conscious organizations. Backed by Perforce, a trusted DevOps partner with over 30 years experience supporting global enterprises, releases undergo rigorous testing and include signed, hardened binaries. Defects can be reported via a customer portal and guaranteed SLAs ensure quick remediation for high and critical CVEs on Puppet software. Puppet Core also incorporates built-in enforcement of popular security baselines to ensure your infrastructure is continuously verified as compliant.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Organizations Choose the Puppet Enterprise Platform
&lt;/h2&gt;

&lt;p&gt;As infrastructure grows and compliance demands intensify, organizations often outgrow the limitations of their automation tools. Whether it’s the need to scale rapidly or respond swiftly to security vulnerabilities, teams require a platform that evolves with them.&lt;/p&gt;

&lt;p&gt;That's why many who start with Open Source Puppet or Puppet Core later transition to Puppet Enterprise: to gain the advanced features, enterprise support, and integrated capabilities that modern environments demand.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deciding Which Puppet Solution Your Organization Should Choose
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;l Choose OpenSource Puppet if:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;• You have minimal security and compliance requirements&lt;/p&gt;

&lt;p&gt;• You don’t need formal SLAs for your Puppet software&lt;/p&gt;

&lt;p&gt;• Your infrastructure is relatively simple and not spread across hybrid/cloud environments&lt;/p&gt;

&lt;p&gt;• You don’t require the latest OS support or access to enterprise-grade agent updates&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;l Choose Puppet Core if:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;• You need releases with secure, signed binaries&lt;/p&gt;

&lt;p&gt;• Your team has the in-house expertise to manage infrastructure automation software&lt;/p&gt;

&lt;p&gt;• You prefer a hands-on, code-centric approach to infrastructure management&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;l Choose the Puppet Enterprise platform if:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;• Your IT infrastructure is large, complex, or hybrid (e.g., thousands of servers, multi-cloud)&lt;/p&gt;

&lt;p&gt;• You want intuitive, GUI-based tools to manage the full infrastructure lifecycle&lt;/p&gt;

&lt;p&gt;• You want to empower more team members to access   infrastructure insights and take action (without needing Puppet expertise) through AI-driven, natural language  interaction&lt;/p&gt;

&lt;p&gt;• You need a solution that scales without adding operational overhead or tool sprawl&lt;/p&gt;

&lt;p&gt;• You want seamless integration with your existing security, observability, and self-service tools&lt;/p&gt;

&lt;p&gt;• You require centralized control for compliance reporting, vulnerability remediation, and audit readiness&lt;/p&gt;

&lt;p&gt;• You aim to build powerful automation workflows without reinventing your toolchain&lt;/p&gt;

&lt;p&gt;• Your organization is growing — whether through scale, expansion, or complexity&lt;/p&gt;

&lt;p&gt;• You’re ready to simplify infrastructure management and increase operational efficiency&lt;/p&gt;

&lt;p&gt;The Puppet Enterprise platform is the only solution that combines both model-based (declarative) and task-based (imperative) capabilities in a way that enables you to scale&lt;/p&gt;

&lt;p&gt;your hybrid infrastructure as your automation footprint grows. With both agent-based and agentless capabilities, the Puppet Enterprise platform gives your organization the flexibility to automate what you want, how you want, wherever you want.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next Steps: Getting Started
&lt;/h2&gt;

&lt;p&gt;Ready to take the next step with Puppet? &lt;/p&gt;

&lt;p&gt;Whether you're just beginning or expanding your automation journey, our team at Dragonsoft, an authorized Perforce partner,is here to help. We'll work with you to assess your current environment, understand your goals, and chart a clear path to a more secure, efficient, and resilient infrastructure.&lt;/p&gt;

&lt;p&gt;Schedule a demo or connect with our team to explore the best Puppet solution for your organization.&lt;/p&gt;

&lt;p&gt;Website: &lt;a href="http://www.hkdsdtech.com" rel="noopener noreferrer"&gt;www.hkdsdtech.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Phone: +852-51679050&lt;/p&gt;

&lt;p&gt;Email: &lt;a href="mailto:marketing@hkdsdtech.com"&gt;marketing@hkdsdtech.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>perforce</category>
      <category>puppet</category>
    </item>
  </channel>
</rss>
