<!DOCTYPE html>
<html lang="en" dir="ltr" prefix="og: https://ogp.me/ns#" class="scroll-smooth">
  <head>
            <!-- Standard Favicon -->
    <link rel="icon" type="image/png" sizes="16x16" href="/sites/default/themes/custom/assets/favicons/favicon-16x16.png">
    <link rel="icon" type="image/png" sizes="32x32" href="/sites/default/themes/custom/assets/favicons/favicon-32x32.png">
    <link rel="shortcut icon" href="/sites/default/themes/custom/assets/favicons/favicon.ico">
    <link rel="icon" type="image/x-icon" href="/sites/default/themes/custom/assets/favicons/favicon.ico">
    <!-- Apple Touch Icon (iOS) -->
    <link rel="apple-touch-icon" sizes="180x180" href="/sites/default/themes/custom/assets/favicons/apple-touch-icon.png">
    <!-- Android Chrome Icons -->
    <link rel="icon" type="image/png" sizes="192x192" href="/sites/default/themes/custom/assets/favicons/android-chrome-192x192.png">
    <link rel="icon" type="image/png" sizes="512x512" href="/sites/default/themes/custom/assets/favicons/android-chrome-512x512.png">
    <!-- Web App Manifest -->
    <link rel="manifest" href="/sites/default/themes/custom/assets/favicons/site.webmanifest">

        <meta name="msapplication-TileColor" content="#ffffff">
    <meta name="theme-color" content="#4C00FF">

    <meta charset="utf-8" />
<meta property="og:url" content="https://www.puppet.com/blog" />
<meta property="og:title" content="Blog | Puppet" />
<meta property="og:image" content="https://www.puppet.com/sites/default/files/image-social-share-default.jpg" />
<meta property="og:image:url" content="https://www.puppet.com/sites/default/files/image-social-share-default.jpg" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Blog | Puppet" />
<meta name="twitter:site" content="@perforce" />
<meta name="twitter:creator" content="@perforce" />
<meta name="MobileOptimized" content="width" />
<meta name="HandheldFriendly" content="true" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<script id="gtmScript" nonce="8PqCbnJTdh4mcqAYEepzDA" data-gtm-nonce="8PqCbnJTdh4mcqAYEepzDA">(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id=GTM-PF6FV6'+dl;var n=d.querySelector('[nonce]');n&&j.setAttribute('nonce',n.nonce||n.getAttribute('nonce'));f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-PF6FV6');</script>
<link rel="alternate" hreflang="en" href="https://www.puppet.com/blog" />
<link rel="stylesheet" href="/styles/node/234/3640/backgrounds.css" />
<link rel="icon" href="/sites/default/files/favicon.ico" type="image/vnd.microsoft.icon" />
<link rel="canonical" href="https://www.puppet.com/blog" />
<script nonce="8PqCbnJTdh4mcqAYEepzDA">window.a2a_config=window.a2a_config||{};a2a_config.callbacks=[];a2a_config.overlays=[];a2a_config.templates={};a2a_config.icon_color = "#4C00FF";</script>

    <title>Blog | Puppet</title>
    <link rel="stylesheet" media="all" href="/sites/default/files/css/css_8PZkYWu6OzO2v8ZSrgZsaxX7f53OBJO2k9ENJv9Kb2o.css?delta=0&amp;language=en&amp;theme=p4base&amp;include=eJxVjlGOwjAMRC-UJkLiPsjFJvFumli2S9vbU1jKig-PZp40tgHRO7QtwdvEm_bmYSR30gut0o3wcuO6R0uZGinUcO1KCXUWqBF-YA20euX2e7B3DHIewSg95fAZ1Pclw8KYyQ9aOJe6jw9wOm0Dgn7KomxTEFDIClLsuPFP4txkHitbIQxSundbWPbmx8YrtmCbOU1_z9yZFksvjVPHuX4jJZPejO80ZGV8ADGQcW4" />
<link rel="stylesheet" media="all" href="//cdnjs.cloudflare.com/ajax/libs/photoswipe/5.4.4/photoswipe.min.css" />
<link rel="stylesheet" media="all" href="/sites/default/files/css/css_7UcR2pUOXfGuvdQmO5Y3sQg29pZGjRmzlxYQVJ18wTs.css?delta=2&amp;language=en&amp;theme=p4base&amp;include=eJxVjlGOwjAMRC-UJkLiPsjFJvFumli2S9vbU1jKig-PZp40tgHRO7QtwdvEm_bmYSR30gut0o3wcuO6R0uZGinUcO1KCXUWqBF-YA20euX2e7B3DHIewSg95fAZ1Pclw8KYyQ9aOJe6jw9wOm0Dgn7KomxTEFDIClLsuPFP4txkHitbIQxSundbWPbmx8YrtmCbOU1_z9yZFksvjVPHuX4jJZPejO80ZGV8ADGQcW4" />
<link rel="stylesheet" media="all" href="/sites/default/files/css/css_zXX7a1M9uPxJdhROKZRTi_QuNT1Ynaeo-npmSVi0YnQ.css?delta=3&amp;language=en&amp;theme=p4base&amp;include=eJxVjlGOwjAMRC-UJkLiPsjFJvFumli2S9vbU1jKig-PZp40tgHRO7QtwdvEm_bmYSR30gut0o3wcuO6R0uZGinUcO1KCXUWqBF-YA20euX2e7B3DHIewSg95fAZ1Pclw8KYyQ9aOJe6jw9wOm0Dgn7KomxTEFDIClLsuPFP4txkHitbIQxSundbWPbmx8YrtmCbOU1_z9yZFksvjVPHuX4jJZPejO80ZGV8ADGQcW4" />

    
  </head>
  <body class="site-puppet">
      <!-- Google Tag  Manager (noscript) -->
    <noscript>
      <iframe class="hidden invisible" src="//www.googletagmanager.com/ns.html?id=GTM-PF6FV6" height="0" width="0"></iframe>
    </noscript>
    <!-- End Google Tag Manager (noscript) -->
        <a href="#main-content" class="visually-hidden focusable">
      Skip to main content
    </a>
    
      <div class="dialog-off-canvas-main-canvas" data-off-canvas-main-canvas>
    



<div  class="layout-container">
  <header >
            <div id="top-nav-bar">
  <div class="region--header-top">
    <div class="max-w-container mx-auto relative block">
    <div  id="block-p4base-perforcesite" class="block">
  
    
      

            <div class="text-long"><div><div class="photoswipe-gallery"><div><a href="https://www.perforce.com" title="Perforce"><svg style="margin-top:-10px;" id="logo-perforce-icon-reg" width="30" height="30" viewBox="0 0 176.53 144.22"><g><path d="M122.2,50.37l-16.76,9.68,4.24,2.45c5.01,2.89,5.55,7.69,5.55,9.62s-.54,6.73-5.55,9.62l-75.84,43.79c-5.01,2.89-9.44.96-11.11,0-1.67-.96-5.55-3.83-5.55-9.62V28.32c0-5.79,3.88-8.66,5.55-9.62,1.67-.96,6.09-2.89,11.11,0l20.09,11.6,17.17-9.91L42.42,3.83C33.56-1.28,22.99-1.28,14.14,3.83,5.29,8.95,0,18.1,0,28.32v87.58c0,10.22,5.29,19.38,14.14,24.49,4.43,2.56,9.28,3.83,14.14,3.83s9.71-1.28,14.14-3.83l75.84-43.79c8.85-5.11,14.14-14.27,14.14-24.49,0-8.6-3.75-16.43-10.2-21.74Z" fill="#4c00ff" /><path d="M54.33,93.86l16.76-9.68-4.24-2.45c-5.01-2.89-5.55-7.69-5.55-9.62s.54-6.73,5.55-9.62l75.84-43.79c5.01-2.89,9.44-.96,11.11,0,1.67.96,5.55,3.83,5.55,9.62v87.58c0,5.79-3.88,8.66-5.55,9.62-1.67.96-6.09,2.89-11.11,0l-20.09-11.6-17.17,9.91,28.68,16.56c8.85,5.11,19.43,5.11,28.28,0,8.85-5.11,14.14-14.27,14.14-24.49V28.32c0-10.22-5.29-19.38-14.14-24.49-4.43-2.56-9.28-3.83-14.14-3.83s-9.71,1.28-14.14,3.83L58.27,47.62c-8.85,5.11-14.14,14.27-14.14,24.49,0,8.6,3.75,16.43,10.2,21.74Z" fill="#4c00ff" /></g></svg></a></div></div></div></div>
      
  </div>
<nav role="navigation" aria-labelledby="block-p4base-secondarynavigation-menu" id="block-p4base-secondarynavigation" class="py-8 text-[.9rem] [&amp;_li]:mx-3 flex items-center justify-end">
  
            
  <h2 class="visually-hidden" id="block-p4base-secondarynavigation-menu">Secondary Navigation</h2>
  

  <div class="flex items-center gap-6">
    

      <div x-data="{ open: false }" class="relative flex items-center">
    <!-- Search Icon Button -->
    <button @click="open = true" class="hover:text-gray-300 dark:text-p4-teal focus:outline-none" id="search-button" aria-label="Open Site Search" title="Open Site Search">
      <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" class="w-6 h-6">
        <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-4.35-4.35M16 10a6 6 0 1 0-12 0 6 6 0 0 0 12 0z"/>
      </svg>
    </button>

    <!-- Fullscreen Search Overlay -->
    <div x-show="open" x-transition.opacity x-cloak
         @click.away="open = false"
         @keydown.escape.window="open = false"
         x-init="$watch('open', value => {
         if (value) {
            $nextTick(() => {
            const input = document.querySelector('#search-modal-content input[type=text]');
            if (input) input.focus();
          });
         }
       })"
         class="fixed inset-0 bg-p4-primary bg-opacity-90 flex items-center justify-center z-50">

      <div class="container p-4 relative">
          <!-- Search Form Container -->
        <div id="search-modal-content" class="w-full flex items-center justify-center">
          <div  data-drupal-selector="views-exposed-form-sitewide-search-page-search" class="block views-exposed-form bef-exposed-form">
  
      <h2 class="h2">Sitewide Search</h2>
    
      <form action="/search" method="get" id="views-exposed-form-sitewide-search-page-search" accept-charset="UTF-8">

        <div class="relative mx-auto">
        <input
                type="text"
                name="keys"
                value=""
                placeholder="Search..."
                class="w-[800px] placeholder:text-p4-primary text-base text-p4-dark py-4 px-4 pr-12 border rounded-md focus:outline-none focus:ring-0 focus:border-transparent"
        />

                <button
                type="submit"
                name=""
                value="Apply"
                class="absolute top-1/2 right-8 transform -translate-y-1/2"
                aria-label="Search"
        >
            <svg class="w-6 h-6 text-p4-primary" id="icon_search" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"
                      d="M17.4 9.2c0 4.5-3.7 8.2-8.2 8.2S1 13.8 1 9.2 4.7 1 9.2 1s8.2 3.7 8.2 8.2ZM15 15l8 8"/>
            </svg>

        </button>
    </div>

        
    
    
</form>
  </div>

            <!-- Close Button -->
            <button @click="open = false"
                    class="ml-8 w-10 h-10 bg-p4-teal text-p4-dark hover:text-black text-xl rounded-full flex items-center justify-center">
                ✖
            </button>
        </div>
      </div>
    </div>
  </div>


        <div>
              

            
                          
    

<ul  class="menu list-none flex flex-col xl1180:flex-row justify-end gap-4">
        
<li  class="menu__item">
                                  
        <a href="https://www.perforce.com/partner-ecosystem" class="menu__link">Partners</a>
          </li>
      
<li  class="menu__item">
                                  
        <a href="/downloads/puppet-enterprise" class="menu__link" data-drupal-link-system-path="node/63">Downloads</a>
          </li>
      
<li  class="menu__item">
                                  
        <a href="https://portal.perforce.com/s/" class="menu__link">Customer Portal</a>
          </li>
      
<li  class="menu__item menu__item--with-sub" x-data="{ open: false }" @mouseenter="open = true" @mouseleave="open = false">
                                                      
        <span class="menu__link menu__link--with-sub cursor-default">Company</span>
              <span class="expand-sub"></span>
                                                        
                                          
      <ul  class="list list--sub list--sub-1 list-none px-4 py-4 z-50 bg-white absolute rounded-3xl shadow-md" x-show="open" x-transition:enter="transition ease-out duration-200 transform" x-transition:enter-start="opacity-0 -translate-y-2" x-transition:enter-end="opacity-100 translate-y-0" x-transition:leave="transition ease-out duration-200" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" @focusout="await $nextTick(); if (! $el.contains(document.activeElement)) open = false"  x-cloak >
                              
<li  class="menu__item menu__item--sub menu__item--sub-1">
                                  
        <a href="/about" class="menu__link menu__link--sub menu__link--sub-1" data-drupal-link-system-path="node/781">About Puppet</a>
          </li>
                        
<li  class="menu__item menu__item--sub menu__item--sub-1">
                                  
        <a href="https://www.perforce.com/company/management-team" class="menu__link menu__link--sub menu__link--sub-1">Leadership</a>
          </li>
                        
<li  class="menu__item menu__item--sub menu__item--sub-1">
                                  
        <a href="https://www.perforce.com/company/our-culture" class="menu__link menu__link--sub menu__link--sub-1">Culture</a>
          </li>
                        
<li  class="menu__item menu__item--sub menu__item--sub-1">
                                  
        <a href="https://www.perforce.com/careers" class="menu__link menu__link--sub menu__link--sub-1">Careers</a>
          </li>
                        
<li  class="menu__item menu__item--sub menu__item--sub-1">
                                  
        <a href="https://www.perforce.com/open-source-approach" class="menu__link menu__link--sub menu__link--sub-1">Open Source Policy</a>
          </li>
                        
<li  class="menu__item menu__item--sub menu__item--sub-1">
                                  
        <a href="https://www.perforce.com/ai-powered-devops" class="menu__link menu__link--sub menu__link--sub-1">AI Approach</a>
          </li>
                        
