fleet/website/views/pages/infrastructure-as-code.ejs
Mike Thomas 01bdd18f6a
modern device management image update (#44468)
modern device management image update

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Style**
* Updated feature image assets on multiple pages with higher resolution
variants

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-04-30 10:02:02 -05:00

556 lines
24 KiB
Text
Vendored
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div id="fleet-gitops" v-cloak>
<div purpose="page-container">
<div purpose="page-hero">
<div purpose="hero-text">
<div>
<h4>Infrastructure as code</h4>
<h1>Manage devices as code</h1>
</div>
<p>See every change, undo any error, repeat every success. Define your fleet in version-controlled YAML. Review changes in pull requests. Let Fleet enforce the desired state.</p>
<div purpose="button-row">
<a purpose="cta-button" class="btn btn-primary" href="/whitepapers/modern-endpoint-management-managing-devices-as-code">Read the whitepaper</a>
<animated-arrow-button href="/gitops-workshop">Free in-person workshop</animated-arrow-button>
</div>
</div>
<div purpose="hero-image">
<img alt="A report being added to Fleet with GitOps" src="/images/infrastructure-as-code-hero-504x378@2x.png">
</div>
</div>
<div purpose="page-section">
<div purpose="section-title">
<h2>ClickOps does not scale</h2>
<p>Most device management happens through a GUI: click, configure, repeat. That works at small scale. As your organization grows, manual processes create problems that compound.</p>
</div>
<div purpose="features-section">
<div purpose="feature">
<h5>No record of intent</h5>
<p>Audit logs show who changed a setting and when, not why, what the old value was, or whether it was tested.</p>
</div>
<div purpose="feature">
<h5>Configuration drift</h5>
<p>One engineer tweaks a setting. Another makes a conflicting change. Six months later, whats "standard" is unclear.</p>
</div>
<div purpose="feature">
<h5>Knowledge leaves with people</h5>
<p>Configuration knowledge lives in the minds of admins. When someone leaves, undocumented context is lost.</p>
</div>
<div purpose="feature">
<h5>Compliance audits take too long</h5>
<p>Proving compliance means gathering screenshots, exporting reports, and reconstructing timelines from scattered logs.</p>
</div>
<div purpose="feature">
<h5>Teams stay reactive</h5>
<p>Repetitive GUI tasks consume time that could go toward higher-priority work.</p>
</div>
<div purpose="feature">
</div>
</div>
</div>
<%# Quote section %>
<div purpose="page-section">
<div purpose="section-quote">
<div purpose="quote-image">
<img alt="Fastly logo" src="/images/fastly-logo-104x40@2x.png">
</div>
<p purpose="quote-text">"The shift to GitOps has modernized our operations, giving us the agility and change control we needed, giving leadership real-time confidence in device health and compliance."</p>
<div purpose="quote-author-info">
<div purpose="quote-author-image">
<img alt="Dan Jackson" src="/images/testimonial-author-dan-jackson-48x48@2x.png">
</div>
<div purpose="name-and-title">
<p purpose="author-name">Dan Jackson</p>
<p purpose="author-title">Sr Manager Systems Engineering, Fastly</p>
</div>
</div>
</div>
</div>
<div purpose="page-section">
<div purpose="section-title">
<h2>Less manual work, faster recovery, <br>simpler compliance.</h2>
<p>When your device configurations live in Git, every change is reviewable, reversible, and documented by default.</p>
</div>
<div purpose="two-column-features">
<div purpose="feature">
<h5>Scale without adding headcount</h5>
<p>Manage thousands of devices with the same team. Automation handles the repetitive work, so your team can focus on higher-value projects.</p>
</div>
<div purpose="feature">
<h5>Recover in minutes, not hours</h5>
<p>Configuration for your entire fleet lives in Git. If a change causes an issue, revert the last commit. Recovery takes minutes.</p>
</div>
<div purpose="feature">
<h5>Pass audits with version history</h5>
<p>Every change is tracked with a Git commit. Auditors get a commit history, not screenshots. Compliance stays continuous.</p>
</div>
<div purpose="feature">
<h5>Onboard engineers faster</h5>
<p>New team members read the repository to understand device configurations. No Slack threads to dig through, no senior admin to shadow.</p>
</div>
</div>
</div>
<%# Feature with images sections %>
<div purpose="page-section">
<div purpose="section-title">
<div>
<h4>Core methodology</h4>
<h2>Define the state. Let Fleet enforce it.</h2>
</div>
<p>Infrastructure as code replaces ClickOps with version-controlled configuration files. You describe what "correct" looks like. Fleet brings devices into alignment.</p>
</div>
<div purpose="feature-with-image">
<div purpose="feature-image">
<img alt="An example of Fleet's YAML configuration" src="/images/infrastructure-as-code-feature-image-1-504x378@2x.png">
</div>
<div purpose="feature-text">
<h5>Declarative, not imperative</h5>
<p>Define the desired state in YAML. Fleet compares and applies only the changes needed. No coding required. YAML files are structured, readable, and reusable across your organization.</p>
</div>
</div>
<div purpose="feature-with-image" class="reverse">
<div purpose="feature-image">
<img alt="Single source of truth" src="/images/infrastructure-as-code-feature-image-2-504x378@2x.png">
</div>
<div purpose="feature-text">
<h5>Single source of truth</h5>
<p>Your Git repository defines the correct state of every device. All changes flow through it. If someone changes a setting locally, Fleet restores the approved state. The repository stays as the single source of truth.</p>
</div>
</div>
<div purpose="feature-with-image">
<div purpose="feature-image">
<img alt="Idempotent by design" src="/images/infrastructure-as-code-feature-image-3-504x378@2x.png">
</div>
<div purpose="feature-text">
<h5>Idempotent by design</h5>
<p>Push the same YAML to Fleet ten times. The result is identical every time. No side effects, no accidental changes, no surprises during a fleet-wide update. Failed runs can be retried without risk.</p>
</div>
</div>
<div purpose="feature-with-image" class="reverse">
<div purpose="feature-image">
<img alt="Keep knowledge in code" src="/images/infrastructure-as-code-feature-image-4-504x378@2x.png">
</div>
<div purpose="feature-text">
<h5>Keep knowledge in code</h5>
<p>Every configuration is version-controlled. See who changed it, when, and why. Knowledge stays when people leave.</p>
</div>
</div>
<div purpose="feature-with-image">
<div purpose="feature-image">
<img alt="Policy as code" src="/images/infrastructure-as-code-feature-image-5-504x378@2x.png">
</div>
<div purpose="feature-text">
<h5>Policy as code</h5>
<p>Define security policies in code. Fleet checks every device and blocks rollout if a policy fails, so you can catch issues before they reach devices.</p>
</div>
</div>
</div>
<div purpose="page-section">
<div purpose="section-title">
<div>
<h4>The workflow</h4>
<h2>Deploy with built-in checkpoints</h2>
</div>
<p>Every change passes through a structured pipeline before it reaches devices. Peer review, validation, and testing are built into the process.</p>
</div>
<div purpose="feature-with-image">
<div purpose="feature-text">
<div purpose="list-item">
<h5>Pull requests as quality gates</h5>
<p>Every change is peer-reviewed before reaching devices. No unreviewed changes reach production.</p>
</div>
<div purpose="list-item">
<h5>Continuous reconciliation</h5>
<p>Fleet compares actual device state against Git. If a device drifts, Fleet restores the approved configuration automatically.</p>
</div>
<div purpose="list-item">
<h5>Pull-based security</h5>
<p>Devices pull configurations from Fleet. Your Git repository never holds device credentials. Smaller blast radius.</p>
</div>
</div>
<div purpose="feature-image">
<img alt="An image showing the process of the Fleet infrastructure as code workflow. An IT admin pushes a device management profile to GitHub, and an IT admin approves the new profile. When the updated profile is merged, the CI/CD runner sends the profile to a Fleet server. The Fleet server then sends the updated profile to a managed device and verifies the result." src="/images/infrastructure-as-code-feature-image-6-504x378@2x.png">
</div>
</div>
</div>
<div purpose="page-section">
<div purpose="section-title">
<h2>From clicks to commits</h2>
<p>See how infrastructure as code compares to the way most organizations manage devices today.</p>
</div>
<div purpose="section-table">
<table purpose="features-table">
<thead>
<tr>
<th scope="col" aria-label="Capability">&nbsp;</th>
<th scope="col">ClickOps</th>
<th scope="col">Fleet GitOps (IaC)</th>
</tr>
</thead>
<tbody>
<tr>
<td>Primary interface</td>
<td>GUI or web console</td>
<td>
<div purpose="fleet-cell">
<img alt="checkmark" src="/images/icon-checkmark-green-16x16@2x.png">
<p>Git repository and YAML</p>
</div>
</td>
</tr>
<tr>
<td>Source of truth</td>
<td>Spreadsheets or vendor database</td>
<td>
<div purpose="fleet-cell">
<img alt="checkmark" src="/images/icon-checkmark-green-16x16@2x.png">
<p>Version-controlled files</p>
</div>
</td>
</tr>
<tr>
<td>Change control</td>
<td>Verbal approval or action logs</td>
<td>
<div purpose="fleet-cell">
<img alt="checkmark" src="/images/icon-checkmark-green-16x16@2x.png">
<p>Pull requests with peer review</p>
</div>
</td>
</tr>
<tr>
<td>Drift management</td>
<td>Manual or periodic reporting</td>
<td>
<div purpose="fleet-cell">
<img alt="checkmark" src="/images/icon-checkmark-green-16x16@2x.png">
<p>Continuous self-healing</p>
</div>
</td>
</tr>
<tr>
<td>Rollback</td>
<td>Manual redo or backups/restore</td>
<td>
<div purpose="fleet-cell">
<img alt="checkmark" src="/images/icon-checkmark-green-16x16@2x.png">
<p>Revert a Git commit</p>
</div>
</td>
</tr>
<tr>
<td>Audit trail</td>
<td>Fragmented or click history</td>
<td>
<div purpose="fleet-cell">
<img alt="checkmark" src="/images/icon-checkmark-green-16x16@2x.png">
<p>Immutable commit history</p>
</div>
</td>
</tr>
</tbody>
</table>
<div purpose="mobile-features-table">
<div purpose="mobile-table">
<div purpose="feature-name">
Primary interface
</div>
<div purpose="row">
<div purpose="comparison-name">ClickOps</div>
<div purpose="comparison-status">GUI or web console</div>
</div>
<div purpose="row">
<div purpose="comparison-name">Fleet GitOps (IaC)</div>
<div purpose="comparison-status">
<div purpose="fleet-cell">
<img alt="checkmark" src="/images/icon-checkmark-green-16x16@2x.png">
<p>Git repository and YAML</p>
</div>
</div>
</div>
</div>
<div purpose="mobile-table">
<div purpose="feature-name">
Source of truth
</div>
<div purpose="row">
<div purpose="comparison-name">ClickOps</div>
<div purpose="comparison-status">Spreadsheets or vendor database</div>
</div>
<div purpose="row">
<div purpose="comparison-name">Fleet GitOps (IaC)</div>
<div purpose="comparison-status">
<div purpose="fleet-cell">
<img alt="checkmark" src="/images/icon-checkmark-green-16x16@2x.png">
<p>Version-controlled files</p>
</div>
</div>
</div>
</div>
<div purpose="mobile-table">
<div purpose="feature-name">
Change control
</div>
<div purpose="row">
<div purpose="comparison-name">ClickOps</div>
<div purpose="comparison-status">Verbal approval or action logs</div>
</div>
<div purpose="row">
<div purpose="comparison-name">Fleet GitOps (IaC)</div>
<div purpose="comparison-status">
<div purpose="fleet-cell">
<img alt="checkmark" src="/images/icon-checkmark-green-16x16@2x.png">
<p>Pull requests with peer review</p>
</div>
</div>
</div>
</div>
<div purpose="mobile-table">
<div purpose="feature-name">
Drift management
</div>
<div purpose="row">
<div purpose="comparison-name">ClickOps</div>
<div purpose="comparison-status">Manual or periodic reporting</div>
</div>
<div purpose="row">
<div purpose="comparison-name">Fleet GitOps (IaC)</div>
<div purpose="comparison-status">
<div purpose="fleet-cell">
<img alt="checkmark" src="/images/icon-checkmark-green-16x16@2x.png">
<p>Continuous self-healing</p>
</div>
</div>
</div>
</div>
<div purpose="mobile-table">
<div purpose="feature-name">
Rollback
</div>
<div purpose="row">
<div purpose="comparison-name">ClickOps</div>
<div purpose="comparison-status">Manual redo or backups/restore</div>
</div>
<div purpose="row">
<div purpose="comparison-name">Fleet GitOps (IaC)</div>
<div purpose="comparison-status">
<div purpose="fleet-cell">
<img alt="checkmark" src="/images/icon-checkmark-green-16x16@2x.png">
<p>Revert a Git commit</p>
</div>
</div>
</div>
</div>
<div purpose="mobile-table">
<div purpose="feature-name">
Audit trail
</div>
<div purpose="row">
<div purpose="comparison-name">ClickOps</div>
<div purpose="comparison-status">Fragmented or click history</div>
</div>
<div purpose="row">
<div purpose="comparison-name">Fleet GitOps (IaC)</div>
<div purpose="comparison-status">
<div purpose="fleet-cell">
<img alt="checkmark" src="/images/icon-checkmark-green-16x16@2x.png">
<p>Immutable commit history</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div purpose="page-section">
<div purpose="section-title">
<div>
<h4>What makes Fleet different</h4>
<h2>GitOps that ships with the product</h2>
</div>
<p>Most device management tools have an API. Some have community Terraform providers. Fleet is the only MDM where GitOps is a first-party, supported workflow that covers the entire management surface.</p>
</div>
<div purpose="features-section">
<div purpose="feature">
<h5>Terraform not required</h5>
<p>Fleet ships <a href="/guides/fleetctl">fleetctl</a>, a CLI that reads YAML and applies it to your Fleet server. Connect it to your CI/CD runner for a complete GitOps pipeline.</p>
</div>
<div purpose="feature">
<h5>Full console coverage</h5>
<p>Fleet's GitOps controls profiles, policies, software, queries, labels, and settings. Manage your entire admin console in code, not a subset.</p>
</div>
<div purpose="feature">
<h5>Works with any Git provider</h5>
<p>GitHub, GitLab, Bitbucket, or any Git-compatible repository. Your choice of toolchain, not ours. No vendor-specific cloud subscription required.</p>
</div>
<div purpose="feature" class="fixed-width">
<h5>Every operating system</h5>
<p>The same GitOps workflow manages macOS, Windows, Linux, iOS, iPadOS, and Android. One repository. One workflow. Every platform.</p>
</div>
</div>
</div>
<div purpose="page-section" class="banner-section">
<div purpose="section-title">
<div>
<h4>AI-accelerated IT</h4>
<h2>GitOps is the foundation for AI-assisted device management</h2>
</div>
<p>Without GitOps, there is no path to AI-accelerated device management. With GitOps, everyone can contribute. IT stays the human in the loop.</p>
</div>
<div purpose="feature-with-image">
<div purpose="feature-text">
<h3>Skip the ticket queue</h3>
<p>Move faster with fewer handoffs. Propose changes in natural language using your existing LLM, including air-gapped models.</p>
<p>Connect tools like Kilo Code with Slack or Microsoft Teams. Engineers, security, and operations teams propose changes. IT reviews and approves before anything ships.</p>
</div>
<div purpose="feature-image">
<img alt="An example of an AI-assisted Gitops workflow" src="/images/mdm-modern-change-management-600x435@2x.png">
</div>
</div>
</div>
<div purpose="page-section">
<div purpose="section-title" class="text-center w-100">
<h2>Organizations managing devices as code</h2>
</div>
<div purpose="cards">
<div purpose="card">
<img alt="Stripe logo" src="/images/stripe-logo-96x40@2x.png">
<p>Stripe moved 10,000 Macs to Fleet, saving hundreds of thousands annually.</p>
<a href="/case-study/stripe">Read their story</a>
</div>
<%# <div purpose="card">
<p><strong>Global social media platform</strong></p>
<p>Global social media platform migrates to Fleet.</p>
<a href="/case-study/">Read their story</a>
</div> %>
<div purpose="card">
<img alt="Foursquare logo" src="/images/foursquare-logo-212x40@2x.png">
<p>Foursquare cut costs and gained 114% ROI with Fleet.</p>
<a href="/case-study/foursquare">Read their story</a>
</div>
<div purpose="card">
<p><strong>Security and authentication platform</strong></p>
<p>Worldwide security and authentication platform chooses Fleet for Linux management.</p>
<a href="/case-study/worldwide-security-and-authentication-platform">Read their story</a>
</div>
<div purpose="card">
<img alt="Fastly logo" src="/images/fastly-logo-104x40@2x.png">
<p>Fastly gains visibility into all endpoints and critical infrastructure around the world.</p>
<a href="/case-study/fastly">Read their story</a>
</div>
<div purpose="card">
<p><strong>Online gaming platform</strong></p>
<p>Large gaming company enhances server observability with Fleet.</p>
<a href="/case-study/online-gaming-platform">Read their story</a>
</div>
<div purpose="card">
<div purpose="logo">
<img alt="Fastly logo" src="/images/fastly-logo-104x40@2x.png">
</div>
<p purpose="quote">
The shift to GitOps has modernized our operations, giving us the agility and change control we needed, giving leadership real-time confidence in device health and compliance.
</p>
<div purpose="quote-author-info" class="d-flex flex-row align-items-center">
<div purpose="profile-picture">
<img alt="Dan Jackson" src="/images/dan-jackson-120x120@2x.png">
</div>
<div class="d-flex flex-column align-self-top">
<p purpose="name" class="font-weight-bold m-0">Dan Jackson</p>
<p purpose="job-title" class="m-0">Sr Manager Systems Engineering, Fastly</p>
</div>
</div>
</div>
<div purpose="card">
<div purpose="logo">
<img alt="Faire logo" src="/images/faire-logo-192x40@2x.png">
</div>
<p purpose="quote">
Fleet has opened a lot of opportunities for us. My team is loving managing devices via GitOps, and the built-in support for CIS benchmarks has made it easy to enforce these on our devices.
</p>
<div purpose="quote-author-info" class="d-flex flex-row align-items-center">
<div purpose="profile-picture">
<img alt="Jeremy Baker" src="/images/jeremy-baker-120x120@2x.png">
</div>
<div class="d-flex flex-column align-self-top">
<p purpose="name" class="font-weight-bold m-0">Jeremy Baker</p>
<p purpose="job-title" class="m-0">Engineering Manager, Faire</p>
</div>
</div>
</div>
<div purpose="card" style="height: min-content">
<div purpose="logo">
<img alt="Thumbtack logo" src="/images/thumbtack-logo-197x40@2x.png">
</div>
<p purpose="quote">
I really like how robust Fleet's API is. (using GitOps)
</p>
<div purpose="quote-author-info" class="d-flex flex-row align-items-center">
<div purpose="profile-picture">
<img alt="Adam Anklewicz" src="/images/adam-anklewicz-120x120@2x.png">
</div>
<div class="d-flex flex-column align-self-top">
<p purpose="name" class="font-weight-bold m-0">Adam Anklewicz</p>
<p purpose="job-title" class="m-0">Manager, IT Endpoint Engineering, Thumbtack</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div purpose="page-container">
<div purpose="page-section">
<div purpose="bottom-cta">
<div>
<h4>Get started</h4>
<h2>Infrastructure as code for device management</h2>
</div>
<div purpose="button-row">
<a purpose="cta-button" class="btn btn-primary" href="/whitepapers/modern-endpoint-management-managing-devices-as-code">Read the whitepaper</a>
<animated-arrow-button href="/gitops-workshop">Free in-person workshop</animated-arrow-button>
</div>
</div>
</div>
</div>
<%/* Cloud city banner */%>
<parallax-city></parallax-city>
</div>
<%- /* Expose server-rendered data as window.SAILS_LOCALS :: */ exposeLocalsToBrowser() %>