<li  class="menu__item menu__item--sub menu__item--sub-1">
                                  
        <a href="https://www.perforce.com/resources/events" class="menu__link menu__link--sub menu__link--sub-1">Events</a>
          </li>
                        
<li  class="menu__item menu__item--sub menu__item--sub-1">
                                  
        <a href="https://trust.perforce.com/" class="menu__link menu__link--sub menu__link--sub-1">Trust Center</a>
          </li>
                        
<li  class="menu__item menu__item--sub menu__item--sub-1">
                                  
        <a href="https://www.perforce.com/press" class="menu__link menu__link--sub menu__link--sub-1">Press</a>
          </li>
                      </ul>

  
      </li>
      
<li  class="menu__item">
                                  
        <a href="/contact" class="menu__link menu__link--contact-us" data-drupal-link-system-path="node/140">Contact Us</a>
          </li>
  </ul>
  

          </div>
  </div>
</nav>

    </div>
  </div>

                  
<div id="branding-mm" class="max-w-container mx-auto flex py-10">
  <div  id="block-p4base-sitebranding" class="block basis-[20rem]">
  
    
          <a href="/" rel="home" target="_blank">
      <img src="/sites/default/files/logo-puppet-reg_0.svg" alt="Puppet" fetchpriority="high" class="lg:max-w-[18.75rem] max-w-[12rem] max-h-[105px]" />
    </a>
      
</div>
<nav role="navigation" aria-labelledby="block-p4base-megamenu-menu" id="block-p4base-megamenu" class="flex-1">
            
  <h2 class="visually-hidden" id="block-p4base-megamenu-menu">Mega Menu</h2>
  

        <nav class="mega-menu">
  <!-- Mobile Toggle Button -->
<div class="flex justify-end">
  <button id="menu-toggle-open" class="mega-menu__toggle xl1180:hidden items-center text-[2.25rem] px-4">
    <span class="sr-only">Open menu</span>
    ☰
  </button>
</div>
  <input id="menu-toggle" aria-labelledby="menu-toggle-open" type="checkbox" class="hidden peer" aria-expanded="false"/>

  <!-- Fullscreen Menu for Mobile/Tablet -->
  <div class="fixed inset-0 bg-white z-50 hidden peer-checked:flex xl1180:hidden flex-col h-screen overflow-y-auto">
    <!-- Close Button -->
    <div class="flex items-center justify-between px-4 py-2 border-b">
      <a href="/" rel="home">
      <img src="/themes/custom/p4base/assets/images/logo.svg" class="w-64 h-auto" alt="Home" fetchpriority="high">
    </a>
      <button id="menu-toggle-close" class="text-xl">
        <span class="sr-only">Close menu</span>
        ✖
      </button>
    </div>

    <!-- Menu Items -->
    <ul class="mega-menu__list flex-1 flex flex-col gap-y-4 px-4 py-6 list-none">
              <li class="mega-menu__item list-none">
                      <!-- Accordion Toggle for Submenus -->
            <input id="solutions-toggle" type="checkbox" class="hidden peer" />
            <label for="solutions-toggle" 
                   class="flex items-center justify-between py-2 px-4 font-medium cursor-pointer text-lg">
              Solutions
              <!-- Triangle Icon -->
              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2"
                  stroke="currentColor" class="size-5 shrink-0 transition-transform duration-300 peer-checked:rotate-90"
                  aria-hidden="true">
                <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5"/>
              </svg>
            </label>

            <!-- Dropdown Content -->
            <ul class="hidden peer-checked:block space-y-2 list-none">
                              <li class="list-none pl-4 py-2">
                                      <!-- Submenu Accordion for Nested Items -->
                    <input id="by-industry-sub-toggle" type="checkbox" class="hidden peer" />
                    <label for="by-industry-sub-toggle" 
                           class="flex items-center justify-between py-2 px-4 font-medium cursor-pointer text-sm text-p4-primary">
                      By Industry
                      <!-- Triangle Icon -->
                      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2"
                          stroke="currentColor" class="size-5 shrink-0 transition-transform duration-300 peer-checked:rotate-90"
                          aria-hidden="true">
                        <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5"/>
                      </svg>
                    </label>

                    <!-- Submenu Items -->
                    <ul class="hidden peer-checked:block space-y-2 list-none">
                                              <li class="list-none pl-4 py-2">
                          <a href="/solutions/government" class="hover:underline">
                            Government
                          </a>
                        </li>
                                              <li class="list-none pl-4 py-2">
                          <a href="/solutions/financial-services" class="hover:underline">
                            Financial Services
                          </a>
                        </li>
                                              <li class="list-none pl-4 py-2">
                          <a href="/solutions/retail-consumer-goods" class="hover:underline">
                            Retail &amp; Consumer Goods
                          </a>
                        </li>
                                              <li class="list-none pl-4 py-2">
                          <a href="/solutions/software-it-services" class="hover:underline">
                            Software &amp; IT Services
                          </a>
                        </li>
                                              <li class="list-none pl-4 py-2">
                          <a href="/solutions/healthcare" class="hover:underline">
                            Healthcare
                          </a>
                        </li>
                                          </ul>
                                  </li>
                          </ul>
                  </li>
              <li class="mega-menu__item list-none">
                      <!-- Accordion Toggle for Submenus -->
            <input id="products-toggle" type="checkbox" class="hidden peer" />
            <label for="products-toggle" 
                   class="flex items-center justify-between py-2 px-4 font-medium cursor-pointer text-lg">
              Products
              <!-- Triangle Icon -->
              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2"
                  stroke="currentColor" class="size-5 shrink-0 transition-transform duration-300 peer-checked:rotate-90"
                  aria-hidden="true">
                <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5"/>
              </svg>
            </label>

            <!-- Dropdown Content -->
            <ul class="hidden peer-checked:block space-y-2 list-none">
                              <li class="list-none pl-4 py-2">
                                      <a href="/products/puppet-core" class="hover:underline">
                      Puppet Core
                    </a>
                                  </li>
                              <li class="list-none pl-4 py-2">
                                      <a href="/products/puppet-enterprise" class="hover:underline">
                      Puppet Enterprise
                    </a>
                                  </li>
                              <li class="list-none pl-4 py-2">
                                      <a href="/integrations" class="hover:underline">
                      Puppet Integrations
                    </a>
                                  </li>
                          </ul>
                  </li>
              <li class="mega-menu__item list-none">
                      <!-- Accordion Toggle for Submenus -->
            <input id="forge-toggle" type="checkbox" class="hidden peer" />
            <label for="forge-toggle" 
                   class="flex items-center justify-between py-2 px-4 font-medium cursor-pointer text-lg">
              Forge
              <!-- Triangle Icon -->
              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2"
                  stroke="currentColor" class="size-5 shrink-0 transition-transform duration-300 peer-checked:rotate-90"
                  aria-hidden="true">
                <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5"/>
              </svg>
            </label>

            <!-- Dropdown Content -->
            <ul class="hidden peer-checked:block space-y-2 list-none">
                              <li class="list-none pl-4 py-2">
                                      <a href="https://forge.puppet.com/modules" class="hover:underline">
                      Puppet Modules
                    </a>
                                  </li>
                          </ul>
                  </li>
              <li class="mega-menu__item list-none">
                      <!-- Accordion Toggle for Submenus -->
            <input id="support-&amp;-services-toggle" type="checkbox" class="hidden peer" />
            <label for="support-&amp;-services-toggle" 
                   class="flex items-center justify-between py-2 px-4 font-medium cursor-pointer text-lg">
              Support &amp; Services
              <!-- Triangle Icon -->
              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2"
                  stroke="currentColor" class="size-5 shrink-0 transition-transform duration-300 peer-checked:rotate-90"
                  aria-hidden="true">
                <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5"/>
              </svg>
            </label>

            <!-- Dropdown Content -->
            <ul class="hidden peer-checked:block space-y-2 list-none">
                              <li class="list-none pl-4 py-2">
                                      <!-- Submenu Accordion for Nested Items -->
                    <input id="support-sub-toggle" type="checkbox" class="hidden peer" />
                    <label for="support-sub-toggle" 
                           class="flex items-center justify-between py-2 px-4 font-medium cursor-pointer text-sm text-p4-primary">
                      Support
                      <!-- Triangle Icon -->
                      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2"
                          stroke="currentColor" class="size-5 shrink-0 transition-transform duration-300 peer-checked:rotate-90"
                          aria-hidden="true">
                        <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5"/>
                      </svg>
                    </label>

                    <!-- Submenu Items -->
                    <ul class="hidden peer-checked:block space-y-2 list-none">
                                              <li class="list-none pl-4 py-2">
                          <a href="https://portal.perforce.com/s/product/a3g4X000009wMFBQA2/puppet" class="hover:underline">
                            Customer Portal
                          </a>
                        </li>
                                              <li class="list-none pl-4 py-2">
                          <a href="https://help.puppet.com/" class="hover:underline">
                            Documentation
                          </a>
                        </li>
                                          </ul>
                                  </li>
                              <li class="list-none pl-4 py-2">
                                      <!-- Submenu Accordion for Nested Items -->
                    <input id="services-sub-toggle" type="checkbox" class="hidden peer" />
                    <label for="services-sub-toggle" 
                           class="flex items-center justify-between py-2 px-4 font-medium cursor-pointer text-sm text-p4-primary">
                      Services
                      <!-- Triangle Icon -->
                      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2"
                          stroke="currentColor" class="size-5 shrink-0 transition-transform duration-300 peer-checked:rotate-90"
                          aria-hidden="true">
                        <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5"/>
                      </svg>
                    </label>

                    <!-- Submenu Items -->
                    <ul class="hidden peer-checked:block space-y-2 list-none">
                                              <li class="list-none pl-4 py-2">
                          <a href="/professional-services" class="hover:underline">
                            Professional Services
                          </a>
                        </li>
                                              <li class="list-none pl-4 py-2">
                          <a href="/support/training" class="hover:underline">
                            Training &amp; Education
                          </a>
                        </li>
                                          </ul>
                                  </li>
                          </ul>
                  </li>
              <li class="mega-menu__item list-none">
                      <!-- Accordion Toggle for Submenus -->
            <input id="resources-toggle" type="checkbox" class="hidden peer" />
            <label for="resources-toggle" 
                   class="flex items-center justify-between py-2 px-4 font-medium cursor-pointer text-lg">
              Resources
              <!-- Triangle Icon -->
              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2"
                  stroke="currentColor" class="size-5 shrink-0 transition-transform duration-300 peer-checked:rotate-90"
                  aria-hidden="true">
                <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5"/>
              </svg>
            </label>

            <!-- Dropdown Content -->
            <ul class="hidden peer-checked:block space-y-2 list-none">
                              <li class="list-none pl-4 py-2">
                                      <a href="/resources/ebooks-papers" class="hover:underline">
                      eBooks &amp; Papers
                    </a>
                                  </li>
                              <li class="list-none pl-4 py-2">
                                      <a href="/resources/webinars" class="hover:underline">
                      Webinars
                    </a>
                                  </li>
                              <li class="list-none pl-4 py-2">
                                      <a href="/resources/videos" class="hover:underline">
                      Videos
                    </a>
                                  </li>
                              <li class="list-none pl-4 py-2">
                                      <a href="/resources/podcasts" class="hover:underline">
                      Podcasts
                    </a>
                                  </li>
                              <li class="list-none pl-4 py-2">
                                      <a href="/blog" class="hover:underline">
                      Blogs
                    </a>
                                  </li>
                              <li class="list-none pl-4 py-2">
                                      <a href="/community" class="hover:underline">
                      Community
                    </a>
                                  </li>
                              <li class="list-none pl-4 py-2">
                                      <a href="/customers" class="hover:underline">
                      Customer Stories
                    </a>
                                  </li>
                              <li class="list-none pl-4 py-2">
                                      <a href="/resources" class="hover:underline">
                      All Resources
                    </a>
                                  </li>
                          </ul>
                  </li>
              <!-- Secondary Navigation Items -->
        <hr class="text-p4-primary">
            <div class="mega-menu__secondary">
          

            
                          
    

<ul  class="menu list-none flex flex-col xl1180:flex-row justify-end gap-4">
        
<li  class="menu__item">
                                  
        <a href="https://www.perforce.com/partner-ecosystem" class="menu__link">Partners</a>
          </li>
      
<li  class="menu__item">
                                  
        <a href="/downloads/puppet-enterprise" class="menu__link" data-drupal-link-system-path="node/63">Downloads</a>
          </li>
      
<li  class="menu__item">
                                  
        <a href="https://portal.perforce.com/s/" class="menu__link">Customer Portal</a>
          </li>
      
<li  class="menu__item menu__item--with-sub" x-data="{ open: false }" @mouseenter="open = true" @mouseleave="open = false">
                                                      
        <span class="menu__link menu__link--with-sub cursor-default">Company</span>
              <span class="expand-sub"></span>
                                                        
                                          
      <ul  class="list list--sub list--sub-1 list-none px-4 py-4 z-50 bg-white absolute rounded-3xl shadow-md" x-show="open" x-transition:enter="transition ease-out duration-200 transform" x-transition:enter-start="opacity-0 -translate-y-2" x-transition:enter-end="opacity-100 translate-y-0" x-transition:leave="transition ease-out duration-200" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" @focusout="await $nextTick(); if (! $el.contains(document.activeElement)) open = false"  x-cloak >
                              
<li  class="menu__item menu__item--sub menu__item--sub-1">
                                  
        <a href="/about" class="menu__link menu__link--sub menu__link--sub-1" data-drupal-link-system-path="node/781">About Puppet</a>
          </li>
                        
<li  class="menu__item menu__item--sub menu__item--sub-1">
                                  
        <a href="https://www.perforce.com/company/management-team" class="menu__link menu__link--sub menu__link--sub-1">Leadership</a>
          </li>
                        
<li  class="menu__item menu__item--sub menu__item--sub-1">
                                  
        <a href="https://www.perforce.com/company/our-culture" class="menu__link menu__link--sub menu__link--sub-1">Culture</a>
          </li>
                        
<li  class="menu__item menu__item--sub menu__item--sub-1">
                                  
        <a href="https://www.perforce.com/careers" class="menu__link menu__link--sub menu__link--sub-1">Careers</a>
          </li>
                        
<li  class="menu__item menu__item--sub menu__item--sub-1">
                                  
        <a href="https://www.perforce.com/open-source-approach" class="menu__link menu__link--sub menu__link--sub-1">Open Source Policy</a>
          </li>
                        
<li  class="menu__item menu__item--sub menu__item--sub-1">
                                  
        <a href="https://www.perforce.com/ai-powered-devops" class="menu__link menu__link--sub menu__link--sub-1">AI Approach</a>
          </li>
                        
<li  class="menu__item menu__item--sub menu__item--sub-1">
                                  
        <a href="https://www.perforce.com/resources/events" class="menu__link menu__link--sub menu__link--sub-1">Events</a>
          </li>
                        
<li  class="menu__item menu__item--sub menu__item--sub-1">
                                  
        <a href="https://trust.perforce.com/" class="menu__link menu__link--sub menu__link--sub-1">Trust Center</a>
          </li>
                        
<li  class="menu__item menu__item--sub menu__item--sub-1">
                                  
        <a href="https://www.perforce.com/press" class="menu__link menu__link--sub menu__link--sub-1">Press</a>
          </li>
                      </ul>

  
      </li>
      
<li  class="menu__item">
                                  
        <a href="/contact" class="menu__link menu__link--contact-us" data-drupal-link-system-path="node/140">Contact Us</a>
          </li>
  </ul>
  

        </div>  
            </ul>
  </div>

  <!-- Desktop Menu -->
  <ul class="mega-menu__list hidden xl1180:flex placeholder:flex-row justify-end gap-x-2 list-none">
          <li class="mega-menu__item group relative"
                                x-data="{
                  open: false,
                   leftOffset: 0,
                      adjustDropdown() {
                        const dropdown = this.$el.querySelector('.dropdown__menu');

                        // Make it temporarily visible to measure its size
                        dropdown.style.display = 'block';
                        dropdown.style.visibility = 'hidden';

                        // Step 2: Force a reflow to ensure the browser recalculates layout
                        dropdown.style.left = '0px';

                        const rect = dropdown.getBoundingClientRect();
                        const windowWidth = window.innerWidth;

                        let leftValue = 0;

                        // Calculate right overflow
                        const rightOverflow = rect.right - windowWidth;
                        console.log(rightOverflow, leftValue, window.innerWidth, window.innerWidth);
                        if (rightOverflow > 0) {
                            leftValue = -rightOverflow;
                        }

                        // Calculate left overflow
                        const leftOverflow = rect.left;
                        if (leftOverflow < 0) {
                            leftValue = -leftOverflow;
                        }

                        // Apply the calculated left value
                        dropdown.style.left = `${leftValue}px`;

                        // Restore visibility
                        dropdown.style.visibility = 'visible';
                    }
                  }"
                  @mouseenter="open = true; adjustDropdown($el)"
                  @mouseleave="open = false"
                    >
        <!-- Top-Level Link for Desktop -->
                <button
          type="button"
          class="mega-menu__link block py-2 px-4 font-medium hover:text-primary"
          aria-haspopup="true"
          :aria-expanded="open"
          :aria-controls="`submenu-1-0`"
          @click.prevent="open = !open"
        >
          Solutions
        </button>
        
                    <button class="absolute p-1 "
                  :aria-expanded="open"
                  @click.prevent="open = !open"
          >
              <span class="sr-only">Show submenu for Solutions</span>
          </button>
                              <!-- Dropdown Content for Desktop -->
          <div class="dropdown__menu lg:absolute lg:top-[3rem] lg:left-0 p-4 z-50"
               x-show="open"
               x-transition:enter="transition ease-out duration-200"
               x-transition:enter-start="opacity-0"
               x-transition:enter-end="opacity-100"
               x-transition:leave="transition ease-out duration-200"
               x-transition:leave-start="opacity-100"
               x-transition:leave-end="opacity-0"
               x-cloak
               @focusout="await $nextTick();!$el.contains(document.activeElement) && (open = false)"
          >
                          <div class="two-column-solutions-menu lg:bg-white lg:shadow-lg lg:rounded-3xl lg:p-4 mx-auto w-80 max-w-[400px]">
  <!-- Wrapper Grid -->
  <div class="grid grid-cols-1 lg:grid-cols-[1fr,2fr] gap-8 lg:gap-8">
    <!-- Column 1: By Need -->
    
    <!-- Column 2: By Industry -->
    <div class="lg:w-80">
      <!-- Accordion Toggle for Mobile -->
      <input id="by-industry-toggle" type="checkbox" class="hidden peer lg:hidden" />
      <label for="by-industry-toggle" 
             class="flex items-center justify-between text-primary cursor-pointer lg:cursor-default lg:mb-4 pl-4">
        
  
<h5  data-region="header" class="heading mega--heading">
                By Industry
      </h5>

        <!-- Triangle Icon -->
          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2"
              stroke="currentColor" class="size-5 shrink-0 transition-transform duration-300 peer-checked:rotate-180 lg:hidden"
              aria-hidden="true">
            <path stroke-linecap="round" stroke-linejoin="round" d="M19.5 8.25l-7.5 7.5-7.5-7.5"/>
          </svg>
      </label>

      <!-- Content (Accordion on Mobile, Always Visible on Desktop) -->
      <div class="hidden peer-checked:block lg:block">
        <p class="text-xs mb-4 pl-4 lg:pl-8"></p>
        <ul class="grid grid-cols-1 sm:grid-cols-1 lg:grid-cols-1 gap-2 list-none">
                      <li class="pl-0 lg:pl-4">
              <a href="/solutions/government" class="block link--mega" id="government">
                Government
              </a>
            </li>
                      <li class="pl-0 lg:pl-4">
              <a href="/solutions/financial-services" class="block link--mega" id="financial-services">
                Financial Services
              </a>
            </li>
                      <li class="pl-0 lg:pl-4">
              <a href="/solutions/retail-consumer-goods" class="block link--mega" id="retail-&amp;-consumer-goods">
                Retail &amp; Consumer Goods
              </a>
            </li>
                      <li class="pl-0 lg:pl-4">
              <a href="/solutions/software-it-services" class="block link--mega" id="software-&amp;-it-services">
                Software &amp; IT Services
              </a>
            </li>
                      <li class="pl-0 lg:pl-4">
              <a href="/solutions/healthcare" class="block link--mega" id="healthcare">
                Healthcare
              </a>
            </li>
                  </ul>
      </div>
    </div>
  </div>
      <!-- View Solutions Section -->
    <div class="flex items-center mt-4 pl-6 py-2">
    </div>    
</div>                            </div>
              </li>
          <li class="mega-menu__item group relative"
                                x-data="{
                  open: false,
                   leftOffset: 0,
                      adjustDropdown() {
                        const dropdown = this.$el.querySelector('.dropdown__menu');

                        // Make it temporarily visible to measure its size
                        dropdown.style.display = 'block';
                        dropdown.style.visibility = 'hidden';

                        // Step 2: Force a reflow to ensure the browser recalculates layout
                        dropdown.style.left = '0px';

                        const rect = dropdown.getBoundingClientRect();
                        const windowWidth = window.innerWidth;

                        let leftValue = 0;

                        // Calculate right overflow
                        const rightOverflow = rect.right - windowWidth;
                        console.log(rightOverflow, leftValue, window.innerWidth, window.innerWidth);
                        if (rightOverflow > 0) {
                            leftValue = -rightOverflow;
                        }

                        // Calculate left overflow
                        const leftOverflow = rect.left;
                        if (leftOverflow < 0) {
                            leftValue = -leftOverflow;
                        }

                        // Apply the calculated left value
                        dropdown.style.left = `${leftValue}px`;

                        // Restore visibility
                        dropdown.style.visibility = 'visible';
                    }
                  }"
                  @mouseenter="open = true; adjustDropdown($el)"
                  @mouseleave="open = false"
                    >
        <!-- Top-Level Link for Desktop -->
                <button
          type="button"
          class="mega-menu__link block py-2 px-4 font-medium hover:text-primary"
          aria-haspopup="true"
          :aria-expanded="open"
          :aria-controls="`submenu-2-0`"
          @click.prevent="open = !open"
        >
          Products
        </button>
        
                    <button class="absolute p-1 "
                  :aria-expanded="open"
                  @click.prevent="open = !open"
          >
              <span class="sr-only">Show submenu for Products</span>
          </button>
                              <!-- Dropdown Content for Desktop -->
          <div class="dropdown__menu lg:absolute lg:top-[3rem] lg:left-0 p-4 z-50"
               x-show="open"
               x-transition:enter="transition ease-out duration-200"
               x-transition:enter-start="opacity-0"
               x-transition:enter-end="opacity-100"
               x-transition:leave="transition ease-out duration-200"
               x-transition:leave-start="opacity-100"
               x-transition:leave-end="opacity-0"
               x-cloak
               @focusout="await $nextTick();!$el.contains(document.activeElement) && (open = false)"
          >
                                <div class="products-menu lg:bg-white lg:p-4 lg:shadow-lg lg:rounded-3xl w-full max-w-2xl mx-auto">
  <!-- Products Menu Content -->
  <div class="lg:block">
    <div class="flex flex-col lg:flex-row gap-8">
      <!-- Featured Product -->
      <div class="px-4 flex flex-col items-start w-full lg:w-64 flex-shrink-0 border-b border-gray-200 lg:border-r lg:border-b-0">
          
  
<h5  class="heading mb-4">
                Plans and Pricing
      </h5>

          <img 
            src="/sites/default/files/2025-03/image-hero-background-light-large-opt5.svg" 
            alt="" 
            class="w-full max-w-xs h-auto rounded-3xl mb-8"
          >
          <img 
            src="/sites/default/files/logo-puppet-reg_0.svg" 
            alt="" 
            class="w-full mega-menu-feat-img h-auto rounded-3xl mb-4"
          >
          <p class="text-p4-menu mb-4 text-xs">Compare Puppet options and choose the right one for your organization.</p>
          <a href="/pricing" class="link">Request Pricing &gt;</a>

      </div>

      <!-- Products List -->
       <div class="px-4 w-full lg:w-64">
                  <ul class="grid grid-cols-1 sm:grid-cols-1 lg:grid-cols-1 gap-4 list-none mt-4 lg:mt-0">
                          <li class="p-2">
                <a href="/products/puppet-core" class="block link--mega">
                  <div class="font-normal">Puppet Core</div>
                                      <div class="text-xs">Our Core Configuration Management and Infrastructure Automation tool</div>
                                  </a>
              </li>
                          <li class="p-2">
                <a href="/products/puppet-enterprise" class="block link--mega">
                  <div class="font-normal">Puppet Enterprise</div>
                                      <div class="text-xs">Our IT Operations Platform designed to Automate, Scale and Secure your Infrastructure</div>
                                  </a>
              </li>
                          <li class="p-2">
                <a href="/integrations" class="block link--mega">
                  <div class="font-normal">Puppet Integrations</div>
                                      <div class="text-xs">Integrations and platforms supported by Puppet</div>
                                  </a>
              </li>
                      </ul>
        
    <!-- View Products Section -->
    <div class="flex items-center mt-4 pl-2 py-2">

    </div>    

      </div>
    </div>
  </div>
</div>
                      </div>
              </li>
          <li class="mega-menu__item group relative"
                                x-data="{
                  open: false,
                   leftOffset: 0,
                      adjustDropdown() {
                        const dropdown = this.$el.querySelector('.dropdown__menu');

                        // Make it temporarily visible to measure its size
                        dropdown.style.display = 'block';
                        dropdown.style.visibility = 'hidden';

                        // Step 2: Force a reflow to ensure the browser recalculates layout
                        dropdown.style.left = '0px';

                        const rect = dropdown.getBoundingClientRect();
                        const windowWidth = window.innerWidth;

                        let leftValue = 0;

                        // Calculate right overflow
                        const rightOverflow = rect.right - windowWidth;
                        console.log(rightOverflow, leftValue, window.innerWidth, window.innerWidth);
                        if (rightOverflow > 0) {
                            leftValue = -rightOverflow;
                        }

                        // Calculate left overflow
                        const leftOverflow = rect.left;
                        if (leftOverflow < 0) {
                            leftValue = -leftOverflow;
                        }

                        // Apply the calculated left value
                        dropdown.style.left = `${leftValue}px`;

                        // Restore visibility
                        dropdown.style.visibility = 'visible';
                    }
                  }"
                  @mouseenter="open = true; adjustDropdown($el)"
                  @mouseleave="open = false"
                    >
        <!-- Top-Level Link for Desktop -->
                <button
          type="button"
          class="mega-menu__link block py-2 px-4 font-medium hover:text-primary"
          aria-haspopup="true"
          :aria-expanded="open"
          :aria-controls="`submenu-3-0`"
          @click.prevent="open = !open"
        >
          Forge
        </button>
        
                    <button class="absolute p-1 "
                  :aria-expanded="open"
                  @click.prevent="open = !open"
          >
              <span class="sr-only">Show submenu for Forge</span>
          </button>
                              <!-- Dropdown Content for Desktop -->
          <div class="dropdown__menu lg:absolute lg:top-[3rem] lg:left-0 p-4 z-50"
               x-show="open"
               x-transition:enter="transition ease-out duration-200"
               x-transition:enter-start="opacity-0"
               x-transition:enter-end="opacity-100"
               x-transition:leave="transition ease-out duration-200"
               x-transition:leave-start="opacity-100"
               x-transition:leave-end="opacity-0"
               x-cloak
               @focusout="await $nextTick();!$el.contains(document.activeElement) && (open = false)"
          >
                          <div class="one-col-menu lg:bg-white lg:p-4 lg:shadow-lg lg:rounded-3xl w-full max-w-2xl mx-auto">
  <!-- Feat One Col Menu Content -->
  <div class="lg:block">
    <div class="flex flex-col lg:flex-row gap-8">
      
      <!-- Featured: Fixed width -->
      <div class="px-4 flex flex-col items-start w-full lg:w-64 flex-shrink-0 border-b border-gray-200 lg:border-r lg:border-b-0">
        
  
<h5  class="heading mb-4">
                Puppet Forge
      </h5>

        <img 
          src="/sites/default/files/2025-03/image-hero-background-light-large-opt5.svg" 
          alt="Featured Alt Text" 
          class="w-full max-w-xs h-auto rounded-3xl mb-8"
        >
        <img 
          src="/sites/default/files/2025-03/forgeLogo.svg" 
          alt="" 
          class="w-full mega-menu-feat-img h-auto rounded-3xl mb-4"
        >
        <p class="text-p4-menu mb-4 text-xs">The Forge is your one stop location for thousands of Puppet Modules to help accelerate your automation journey. Find and manage modules here.​</p>
        <a href="https://forge.puppet.com/" class="link">Visit Puppet Forge &gt;</a>
      </div>

      <!-- Item List: Flexible -->
      <div class="px-4 w-full lg:w-64">
                  <ul class="grid grid-cols-1 sm:grid-cols-1 lg:grid-cols-1 gap-4 list-none mt-4 lg:mt-0">
                          <li class="p-2">
                <a href="https://forge.puppet.com/modules" class="block link--mega">
                  <div class="font-normal">Puppet Modules</div>
                                      <div class="text-xs">A Catalog of 7,500+ packages of Puppet Code created to get you started fast!</div>
                                  </a>
              </li>
                      </ul>
              </div>
    </div>
  </div>
</div>     
                      </div>
              </li>
          <li class="mega-menu__item group relative"
                                x-data="{
                  open: false,
                   leftOffset: 0,
                      adjustDropdown() {
                        const dropdown = this.$el.querySelector('.dropdown__menu');

                        // Make it temporarily visible to measure its size
                        dropdown.style.display = 'block';
                        dropdown.style.visibility = 'hidden';

                        // Step 2: Force a reflow to ensure the browser recalculates layout
                        dropdown.style.left = '0px';

                        const rect = dropdown.getBoundingClientRect();
                        const windowWidth = window.innerWidth;

                        let leftValue = 0;

                        // Calculate right overflow
                        const rightOverflow = rect.right - windowWidth;
                        console.log(rightOverflow, leftValue, window.innerWidth, window.innerWidth);
                        if (rightOverflow > 0) {
                            leftValue = -rightOverflow;
                        }

                        // Calculate left overflow
                        const leftOverflow = rect.left;
                        if (leftOverflow < 0) {
                            leftValue = -leftOverflow;
                        }

                        // Apply the calculated left value
                        dropdown.style.left = `${leftValue}px`;

                        // Restore visibility
                        dropdown.style.visibility = 'visible';
                    }
                  }"
                  @mouseenter="open = true; adjustDropdown($el)"
                  @mouseleave="open = false"
                    >
        <!-- Top-Level Link for Desktop -->
                <button
          type="button"
          class="mega-menu__link block py-2 px-4 font-medium hover:text-primary"
          aria-haspopup="true"
          :aria-expanded="open"
          :aria-controls="`submenu-4-0`"
          @click.prevent="open = !open"
        >
          Support &amp; Services
        </button>
        
                    <button class="absolute p-1 "
                  :aria-expanded="open"
                  @click.prevent="open = !open"
          >
              <span class="sr-only">Show submenu for Support &amp; Services</span>
          </button>
                              <!-- Dropdown Content for Desktop -->
          <div class="dropdown__menu lg:absolute lg:top-[3rem] lg:left-0 p-4 z-50"
               x-show="open"
               x-transition:enter="transition ease-out duration-200"
               x-transition:enter-start="opacity-0"
               x-transition:enter-end="opacity-100"
               x-transition:leave="transition ease-out duration-200"
               x-transition:leave-start="opacity-100"
               x-transition:leave-end="opacity-0"
               x-cloak
               @focusout="await $nextTick();!$el.contains(document.activeElement) && (open = false)"
          >
                          <div class="two-column-menu lg:bg-white lg:shadow-lg lg:rounded-3xl lg:px-8 lg:py-4 lg:w-max">
  <!-- Desktop Layout -->
  <div class="hidden lg:grid grid-cols-1 md:grid-cols-2 gap-8">
    <!-- First Column -->
    <div class="flex flex-col group">
      <div class="transition duration-500 ease-in-out opacity-100 group-hover:opacity-100">
                
  
<h5  class="heading mega--heading">
                Support
      </h5>
            </div>
      <ul class="mt-4 space-y-2 list-none transition-opacity duration-500 ease-in-out opacity-100 group-hover:opacity-100 pb-4">
                  <li>
            <a href="https://portal.perforce.com/s/product/a3g4X000009wMFBQA2/puppet" class="link--mega" id="customer-portal">
              Customer Portal
            </a>
          </li>
                  <li>
            <a href="https://help.puppet.com/" class="link--mega" id="documentation">
              Documentation
            </a>
          </li>
              </ul>
    </div>

    <!-- Second Column -->
    <div class="flex flex-col pr-4 group">
      <div class="transition duration-500 ease-in-out opacity-100 group-hover:opacity-100">
                    
  
<h5  class="heading mega--heading">
                Services
      </h5>
              </div>
      <ul class="mt-4 space-y-2 list-none transition-opacity duration-500 ease-in-out opacity-100 group-hover:opacity-100">
                  <li>
            <a href="/professional-services" class="link--mega" id="professional-services">
              Professional Services
            </a>
          </li>
                  <li>
            <a href="/support/training" class="link--mega" id="training-&amp;-education">
              Training &amp; Education
            </a>
          </li>
              </ul>
    </div>
  </div>
</div>                      </div>
              </li>
          <li class="mega-menu__item group relative"
                                x-data="{
                  open: false,
                   leftOffset: 0,
                      adjustDropdown() {
                        const dropdown = this.$el.querySelector('.dropdown__menu');

                        // Make it temporarily visible to measure its size
                        dropdown.style.display = 'block';
                        dropdown.style.visibility = 'hidden';

                        // Step 2: Force a reflow to ensure the browser recalculates layout
                        dropdown.style.left = '0px';

                        const rect = dropdown.getBoundingClientRect();
                        const windowWidth = window.innerWidth;

                        let leftValue = 0;

                        // Calculate right overflow
                        const rightOverflow = rect.right - windowWidth;
                        console.log(rightOverflow, leftValue, window.innerWidth, window.innerWidth);
                        if (rightOverflow > 0) {
                            leftValue = -rightOverflow;
                        }

                        // Calculate left overflow
                        const leftOverflow = rect.left;
                        if (leftOverflow < 0) {
                            leftValue = -leftOverflow;
                        }

                        // Apply the calculated left value
                        dropdown.style.left = `${leftValue}px`;

                        // Restore visibility
                        dropdown.style.visibility = 'visible';
                    }
                  }"
                  @mouseenter="open = true; adjustDropdown($el)"
                  @mouseleave="open = false"
                    >
        <!-- Top-Level Link for Desktop -->
                <button
          type="button"
          class="mega-menu__link block py-2 px-4 font-medium hover:text-primary"
          aria-haspopup="true"
          :aria-expanded="open"
          :aria-controls="`submenu-5-0`"
          @click.prevent="open = !open"
        >
          Resources
        </button>
        
                    <button class="absolute p-1 "
                  :aria-expanded="open"
                  @click.prevent="open = !open"
          >
              <span class="sr-only">Show submenu for Resources</span>
          </button>
                              <!-- Dropdown Content for Desktop -->
          <div class="dropdown__menu lg:absolute lg:top-[3rem] lg:left-0 p-4 z-50"
               x-show="open"
               x-transition:enter="transition ease-out duration-200"
               x-transition:enter-start="opacity-0"
               x-transition:enter-end="opacity-100"
               x-transition:leave="transition ease-out duration-200"
               x-transition:leave-start="opacity-100"
               x-transition:leave-end="opacity-0"
               x-cloak
               @focusout="await $nextTick();!$el.contains(document.activeElement) && (open = false)"
          >
                          <div class="two-column-menu-resource grid grid-cols-1 lg:grid-cols-[2fr,1fr] gap-2 lg:bg-white lg:p-6 mx-auto max-w-8xl lg:shadow-lg lg:rounded-3xl">
  <!-- First Column -->
<div class="flex flex-col pr-6 lg:w-60 pl-2">
<ul class="space-y-4 list-none pl-0">
      <li class="pl-0">
      <a href="/resources/ebooks-papers" class="link--mega" id="ebooks-&amp;-papers">
        eBooks &amp; Papers
      </a>
    </li>
      <li class="pl-0">
      <a href="/resources/webinars" class="link--mega" id="webinars">
        Webinars
      </a>
    </li>
      <li class="pl-0">
      <a href="/resources/videos" class="link--mega" id="videos">
        Videos
      </a>
    </li>
      <li class="pl-0">
      <a href="/resources/podcasts" class="link--mega" id="podcasts">
        Podcasts
      </a>
    </li>
      <li class="pl-0">
      <a href="/blog" class="link--mega" id="blogs">
        Blogs
      </a>
    </li>
      <li class="pl-0">
      <a href="/community" class="link--mega" id="community">
        Community
      </a>
    </li>
      <li class="pl-0">
      <a href="/customers" class="link--mega" id="customer-stories">
        Customer Stories
      </a>
    </li>
      <li class="pl-0">
      <a href="/resources" class="link--mega" id="all-resources">
        All Resources
      </a>
    </li>
  </ul>

  </div>

  <!-- Second Column -->
  <div class="flex flex-col justify-center lg:w-92">
          <!-- Featured Resource -->
      <div class="rounded-3xl flex flex-col items-start lg:w-48">
        <img 
          src="/sites/default/files/2025-11/image-web-pup-solution-brief-intelligent-infrastructure-governance.png" 
          alt="Two reports with dark blue and purple covers titled Puppet Healthcare Infrastructure Governance, featuring icons and text." 
          class="w-full max-w-xs h-auto rounded-3xl mb-8"
        >
      
  
<h5  class="heading text-sm text-p4-menu mb-8">
                Puppet: Intelligent Infrastructure Governance
      </h5>
        <p class="text-p4-menu mb-4 text-xs">Advanced Automation for Security, Resiliency, and Efficiency</p>
        <a href="/resources/puppet-infrastructure-governance" class="inline-flex items-center gap-x-2 link">
          Get the Solution Brief
            <!-- Triangle Arrow Icon -->
            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2"
                 stroke="currentColor" class="size-5 shrink-0 transition-transform duration-300"
                 aria-hidden="true">
                <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5"/>
            </svg>
        </a>
      </div>
      </div>
</div>                      </div>
              </li>
      <li class="ml-4 mt-0">
    


<a href="/contact/demo-request"  class="p4-cta mt-0">
      Get a Demo
  </a>
  </li>
  </ul>
</nav>
  </nav>

</div> 
</div> 
<div  id="block-p4base-headerfieldblock" class="block block-- w-full">
  
    
      




      <div class="field field--name-field-header field--type-entity-reference-revisions field--label-hidden">
              <div>


<div id="p-3007" class="header-listings">
  
<div class="listings-hero px-4 py-10 min-h-[350px] flex items-center bg- bg-cover bg-center bg-no-repeat">
    <div class="max-w-container w-full mx-auto">
        <div class="md:flex max-md:mt-6">  
            <div class="md:w-8/12 mr-8 sm:max-w-[55%] place-content-center sm:flex-none ">
                                    

<h1  class="heading">
                Blog
      </h1>
                                            </div>
                        <div class="md:w-4/12 mt-6 md:mt-0 relative">
                
  
<span  class="tag py-2 px-4 shadow-md no-underline text-xs rounded-full focus:outline-none active:shadow-none mr-2 text-p4-dark bg-p4-teal inline-block my-6 absolute ml-6">Featured | Blog</span>                                    
<img
   class="w-full h-auto object-cover rounded-3xl"
      src="https://www.puppet.com/sites/default/files/2025-03/image-web-pup-blog-intro-puppet-core.jpg"
  alt="Introducing Puppet Core: Vendor-Backed Platform Automation for Security, Reliability &amp; Stability"
  />
                                                
                
<a
   class="text-sm w-full px-4 block absolute bottom-0 py-2 bg-p4-primary rounded-3xl text-p4-white"
    href="/blog/puppet-core"
>
      Introducing Puppet Core: Vendor-Backed Platform Automation for Security, Reliability &amp; Stability
  </a>
            </div>    
                    </div>
    </div>    
</div>
</div>
</div>
          </div>
  
  </div>


        </header>
      
    
    
    
    <div  class="main px-0">
    <a id="main-content" tabindex="-1"></a>        <main role="main"  class="main-content">
            <div>
    <div data-drupal-messages-fallback class="hidden"></div><div  id="block-p4base-content" class="block">
  
    
      
<article  class="node">

  
    

  
  <div>
    


            <div class="subnav field field--name-field-subnav field--type-entity-reference field--label-hidden bg-p4-primary shadow-xl">


                                  
    

<ul  class="menu max-w-container mx-auto list-none hidden md:flex">
        
<li  class="menu__item flex leading-5">
                      <a href="/resources" class="menu__link" data-drupal-link-system-path="node/237">Resources</a>
                </li>
      
<li  class="menu__item flex leading-5">
                      <a href="/resources/ebooks-papers" class="menu__link" data-drupal-link-system-path="node/240">eBooks &amp; Papers</a>
                </li>
      
<li  class="menu__item flex leading-5">
                      <a href="/resources/webinars" class="menu__link" data-drupal-link-system-path="node/243">Webinars</a>
                </li>
      
<li  class="menu__item flex leading-5">
                      <a href="/resources/videos" class="menu__link" data-drupal-link-system-path="node/249">Videos</a>
                </li>
      
<li  class="menu__item flex leading-5">
                      <a href="/resources/podcasts" class="menu__link" data-drupal-link-system-path="node/642">Podcasts</a>
                </li>
      
<li  class="menu__item flex leading-5">
                      <a href="/blog" class="menu__link is-active" data-drupal-link-system-path="node/234" aria-current="page">Blog</a>
                </li>
      
<li  class="menu__item flex leading-5 menu__item flex leading-5--with-sub" x-data="{
            open: false,
            leftOffset: 0,
            adjustDropdown() {
                  const dropdown = this.$el.querySelector(&#039;.menu--sub&#039;);
                  dropdown.style.display = &#039;block&#039;;
                  dropdown.style.visibility = &#039;hidden&#039;;
                  dropdown.style.left = &#039;0px&#039;;
                  const rect = dropdown.getBoundingClientRect();
                  const windowWidth = window.innerWidth;

                  let leftValue = 0;
                  const rightOverflow = rect.right - windowWidth;
                  if (rightOverflow &gt; 0) {
                  leftValue = -rightOverflow -  10;
                  }

                  const leftOverflow = rect.left;
                  if (leftOverflow &lt; 0) {
                  leftValue = -leftOverflow + 10;
                  }

                dropdown.style.removeProperty(&#039;left&#039;);
                dropdown.style.visibility = &#039;visible&#039;;
                if (leftOverflow &lt; 0 || rightOverflow &gt; 0) {
                  console.log(&#039;shift&#039;);
                  dropdown.style.left = `${leftValue}px`;
                  dropdown.style.visibility = &#039;visible&#039;;
                }
            }
          }" @mouseenter="open = true; adjustDropdown()" @mouseleave="open = false">
                          <button
                  class="menu__link menu__link--with-sub flex items-center"
                  :aria-expanded="open"
                  @click.prevent="open = !open"
          >
              Community
              <svg
                      xmlns="http://www.w3.org/2000/svg"
                      viewBox="0 0 10 6"
                      class="ml-2 w-[14px] h-[14px] mt-[2px]"
                      fill="currentColor"
              >
                  <path d="M0 0h10L5 6z"></path>
              </svg>
          </button>

                    <span class="expand-sub"></span>
                                                        
    

<ul  class="menu menu--sub menu--sub-1 list-none px-6 py-4 z-40" x-show="open" x-transition:enter="transition ease-out duration-200 transform" x-transition:enter-start="opacity-0 -translate-y-2" x-transition:enter-end="opacity-100 translate-y-0" x-transition:leave="transition ease-out duration-200" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" @focusout="await $nextTick(); if (! $el.contains(document.activeElement)) open = false">
        
<li  class="menu__item flex leading-5 menu__item flex leading-5--sub menu__item flex leading-5--sub-1">
                      <a href="/community" class="menu__link menu__link--sub menu__link--sub-1" data-drupal-link-system-path="node/283">Overview</a>
                </li>
      
<li  class="menu__item flex leading-5 menu__item flex leading-5--sub menu__item flex leading-5--sub-1">
                      <a href="/community/contribute" class="menu__link menu__link--sub menu__link--sub-1" data-drupal-link-system-path="node/75">Contribute</a>
                </li>
      
<li  class="menu__item flex leading-5 menu__item flex leading-5--sub menu__item flex leading-5--sub-1">
                      <a href="https://slack.puppet.com/" class="menu__link menu__link--sub menu__link--sub-1">Connect (Slack)</a>
                </li>
      
<li  class="menu__item flex leading-5 menu__item flex leading-5--sub menu__item flex leading-5--sub-1">
                      <a href="/community/calendar" class="menu__link menu__link--sub menu__link--sub-1" data-drupal-link-system-path="node/339">Calendar</a>
                </li>
      
<li  class="menu__item flex leading-5 menu__item flex leading-5--sub menu__item flex leading-5--sub-1">
                      <a href="/community/open-source/open-source-puppet" class="menu__link menu__link--sub menu__link--sub-1" data-drupal-link-system-path="node/76">Open Source Puppet</a>
                </li>
      
<li  class="menu__item flex leading-5 menu__item flex leading-5--sub menu__item flex leading-5--sub-1">
                      <a href="https://forge.puppet.com/" class="menu__link menu__link--sub menu__link--sub-1">The Forge</a>
                </li>
  </ul>
  
      </li>
      
<li  class="menu__item flex leading-5">
                      <a href="/customers" class="menu__link" data-drupal-link-system-path="node/235">Customer Stories</a>
                </li>
  </ul>
  

<div x-data="{
    mobileMenuOpen: false,
    toggleMenu() {
        this.mobileMenuOpen = !this.mobileMenuOpen;
        console.log(this.mobileMenuOpen);
        if (this.mobileMenuOpen) {
            document.body.style.overflow = 'hidden';
        } else {

            document.body.style.overflow = '';
        }
    }
}" class="md:hidden">
        <button
            @click="toggleMenu()"
            class="md:hidden w-full flex items-center px-8 py-4 rounded-3xl flex justify-between">
        <span class="mr-2 text-white">Overview</span>
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 6" class="w-4 h-4 text-p4-teal" fill="currentColor">
            <path d="M0 0h10L5 6z" />
        </svg>

    </button>

        <nav :class="mobileMenuOpen ? 'block' : 'hidden'" class="mega-menu mt-2 md:block bg-white">
        <div class="fixed inset-0 bg-white z-[500] peer-checked:flex lg:hidden flex-col overflow-y-auto">
            <!-- Close Button -->
            <div class="text-right px-4 py-2 border-b">
                <label @click="toggleMenu()"  class="cursor-pointer text-xl">✖</label>
            </div>
            <!-- Menu Items -->
            <ul class="flex-1 flex flex-col gap-y-4 px-4 py-6 list-none">
                                    <li class="mega-menu__item list-none">
                                                    <!-- Top-Level Link Without Dropdown -->
                            <a href="/resources" class="block py-2 px-4 font-medium text-lg hover:text-primary">
                                Resources
                            </a>
                                            </li>
                                    <li class="mega-menu__item list-none">
                                                    <!-- Top-Level Link Without Dropdown -->
                            <a href="/resources/ebooks-papers" class="block py-2 px-4 font-medium text-lg hover:text-primary">
                                eBooks &amp; Papers
                            </a>
                                            </li>
                                    <li class="mega-menu__item list-none">
                                                    <!-- Top-Level Link Without Dropdown -->
                            <a href="/resources/webinars" class="block py-2 px-4 font-medium text-lg hover:text-primary">
                                Webinars
                            </a>
                                            </li>
                                    <li class="mega-menu__item list-none">
                                                    <!-- Top-Level Link Without Dropdown -->
                            <a href="/resources/videos" class="block py-2 px-4 font-medium text-lg hover:text-primary">
                                Videos
                            </a>
                                            </li>
                                    <li class="mega-menu__item list-none">
                                                    <!-- Top-Level Link Without Dropdown -->
                            <a href="/resources/podcasts" class="block py-2 px-4 font-medium text-lg hover:text-primary">
                                Podcasts
                            </a>
                                            </li>
                                    <li class="mega-menu__item list-none">
                                                    <!-- Top-Level Link Without Dropdown -->
                            <a href="/blog" class="block py-2 px-4 font-medium text-lg hover:text-primary">
                                Blog
                            </a>
                                            </li>
                                    <li class="mega-menu__item list-none">
                                                    <!-- Accordion Toggle for Submenus -->
                                                        <input id="toggle-community-994862175" type="checkbox"
                                   class="hidden peer"/>
                            <label for="toggle-community-994862175"
                                   class="flex items-center justify-between py-2 px-4 font-medium cursor-pointer text-lg">
                                Community
                                <!-- Triangle Icon -->
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2"
                                     stroke="currentColor"
                                     class="size-5 shrink-0 transition-transform duration-300 peer-checked:rotate-90"
                                     aria-hidden="true">
                                    <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5"/>
                                </svg>
                            </label>

                            <!-- Dropdown Content -->
                            <ul class="hidden peer-checked:block space-y-2 list-none">
                                                                    <li class="list-none pl-4 py-2">
                                                                                    <a href="/community"
                                               class="hover:underline text-p4-dark">
                                                Overview
                                            </a>
                                                                            </li>
                                                                    <li class="list-none pl-4 py-2">
                                                                                    <a href="/community/contribute"
                                               class="hover:underline text-p4-dark">
                                                Contribute
                                            </a>
                                                                            </li>
                                                                    <li class="list-none pl-4 py-2">
                                                                                    <a href="https://slack.puppet.com/"
                                               class="hover:underline text-p4-dark">
                                                Connect (Slack)
                                            </a>
                                                                            </li>
                                                                    <li class="list-none pl-4 py-2">
                                                                                    <a href="/community/calendar"
                                               class="hover:underline text-p4-dark">
                                                Calendar
                                            </a>
                                                                            </li>
                                                                    <li class="list-none pl-4 py-2">
                                                                                    <a href="/community/open-source/open-source-puppet"
                                               class="hover:underline text-p4-dark">
                                                Open Source Puppet
                                            </a>
                                                                            </li>
                                                                    <li class="list-none pl-4 py-2">
                                                                                    <a href="https://forge.puppet.com/"
                                               class="hover:underline text-p4-dark">
                                                The Forge
                                            </a>
                                                                            </li>
                                                            </ul>
                                            </li>
                                    <li class="mega-menu__item list-none">
                                                    <!-- Top-Level Link Without Dropdown -->
                            <a href="/customers" class="block py-2 px-4 font-medium text-lg hover:text-primary">
                                Customer Stories
                            </a>
                                            </li>
                            </ul>
        </div>
    </nav>
</div></div>
      
  </div>

</article>


  </div>
<div  id="block-p4base-views-block-blog-block-1" class="block views-element-container">
  
    
      <div><div class="js-view-dom-id-52f01ba2fd0d4cc76f9e272af100ad1fd37ba8fc8ec2877f39a35e856200a8df">
  
  
  

  
  <form class="views-exposed-form bef-exposed-form" data-bef-auto-submit="" data-bef-auto-submit-delay="500" data-bef-auto-submit-minimum-length="3" data-bef-auto-submit-full-form="" data-drupal-selector="views-exposed-form-blog-block-1" action="/blog" method="get" id="views-exposed-form-blog-block-1" accept-charset="UTF-8">
  <div class="js-form-item form-item">
      <label for="edit-field-topics-target-id" class="visually-hidden form-item__label">Topics</label>
        <div class="form-item__dropdown"><select data-drupal-selector="edit-field-topics-target-id" id="edit-field-topics-target-id" name="field_topics_target_id" class="form-select form-item__select"><option value="All" selected="selected">Topic</option><option value="45">Announcements &amp; Events</option><option value="51">Cloud</option><option value="48">Community &amp; Open Source</option><option value="40">Configuration Management</option><option value="44">DevOps</option><option value="46">Ecosystems &amp; Integrations</option><option value="50">Glossary</option><option value="43">Government</option><option value="39">How to &amp; Use Cases</option><option value="47">Infrastructure Automation</option><option value="52">Platform Engineering</option><option value="42">Products &amp; Services</option><option value="41">Security &amp; Compliance</option><option value="49">Windows</option></select></div>
        </div>
<div class="js-form-item form-item">
      <label for="edit-blog-created-year" class="visually-hidden form-item__label">Sort by Year</label>
        <div class="form-item__dropdown"><select data-drupal-selector="edit-blog-created-year" id="edit-blog-created-year" name="blog_created_year" class="form-select form-item__select"><option value="All" selected="selected">Sort By Year</option><option value="2026">2026</option><option value="2025">2025</option><option value="2024">2024</option><option value="2023">2023</option><option value="2022">2022</option><option value="2021">2021</option><option value="2020">2020</option><option value="2019">2019</option></select></div>
        </div>
<div data-drupal-selector="edit-actions" class="form-actions js-form-wrapper form-wrapper" id="edit-actions--2"><input data-bef-auto-submit-click="" class="js-hide button js-form-submit form-submit form-item__textfield" data-drupal-selector="edit-submit-blog" type="submit" id="edit-submit-blog" value="Apply" />
</div>


</form>

  

  




<div class="views-view-responsive-grid views-view-responsive-grid--horizontal" style="--views-responsive-grid--column-count:3;--views-responsive-grid--cell-min-width:350px;--views-responsive-grid--layout-gap:10px;">
      <div class="views-view-responsive-grid__item">
      <div class="views-view-responsive-grid__item-inner">
    







<div class="card-component group/[card] w-full p-4 h-full transition-all relative duration-300 hover:text-p4-white">
  <a href="/blog/agent-vs-agentless-security" title="Agent vs. Agentless: What is better for Infrastructure Management? "
        class="absolute w-full h-full inset-0 z-30"
    >
  </a>
<div class="card flex flex-wrap bg-white rounded-3xl shadow-md overflow-hidden relative h-full group/[card]">

        <div class="absolute inset-0 bg-gradient-to-b from-p4-primary to-p4-dark opacity-0 transition-opacity duration-700 ease-in-out group-hover/[card]:opacity-100"></div>

        
        <div class="card-top-section w-full h-48 relative z-10 transition-all duration-500 group-hover/[card]:opacity-0 ">
                            <img src="/sites/default/files/2026-02/pup-blog-agent-vs.-agentless-security-740x390.jpg" alt="Agent vs. Agentless: What is better for Infrastructure Management? " class="absolute inset-0 w-full h-full  object-cover"/>
            
            
  
<span  class="tag py-2 px-4 shadow-md no-underline text-xs rounded-full focus:outline-none active:shadow-none mr-2 text-p4-dark bg-p4-teal inline-block m-8 absolute">Blog</span>        </div>

                        <div class="card-content basis-full flex flex-col justify-between flex-grow pt-4 px-8 pb-16 relative z-10 transition-all duration-500 group-hover/[card]:text-p4-white">
            <div class="group-hover/[card]:-translate-y-[185px] transition-all duration-500">
                                
  
<h3  class="heading text-p4-dark text-sm transition-all duration-700 group-hover/[card]:text-p4-white ">
                      Agent vs. Agentless: What is better for Infrastructure Management? 
      </h3>
                
                                
                
                            </div>
        </div>
                            <div class="card-topics-text text-p4-dark mx-8 min-h-[85px] text-[1rem] leading-6 w-full group-hover/[card]:text-p4-white z-20 text-no-underline relative overflow-hidden">
                <div class="absolute bottom-0 border-t-2 pt-2 w-full min-h-[75px]">
                    <div class="marquee" aria-label="Product topics scroller">
                        <div class="marquee__track">
                            Security &amp; Compliance, DevOps
                        </div>
                    </div>
                </div>
            </div>
        
        
            </div>
</div>
</div>
    </div>
      <div class="views-view-responsive-grid__item">
      <div class="views-view-responsive-grid__item-inner">
    







<div class="card-component group/[card] w-full p-4 h-full transition-all relative duration-300 hover:text-p4-white">
  <a href="/blog/puppet-tam-service" title="How the Puppet Technical Account Management (TAM) Service Unlocks Success"
        class="absolute w-full h-full inset-0 z-30"
    >
  </a>
<div class="card flex flex-wrap bg-white rounded-3xl shadow-md overflow-hidden relative h-full group/[card]">

        <div class="absolute inset-0 bg-gradient-to-b from-p4-primary to-p4-dark opacity-0 transition-opacity duration-700 ease-in-out group-hover/[card]:opacity-100"></div>

        
        <div class="card-top-section w-full h-48 relative z-10 transition-all duration-500 group-hover/[card]:opacity-0 ">
                            <img src="/sites/default/files/2026-02/pup-blog-tam-740x390.jpg" alt="How the Puppet Technical Account Management (TAM) Service Unlocks Success" class="absolute inset-0 w-full h-full  object-cover"/>
            
            
  
<span  class="tag py-2 px-4 shadow-md no-underline text-xs rounded-full focus:outline-none active:shadow-none mr-2 text-p4-dark bg-p4-teal inline-block m-8 absolute">Blog</span>        </div>

                        <div class="card-content basis-full flex flex-col justify-between flex-grow pt-4 px-8 pb-16 relative z-10 transition-all duration-500 group-hover/[card]:text-p4-white">
            <div class="group-hover/[card]:-translate-y-[185px] transition-all duration-500">
                                
  
<h3  class="heading text-p4-dark text-sm transition-all duration-700 group-hover/[card]:text-p4-white ">
                      How the Puppet Technical Account Management (TAM) Service Unlocks Success
      </h3>
                
                                
                
                            </div>
        </div>
                            <div class="card-topics-text text-p4-dark mx-8 min-h-[85px] text-[1rem] leading-6 w-full group-hover/[card]:text-p4-white z-20 text-no-underline relative overflow-hidden">
                <div class="absolute bottom-0 border-t-2 pt-2 w-full min-h-[75px]">
                    <div class="marquee" aria-label="Product topics scroller">
                        <div class="marquee__track">
                            Products &amp; Services, DevOps
                        </div>
                    </div>
                </div>
            </div>
        
        
            </div>
</div>
</div>
    </div>
      <div class="views-view-responsive-grid__item">
      <div class="views-view-responsive-grid__item-inner">
    







<div class="card-component group/[card] w-full p-4 h-full transition-all relative duration-300 hover:text-p4-white">
  <a href="/blog/what-is-infrastructure-as-code" title="What is Infrastructure as Code (IaC)? Best Practices, Tools, Examples &amp; Why Every Organization Should Be Using It"
        class="absolute w-full h-full inset-0 z-30"
    >
  </a>
<div class="card flex flex-wrap bg-white rounded-3xl shadow-md overflow-hidden relative h-full group/[card]">

        <div class="absolute inset-0 bg-gradient-to-b from-p4-primary to-p4-dark opacity-0 transition-opacity duration-700 ease-in-out group-hover/[card]:opacity-100"></div>

        
        <div class="card-top-section w-full h-48 relative z-10 transition-all duration-500 group-hover/[card]:opacity-0 ">
                            <img src="/sites/default/files/2025-03/image-blog-pup-what-is-infrastructure-as-code.jpg" alt="What is Infrastructure as Code (IaC)? Best Practices, Tools, Examples &amp; Why Every Organization Should Be Using It" class="absolute inset-0 w-full h-full  object-cover"/>
            
            
  
<span  class="tag py-2 px-4 shadow-md no-underline text-xs rounded-full focus:outline-none active:shadow-none mr-2 text-p4-dark bg-p4-teal inline-block m-8 absolute">Blog</span>        </div>

                        <div class="card-content basis-full flex flex-col justify-between flex-grow pt-4 px-8 pb-16 relative z-10 transition-all duration-500 group-hover/[card]:text-p4-white">
            <div class="group-hover/[card]:-translate-y-[185px] transition-all duration-500">
                                
  
<h3  class="heading text-p4-dark text-sm transition-all duration-700 group-hover/[card]:text-p4-white ">
                      What is Infrastructure as Code (IaC)? Best Practices, Tools, Examples &amp; Why Every Organization Should Be Using It
      </h3>
                
                                                    <div class="left-0 w-full text-p4-white absolute opacity-0 group-hover/[card]:opacity-100 transition-all duration-800 mt-6 text-[1rem] leading-6">
                        What is infrastructure as code (IaC)? It&#039;s the act of turning OS, app, security, storage &amp; other IT configurations as code. Learn how it&#039;s done &amp; tools here.
                    </div>
                
                
                            </div>
        </div>
                            <div class="card-topics-text text-p4-dark mx-8 min-h-[85px] text-[1rem] leading-6 w-full group-hover/[card]:text-p4-white z-20 text-no-underline relative overflow-hidden">
                <div class="absolute bottom-0 border-t-2 pt-2 w-full min-h-[75px]">
                    <div class="marquee" aria-label="Product topics scroller">
                        <div class="marquee__track">
                            Infrastructure Automation, DevOps
                        </div>
                    </div>
                </div>
            </div>
        
        
            </div>
</div>
</div>
    </div>
      <div class="views-view-responsive-grid__item">
      <div class="views-view-responsive-grid__item-inner">
    







<div class="card-component group/[card] w-full p-4 h-full transition-all relative duration-300 hover:text-p4-white">
  <a href="/blog/infrastructure-management-security-stability" title="Why Security and Stability Matter in Infrastructure Management "
        class="absolute w-full h-full inset-0 z-30"
    >
  </a>
<div class="card flex flex-wrap bg-white rounded-3xl shadow-md overflow-hidden relative h-full group/[card]">

        <div class="absolute inset-0 bg-gradient-to-b from-p4-primary to-p4-dark opacity-0 transition-opacity duration-700 ease-in-out group-hover/[card]:opacity-100"></div>

        
        <div class="card-top-section w-full h-48 relative z-10 transition-all duration-500 group-hover/[card]:opacity-0 ">
                            <img src="/sites/default/files/2026-02/pup-blog-infrastructure-management-740x390.jpg" alt="Why Security and Stability Matter in Infrastructure Management " class="absolute inset-0 w-full h-full  object-cover"/>
            
            
  
<span  class="tag py-2 px-4 shadow-md no-underline text-xs rounded-full focus:outline-none active:shadow-none mr-2 text-p4-dark bg-p4-teal inline-block m-8 absolute">Blog</span>        </div>

                        <div class="card-content basis-full flex flex-col justify-between flex-grow pt-4 px-8 pb-16 relative z-10 transition-all duration-500 group-hover/[card]:text-p4-white">
            <div class="group-hover/[card]:-translate-y-[185px] transition-all duration-500">
                                
  
<h3  class="heading text-p4-dark text-sm transition-all duration-700 group-hover/[card]:text-p4-white ">
                      Why Security and Stability Matter in Infrastructure Management 
      </h3>
                
                                
                
                            </div>
        </div>
                            <div class="card-topics-text text-p4-dark mx-8 min-h-[85px] text-[1rem] leading-6 w-full group-hover/[card]:text-p4-white z-20 text-no-underline relative overflow-hidden">
                <div class="absolute bottom-0 border-t-2 pt-2 w-full min-h-[75px]">
                    <div class="marquee" aria-label="Product topics scroller">
                        <div class="marquee__track">
                            Security &amp; Compliance, Glossary
                        </div>
                    </div>
                </div>
            </div>
        
        
            </div>
</div>
</div>
    </div>
      <div class="views-view-responsive-grid__item">
      <div class="views-view-responsive-grid__item-inner">
    







<div class="card-component group/[card] w-full p-4 h-full transition-all relative duration-300 hover:text-p4-white">
  <a href="/blog/what-is-devops" title="What is DevOps?﻿ Definition, Lifecycle, Best Practices, &amp; Tools "
        class="absolute w-full h-full inset-0 z-30"
    >
  </a>
<div class="card flex flex-wrap bg-white rounded-3xl shadow-md overflow-hidden relative h-full group/[card]">

        <div class="absolute inset-0 bg-gradient-to-b from-p4-primary to-p4-dark opacity-0 transition-opacity duration-700 ease-in-out group-hover/[card]:opacity-100"></div>

        
        <div class="card-top-section w-full h-48 relative z-10 transition-all duration-500 group-hover/[card]:opacity-0 ">
                            <img src="/sites/default/files/2026-02/pup-blog-what-is-devops-740x390.jpg" alt="What is DevOps?﻿ Definition, Lifecycle, Best Practices, &amp; Tools " class="absolute inset-0 w-full h-full  object-cover"/>
            
            
  
<span  class="tag py-2 px-4 shadow-md no-underline text-xs rounded-full focus:outline-none active:shadow-none mr-2 text-p4-dark bg-p4-teal inline-block m-8 absolute">Blog</span>        </div>

                        <div class="card-content basis-full flex flex-col justify-between flex-grow pt-4 px-8 pb-16 relative z-10 transition-all duration-500 group-hover/[card]:text-p4-white">
            <div class="group-hover/[card]:-translate-y-[185px] transition-all duration-500">
                                
  
<h3  class="heading text-p4-dark text-sm transition-all duration-700 group-hover/[card]:text-p4-white ">
                      What is DevOps?﻿ Definition, Lifecycle, Best Practices, &amp; Tools 
      </h3>
                
                                                    <div class="left-0 w-full text-p4-white absolute opacity-0 group-hover/[card]:opacity-100 transition-all duration-800 mt-6 text-[1rem] leading-6">
                        What is DevOps? This informative, historical blog lays out the changes that have led to DevOps and the foundational ideas of the DevOps movement.
                    </div>
                
                
                            </div>
        </div>
                            <div class="card-topics-text text-p4-dark mx-8 min-h-[85px] text-[1rem] leading-6 w-full group-hover/[card]:text-p4-white z-20 text-no-underline relative overflow-hidden">
                <div class="absolute bottom-0 border-t-2 pt-2 w-full min-h-[75px]">
                    <div class="marquee" aria-label="Product topics scroller">
                        <div class="marquee__track">
                            Glossary, DevOps
                        </div>
                    </div>
                </div>
            </div>
        
        
            </div>
</div>
</div>
    </div>
      <div class="views-view-responsive-grid__item">
      <div class="views-view-responsive-grid__item-inner">








<div class="card-component group/[card] w-full p-4 h-full transition-all relative duration-300 hover:text-p4-white">
  <a href="/blog/2025-devops-challenges-puppet-solutions" title="Why 2025 Changed Everything for DevOps and What Puppet Built to Meet It"
        class="absolute w-full h-full inset-0 z-30"
    >
  </a>
<div class="card flex flex-wrap bg-white rounded-3xl shadow-md overflow-hidden relative h-full group/[card]">

        <div class="absolute inset-0 bg-gradient-to-b from-p4-primary to-p4-dark opacity-0 transition-opacity duration-700 ease-in-out group-hover/[card]:opacity-100"></div>

        
        <div class="card-top-section w-full h-48 relative z-10 transition-all duration-500 group-hover/[card]:opacity-0 ">
                            <img src="/sites/default/files/2026-01/pup-blog-puppet-year-in-review-740x390-v2.jpg" alt="Why 2025 Changed Everything for DevOps and What Puppet Built to Meet It" class="absolute inset-0 w-full h-full  object-cover"/>
            
            
  
<span  class="tag py-2 px-4 shadow-md no-underline text-xs rounded-full focus:outline-none active:shadow-none mr-2 text-p4-dark bg-p4-teal inline-block m-8 absolute">Blog</span>        </div>

                        <div class="card-content basis-full flex flex-col justify-between flex-grow pt-4 px-8 pb-16 relative z-10 transition-all duration-500 group-hover/[card]:text-p4-white">
            <div class="group-hover/[card]:-translate-y-[185px] transition-all duration-500">
                                
  
<h3  class="heading text-p4-dark text-sm transition-all duration-700 group-hover/[card]:text-p4-white ">
                      Why 2025 Changed Everything for DevOps and What Puppet Built to Meet It
      </h3>
                
                                
                
                            </div>
        </div>
                
        
            </div>
</div>
</div>
    </div>
      <div class="views-view-responsive-grid__item">
      <div class="views-view-responsive-grid__item-inner">








<div class="card-component group/[card] w-full p-4 h-full transition-all relative duration-300 hover:text-p4-white">
  <a href="/blog/outdated-python-hidden-costs" title="Outdated Python Could Be Costing You More Than You Think"
        class="absolute w-full h-full inset-0 z-30"
    >
  </a>
<div class="card flex flex-wrap bg-white rounded-3xl shadow-md overflow-hidden relative h-full group/[card]">

        <div class="absolute inset-0 bg-gradient-to-b from-p4-primary to-p4-dark opacity-0 transition-opacity duration-700 ease-in-out group-hover/[card]:opacity-100"></div>

        
        <div class="card-top-section w-full h-48 relative z-10 transition-all duration-500 group-hover/[card]:opacity-0 ">
                            <img src="/sites/default/files/2025-12/pup-blog-outdated-python-740x390.jpg" alt="Outdated Python Could Be Costing You More Than You Think" class="absolute inset-0 w-full h-full  object-cover"/>
            
            
  
<span  class="tag py-2 px-4 shadow-md no-underline text-xs rounded-full focus:outline-none active:shadow-none mr-2 text-p4-dark bg-p4-teal inline-block m-8 absolute">Blog</span>        </div>

                        <div class="card-content basis-full flex flex-col justify-between flex-grow pt-4 px-8 pb-16 relative z-10 transition-all duration-500 group-hover/[card]:text-p4-white">
            <div class="group-hover/[card]:-translate-y-[185px] transition-all duration-500">
                                
  
<h3  class="heading text-p4-dark text-sm transition-all duration-700 group-hover/[card]:text-p4-white ">
                      Outdated Python Could Be Costing You More Than You Think
      </h3>
                
                                
                
                            </div>
        </div>
                
        
            </div>
</div>
</div>
    </div>
      <div class="views-view-responsive-grid__item">
      <div class="views-view-responsive-grid__item-inner">
    







<div class="card-component group/[card] w-full p-4 h-full transition-all relative duration-300 hover:text-p4-white">
  <a href="/blog/what-is-it-compliance" title="What Is IT Compliance? IT Compliance Technology + Standards to Lower Your Compliance Risk"
        class="absolute w-full h-full inset-0 z-30"
    >
  </a>
<div class="card flex flex-wrap bg-white rounded-3xl shadow-md overflow-hidden relative h-full group/[card]">

        <div class="absolute inset-0 bg-gradient-to-b from-p4-primary to-p4-dark opacity-0 transition-opacity duration-700 ease-in-out group-hover/[card]:opacity-100"></div>

        
        <div class="card-top-section w-full h-48 relative z-10 transition-all duration-500 group-hover/[card]:opacity-0 ">
                            <img src="/sites/default/files/2025-12/pup-blog-what-is-it-compliance-740x390.jpg" alt="What Is IT Compliance? IT Compliance Technology + Standards to Lower Your Compliance Risk" class="absolute inset-0 w-full h-full  object-cover"/>
            
            
  
<span  class="tag py-2 px-4 shadow-md no-underline text-xs rounded-full focus:outline-none active:shadow-none mr-2 text-p4-dark bg-p4-teal inline-block m-8 absolute">Blog</span>        </div>

                        <div class="card-content basis-full flex flex-col justify-between flex-grow pt-4 px-8 pb-16 relative z-10 transition-all duration-500 group-hover/[card]:text-p4-white">
            <div class="group-hover/[card]:-translate-y-[185px] transition-all duration-500">
                                
  
<h3  class="heading text-p4-dark text-sm transition-all duration-700 group-hover/[card]:text-p4-white ">
                      What Is IT Compliance? IT Compliance Technology + Standards to Lower Your Compliance Risk
      </h3>
                
                                
                
                            </div>
        </div>
                            <div class="card-topics-text text-p4-dark mx-8 min-h-[85px] text-[1rem] leading-6 w-full group-hover/[card]:text-p4-white z-20 text-no-underline relative overflow-hidden">
                <div class="absolute bottom-0 border-t-2 pt-2 w-full min-h-[75px]">
                    <div class="marquee" aria-label="Product topics scroller">
                        <div class="marquee__track">
                            Glossary, Security &amp; Compliance
                        </div>
                    </div>
                </div>
            </div>
        
        
            </div>
</div>
</div>
    </div>
      <div class="views-view-responsive-grid__item">
      <div class="views-view-responsive-grid__item-inner">
      







<div class="card-component group/[card] w-full p-4 h-full transition-all relative duration-300 hover:text-p4-white">
  <a href="/blog/puppet-edge-workflows-automation" title="Packaging Operations Runbooks with Puppet Edge Workflows"
        class="absolute w-full h-full inset-0 z-30"
    >
  </a>
<div class="card flex flex-wrap bg-white rounded-3xl shadow-md overflow-hidden relative h-full group/[card]">

        <div class="absolute inset-0 bg-gradient-to-b from-p4-primary to-p4-dark opacity-0 transition-opacity duration-700 ease-in-out group-hover/[card]:opacity-100"></div>

        
        <div class="card-top-section w-full h-48 relative z-10 transition-all duration-500 group-hover/[card]:opacity-0 ">
                            <img src="/sites/default/files/2025-11/pup-blog-puppet-edge-workflows-740x390-01.jpg" alt="Packaging Operations Runbooks with Puppet Edge Workflows" class="absolute inset-0 w-full h-full  object-cover"/>
            
            
  
<span  class="tag py-2 px-4 shadow-md no-underline text-xs rounded-full focus:outline-none active:shadow-none mr-2 text-p4-dark bg-p4-teal inline-block m-8 absolute">Blog</span>        </div>

                        <div class="card-content basis-full flex flex-col justify-between flex-grow pt-4 px-8 pb-16 relative z-10 transition-all duration-500 group-hover/[card]:text-p4-white">
            <div class="group-hover/[card]:-translate-y-[185px] transition-all duration-500">
                                
  
<h3  class="heading text-p4-dark text-sm transition-all duration-700 group-hover/[card]:text-p4-white ">
                      Packaging Operations Runbooks with Puppet Edge Workflows
      </h3>
                
                                
                
                            </div>
        </div>
                            <div class="card-topics-text text-p4-dark mx-8 min-h-[85px] text-[1rem] leading-6 w-full group-hover/[card]:text-p4-white z-20 text-no-underline relative overflow-hidden">
                <div class="absolute bottom-0 border-t-2 pt-2 w-full min-h-[75px]">
                    <div class="marquee" aria-label="Product topics scroller">
                        <div class="marquee__track">
                            How to &amp; Use Cases, Infrastructure Automation, Configuration Management
                        </div>
                    </div>
                </div>
            </div>
        
        
            </div>
</div>
</div>
    </div>
      <div class="views-view-responsive-grid__item">
      <div class="views-view-responsive-grid__item-inner">
    







<div class="card-component group/[card] w-full p-4 h-full transition-all relative duration-300 hover:text-p4-white">
  <a href="/blog/strengthening-open-source-facter" title="Strengthening Open Source Facter: Ensuring Compatibility and Essential Maintenance "
        class="absolute w-full h-full inset-0 z-30"
    >
  </a>
<div class="card flex flex-wrap bg-white rounded-3xl shadow-md overflow-hidden relative h-full group/[card]">

        <div class="absolute inset-0 bg-gradient-to-b from-p4-primary to-p4-dark opacity-0 transition-opacity duration-700 ease-in-out group-hover/[card]:opacity-100"></div>

        
        <div class="card-top-section w-full h-48 relative z-10 transition-all duration-500 group-hover/[card]:opacity-0 ">
                            <img src="/sites/default/files/2025-11/pup-blog-strengthening-open-source-facter-740x390.jpg" alt="Strengthening Open Source Facter: Ensuring Compatibility and Essential Maintenance " class="absolute inset-0 w-full h-full  object-cover"/>
            
            
  
<span  class="tag py-2 px-4 shadow-md no-underline text-xs rounded-full focus:outline-none active:shadow-none mr-2 text-p4-dark bg-p4-teal inline-block m-8 absolute">Blog</span>        </div>

                        <div class="card-content basis-full flex flex-col justify-between flex-grow pt-4 px-8 pb-16 relative z-10 transition-all duration-500 group-hover/[card]:text-p4-white">
            <div class="group-hover/[card]:-translate-y-[185px] transition-all duration-500">
                                
  
<h3  class="heading text-p4-dark text-sm transition-all duration-700 group-hover/[card]:text-p4-white ">
                      Strengthening Open Source Facter: Ensuring Compatibility and Essential Maintenance 
      </h3>
                
                                
                
                            </div>
        </div>
                            <div class="card-topics-text text-p4-dark mx-8 min-h-[85px] text-[1rem] leading-6 w-full group-hover/[card]:text-p4-white z-20 text-no-underline relative overflow-hidden">
                <div class="absolute bottom-0 border-t-2 pt-2 w-full min-h-[75px]">
                    <div class="marquee" aria-label="Product topics scroller">
                        <div class="marquee__track">
                            Community &amp; Open Source, Products &amp; Services
                        </div>
                    </div>
                </div>
            </div>
        
        
            </div>
</div>
</div>
    </div>
      <div class="views-view-responsive-grid__item">
      <div class="views-view-responsive-grid__item-inner">
    







<div class="card-component group/[card] w-full p-4 h-full transition-all relative duration-300 hover:text-p4-white">
  <a href="/blog/breach-response-using-automation" title="When Breaches Expose Your Secrets: Why Automation is the Key to Fast, Scalable Remediation "
        class="absolute w-full h-full inset-0 z-30"
    >
  </a>
<div class="card flex flex-wrap bg-white rounded-3xl shadow-md overflow-hidden relative h-full group/[card]">

        <div class="absolute inset-0 bg-gradient-to-b from-p4-primary to-p4-dark opacity-0 transition-opacity duration-700 ease-in-out group-hover/[card]:opacity-100"></div>

        
        <div class="card-top-section w-full h-48 relative z-10 transition-all duration-500 group-hover/[card]:opacity-0 ">
                            <img src="/sites/default/files/2025-11/pup-blog-breaches-expose-your-secrets-740x390.jpg" alt="When Breaches Expose Your Secrets: Why Automation is the Key to Fast, Scalable Remediation " class="absolute inset-0 w-full h-full  object-cover"/>
            
            
  
<span  class="tag py-2 px-4 shadow-md no-underline text-xs rounded-full focus:outline-none active:shadow-none mr-2 text-p4-dark bg-p4-teal inline-block m-8 absolute">Blog</span>        </div>

                        <div class="card-content basis-full flex flex-col justify-between flex-grow pt-4 px-8 pb-16 relative z-10 transition-all duration-500 group-hover/[card]:text-p4-white">
            <div class="group-hover/[card]:-translate-y-[185px] transition-all duration-500">
                                
  
<h3  class="heading text-p4-dark text-sm transition-all duration-700 group-hover/[card]:text-p4-white ">
                      When Breaches Expose Your Secrets: Why Automation is the Key to Fast, Scalable Remediation 
      </h3>
                
                                
                
                            </div>
        </div>
                            <div class="card-topics-text text-p4-dark mx-8 min-h-[85px] text-[1rem] leading-6 w-full group-hover/[card]:text-p4-white z-20 text-no-underline relative overflow-hidden">
                <div class="absolute bottom-0 border-t-2 pt-2 w-full min-h-[75px]">
                    <div class="marquee" aria-label="Product topics scroller">
                        <div class="marquee__track">
                            Security &amp; Compliance, Infrastructure Automation
                        </div>
                    </div>
                </div>
            </div>
        
        
            </div>
</div>
</div>
    </div>
      <div class="views-view-responsive-grid__item">
      <div class="views-view-responsive-grid__item-inner">
      







<div class="card-component group/[card] w-full p-4 h-full transition-all relative duration-300 hover:text-p4-white">
  <a href="/blog/run-ansible-playbooks-with-puppet-edge-playbook-runner" title="Running Ansible Playbooks from Puppet Edge "
        class="absolute w-full h-full inset-0 z-30"
    >
  </a>
<div class="card flex flex-wrap bg-white rounded-3xl shadow-md overflow-hidden relative h-full group/[card]">

        <div class="absolute inset-0 bg-gradient-to-b from-p4-primary to-p4-dark opacity-0 transition-opacity duration-700 ease-in-out group-hover/[card]:opacity-100"></div>

        
        <div class="card-top-section w-full h-48 relative z-10 transition-all duration-500 group-hover/[card]:opacity-0 ">
                            <img src="/sites/default/files/2025-10/pup-blog-puppet-edge-playbook-runner-740x390.jpg" alt="Running Ansible Playbooks from Puppet Edge " class="absolute inset-0 w-full h-full  object-cover"/>
            
            
  
<span  class="tag py-2 px-4 shadow-md no-underline text-xs rounded-full focus:outline-none active:shadow-none mr-2 text-p4-dark bg-p4-teal inline-block m-8 absolute">Blog</span>        </div>

                        <div class="card-content basis-full flex flex-col justify-between flex-grow pt-4 px-8 pb-16 relative z-10 transition-all duration-500 group-hover/[card]:text-p4-white">
            <div class="group-hover/[card]:-translate-y-[185px] transition-all duration-500">
                                
  
<h3  class="heading text-p4-dark text-sm transition-all duration-700 group-hover/[card]:text-p4-white ">
                      Running Ansible Playbooks from Puppet Edge 
      </h3>
                
                                
                
                            </div>
        </div>
                            <div class="card-topics-text text-p4-dark mx-8 min-h-[85px] text-[1rem] leading-6 w-full group-hover/[card]:text-p4-white z-20 text-no-underline relative overflow-hidden">
                <div class="absolute bottom-0 border-t-2 pt-2 w-full min-h-[75px]">
                    <div class="marquee" aria-label="Product topics scroller">
                        <div class="marquee__track">
                            Infrastructure Automation, Configuration Management, How to &amp; Use Cases
                        </div>
                    </div>
                </div>
            </div>
        
        
            </div>
</div>
</div>
    </div>
  </div>

    

  <nav  class="pager" aria-label="Pagination" role="navigation">
    <ul  class="pager__items js-pager__items">
                                                                        <li  class="pager__item is-active">
                    <a  class="pager__link is-active" href="?page=0" title="Current page" aria-current="page" aria-current=&quot;page&quot;>
            <span  class="visually-hidden">
              Current page
            </span>1</a>
        </li>
                              <li  class="pager__item">
                    <a  class="pager__link" href="?page=1" title="Go to page 2" >
            <span  class="visually-hidden">
              Page 
            </span>2</a>
        </li>
                              <li  class="pager__item">
                    <a  class="pager__link" href="?page=2" title="Go to page 3" >
            <span  class="visually-hidden">
              Page 
            </span>3</a>
        </li>
                              <li  class="pager__item">
                    <a  class="pager__link" href="?page=3" title="Go to page 4" >
            <span  class="visually-hidden">
              Page 
            </span>4</a>
        </li>
                              <li  class="pager__item">
                    <a  class="pager__link" href="?page=4" title="Go to page 5" >
            <span  class="visually-hidden">
              Page 
            </span>5</a>
        </li>
                              <li  class="pager__item">
                    <a  class="pager__link" href="?page=5" title="Go to page 6" >
            <span  class="visually-hidden">
              Page 
            </span>6</a>
        </li>
                              <li  class="pager__item">
                    <a  class="pager__link" href="?page=6" title="Go to page 7" >
            <span  class="visually-hidden">
              Page 
            </span>7</a>
        </li>
                              <li  class="pager__item">
                    <a  class="pager__link" href="?page=7" title="Go to page 8" >
            <span  class="visually-hidden">
              Page 
            </span>8</a>
        </li>
                              <li  class="pager__item">
                    <a  class="pager__link" href="?page=8" title="Go to page 9" >
            <span  class="visually-hidden">
              Page 
            </span>9</a>
        </li>
                          <li  class="pager__item pager__item--ellipsis">&hellip;</li>
                          <li  class="pager__item pager__item--next">
          <a  class="pager__link pager__link--next" href="?page=1" title="Go to next page" rel="next">
            <span  class="visually-hidden">Next page</span>
            <span aria-hidden="true">››</span>
          </a>
        </li>
                          <li  class="pager__item pager__item--last">
          <a  class="pager__link pager__link--last" href="?page=18" title="Go to last page" >
            <span  class="visually-hidden">Last page</span>
            <span aria-hidden="true">Last »</span>
          </a>
        </li>
          </ul>
  </nav>


  
  

  
  
</div>
</div>

  </div>

  </div>

      </main>
  </div>
            
<footer  class="footer footer-- min-h-72">
  <div  class="footer__inner">
    <!-- Footer Menu Section -->
    <div  class="footer__menu border-b border-p4-dark max-w-container mx-auto py-8">
        <nav role="navigation" aria-labelledby="block-p4base-footer-menu" id="block-p4base-footer">
            
  <h2 class="visually-hidden" id="block-p4base-footer-menu">Footer</h2>
  

        
  <div class="footer-menu">
<div class="mx-auto px-4 sm:px-6 grid grid-cols-1 sm:grid-cols-3 lg:grid-cols-5 gap-6">
      <div class="footer-menu__section">
            <div class="footer-menu__section-title text-sm mb-4">Products</div>
                    <ul class="!pl-0 space-y-2">
                      <li class="list-none !pl-0"><a href="/products/puppet-enterprise" class="footer-menu__link text-p4-dark">Puppet Enterprise Platform</a></li>
                      <li class="list-none !pl-0"><a href="/products/puppet-core" class="footer-menu__link text-p4-dark">Puppet Core</a></li>
                  </ul>
          </div>
      <div class="footer-menu__section">
            <div class="footer-menu__section-title text-sm mb-4">Forge</div>
                    <ul class="!pl-0 space-y-2">
                      <li class="list-none !pl-0"><a href="https://forge.puppet.com/modules" class="footer-menu__link text-p4-dark">Puppet Modules</a></li>
                      <li class="list-none !pl-0"><a href="https://forge.puppet.com/" class="footer-menu__link text-p4-dark">Visit Puppet Forge</a></li>
                  </ul>
          </div>
      <div class="footer-menu__section">
            <div class="footer-menu__section-title text-sm mb-4">Resources</div>
                    <ul class="!pl-0 space-y-2">
                      <li class="list-none !pl-0"><a href="/resources/ebooks-papers" class="footer-menu__link text-p4-dark">eBooks &amp; Papers</a></li>
                      <li class="list-none !pl-0"><a href="/resources/videos" class="footer-menu__link text-p4-dark">Videos</a></li>
                      <li class="list-none !pl-0"><a href="/resources/webinars" class="footer-menu__link text-p4-dark">Webinars</a></li>
                      <li class="list-none !pl-0"><a href="/resources/podcasts" class="footer-menu__link text-p4-dark">Podcasts</a></li>
                      <li class="list-none !pl-0"><a href="/blog" class="footer-menu__link text-p4-dark">Blog</a></li>
                      <li class="list-none !pl-0"><a href="/resources" class="footer-menu__link text-p4-dark">All Resources</a></li>
                  </ul>
          </div>
      <div class="footer-menu__section">
            <div class="footer-menu__section-title text-sm mb-4">Support &amp; Services</div>
                    <ul class="!pl-0 space-y-2">
                      <li class="list-none !pl-0"><a href="https://portal.perforce.com/s/product/a3g4X000009wMFBQA2/puppet" class="footer-menu__link text-p4-dark">Customer Portal</a></li>
                      <li class="list-none !pl-0"><a href="https://help.puppet.com/" class="footer-menu__link text-p4-dark">Documentation</a></li>
                      <li class="list-none !pl-0"><a href="/professional-services" class="footer-menu__link text-p4-dark">Professional Services</a></li>
                      <li class="list-none !pl-0"><a href="/support/training" class="footer-menu__link text-p4-dark">Training &amp; Education</a></li>
                  </ul>
          </div>
      <div class="footer-menu__section">
            <div class="footer-menu__section-title text-sm mb-4">Community</div>
                    <ul class="!pl-0 space-y-2">
                      <li class="list-none !pl-0"><a href="/community" class="footer-menu__link text-p4-dark">Overview</a></li>
                  </ul>
          </div>
    </div>
</div>


  </nav>

    </div>

<!-- Branding and Social Media Section -->
<div  class="footer__branding_social max-w-container mx-auto py-6 flex items-center justify-between lg:flex-row flex-col">
  <!-- Branding Section -->
  <div  class="footer__branding max-w-[275px] flex-shrink-0">
    


<div  class="logo">
  
<a
   class="logo__link"
    href="/"
>
        

  
<img
   class="logo__image"
      src="/themes/custom/p4base/assets/images/logo.svg"
  alt="Logo"
  />
    </a>
</div>
    <div class="mt-4 text-xs">
      &copy; 2026 Perforce Software Inc. All Rights Reserved.
    </div>
    <div class="mt-2 text-xs text-center lg:text-left">
      <a href="https://www.perforce.com/privacy-policy">Privacy Policy</a> | 
      <a href="https://www.perforce.com/website-terms-use">Terms of Use</a> |
      <a href="https://www.perforce.com/legal">Legal</a> |
      <a href="https://trust.perforce.com/">Trust Center</a>
    </div>
  </div>

  <!-- Social Menu Section -->
  <div  class="footer__social flex-shrink-0 lg:flex-row flex-col">
      <div class="social-menu">
        <ul class="social-menu__list flex !pl-0 [&>li]:!px-4 mt-4">
          </ul>
  </div>
  </div>
</div>

  </div>
</footer>

      </div>

  </div>

    
    <script type="application/json" data-drupal-selector="drupal-settings-json">{"path":{"baseUrl":"\/","pathPrefix":"","currentPath":"node\/234","currentPathIsAdmin":false,"isFront":false,"currentLanguage":"en"},"pluralDelimiter":"\u0003","suppressDeprecationErrors":true,"ajaxPageState":{"libraries":"eJx1T9FuwzAI_KEkVqX9T4RlYtPZxgLcNH-_ZE069WEPwN1xIIAQjKFuDk4wLcLVBo9mKDM-GyuGeaG8U3XQjWftvtC_logVBfKApWelZXMxsz_40zLVbxekN8jTSYf25UHRQW5U8WJHunAEsX3juFKIaJeaKKa8h41wu21jAHmvKuwp41iw9ktqQlqGBgJRoCW9jvhTpl5b95k0YRhaYmNdqe2TbzhR3Z_WTQ3L68AH4aruN09wh-eHUDj0_OkR1MZV6YFjFAqv3nxMzonUWDZ31h8ZJJ2k","theme":"p4base","theme_token":null},"ajaxTrustedUrl":{"\/blog":true,"\/search":true},"data":{"extlink":{"extTarget":true,"extTargetAppendNewWindowDisplay":true,"extTargetAppendNewWindowLabel":"(opens in a new window)","extTargetNoOverride":true,"extNofollow":false,"extTitleNoOverride":false,"extNoreferrer":false,"extFollowNoOverride":false,"extClass":"0","extLabel":"(link is external)","extImgClass":false,"extSubdomains":true,"extExclude":"","extInclude":"\\.pdf$","extCssExclude":"","extCssInclude":"","extCssExplicit":"","extAlert":false,"extAlertText":"This link will take you to an external web site. We are not responsible for their content.","extHideIcons":false,"mailtoClass":"0","telClass":"0","mailtoLabel":"(link sends email)","telLabel":"(link is a phone number)","extUseFontAwesome":false,"extIconPlacement":"before","extPreventOrphan":true,"extFaLinkClasses":"fa fa-external-link","extFaMailtoClasses":"fa fa-envelope-o","extAdditionalLinkClasses":"","extAdditionalMailtoClasses":"","extAdditionalTelClasses":"","extFaTelClasses":"fa fa-phone","allowedDomains":[],"extExcludeNoreferrer":""}},"viewsAjaxHistory":{"renderPageItem":0,"initialExposedInput":{"views_dom_id:52f01ba2fd0d4cc76f9e272af100ad1fd37ba8fc8ec2877f39a35e856200a8df":null}},"views":{"ajax_path":"\/views\/ajax","ajaxViews":{"views_dom_id:52f01ba2fd0d4cc76f9e272af100ad1fd37ba8fc8ec2877f39a35e856200a8df":{"view_name":"blog","view_display_id":"block_1","view_args":"","view_path":"\/node\/234","view_base_path":null,"view_dom_id":"52f01ba2fd0d4cc76f9e272af100ad1fd37ba8fc8ec2877f39a35e856200a8df","pager_element":0}}},"better_exposed_filters":{"autosubmit_exclude_textfield":false},"photoswipe":{"selector":"a.photoswipe:not(.no-lightbox) \u003E img"},"csp":{"nonce":"8PqCbnJTdh4mcqAYEepzDA"},"user":{"uid":0,"permissionsHash":"c0d2ecfc93d3b34d931d1045496250bcfda1cad2d2d181e33522d31b321f8ffd"}}</script>
<script src="/sites/default/files/js/js_c_bXf0ZM2LzeurDQT3_1cwRaAXOYlhBtbIhLbgdGJuU.js?scope=footer&amp;delta=0&amp;language=en&amp;theme=p4base&amp;include=eJx1jkESwiAMRS-EsPE-TBhSGwWSIcHW29tq687N_-_9ySKQszG0V4AD_NS5mUtohj3iKqyY40RlUw0wjKOOVOnvyQ0bdigOVyvUHiH3IVD8oU6uCRQDFKGGp-1xcuVEBS8V2zgn6aTVyczGupBsww89te2VJ-Gi4ZMe7rB-h7hjnEmN-ysc_Qa1cV5i"></script>
<script src="https://static.addtoany.com/menu/page.js" defer></script>
<script src="/sites/default/files/js/js_Hg_V_V0xjGsIPAURFUdzIHYJwct9K6S-eE1iy3qTMUM.js?scope=footer&amp;delta=2&amp;language=en&amp;theme=p4base&amp;include=eJx1jkESwiAMRS-EsPE-TBhSGwWSIcHW29tq687N_-_9ySKQszG0V4AD_NS5mUtohj3iKqyY40RlUw0wjKOOVOnvyQ0bdigOVyvUHiH3IVD8oU6uCRQDFKGGp-1xcuVEBS8V2zgn6aTVyczGupBsww89te2VJ-Gi4ZMe7rB-h7hjnEmN-ysc_Qa1cV5i"></script>
<script src="https://cdn.jsdelivr.net/npm/@alpinejs/focus@3.x.x/dist/cdn.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/alpinejs@3.14.3/dist/cdn.min.js"></script>
<script src="/sites/default/files/js/js_awb8LWrl8EGNBPkj_m0j8rvStkGa_CXerWCCunVeiyY.js?scope=footer&amp;delta=5&amp;language=en&amp;theme=p4base&amp;include=eJx1jkESwiAMRS-EsPE-TBhSGwWSIcHW29tq687N_-_9ySKQszG0V4AD_NS5mUtohj3iKqyY40RlUw0wjKOOVOnvyQ0bdigOVyvUHiH3IVD8oU6uCRQDFKGGp-1xcuVEBS8V2zgn6aTVyczGupBsww89te2VJ-Gi4ZMe7rB-h7hjnEmN-ysc_Qa1cV5i"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/photoswipe/5.4.4/umd/photoswipe-lightbox.umd.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/photoswipe/5.4.4/umd/photoswipe.umd.min.js"></script>
<script src="/sites/default/files/js/js_3fUtMmNPfM3EuUVnlU3e8gt7Q94VoVb6TxTW2Mr_cFg.js?scope=footer&amp;delta=8&amp;language=en&amp;theme=p4base&amp;include=eJx1jkESwiAMRS-EsPE-TBhSGwWSIcHW29tq687N_-_9ySKQszG0V4AD_NS5mUtohj3iKqyY40RlUw0wjKOOVOnvyQ0bdigOVyvUHiH3IVD8oU6uCRQDFKGGp-1xcuVEBS8V2zgn6aTVyczGupBsww89te2VJ-Gi4ZMe7rB-h7hjnEmN-ysc_Qa1cV5i"></script>

      </body>
</html>
