Skip to content

Add guide for setting up a canary fleet to catch fleetd conflicts - #46347

Merged
kitzy merged 5 commits into
mainfrom
blog/canary-fleet-for-fleed-updates
May 29, 2026
Merged

Add guide for setting up a canary fleet to catch fleetd conflicts#46347
kitzy merged 5 commits into
mainfrom
blog/canary-fleet-for-fleed-updates

Conversation

@kitzy

@kitzy kitzy commented May 28, 2026

Copy link
Copy Markdown
Member

Summary by CodeRabbit

  • Chores

    • Updated Fleet-maintained application metadata with latest supported versions and installer information for Calibre, Fork, Granola, Microsoft Edge, Microsoft Teams, Ollama, Teleport Connect, Teleport Suite, and Zotero.
  • New Features

    • Enhanced CIS benchmark conversion script to accept parameterized input for flexible policy configuration.

Review Change Stack

Copilot AI review requested due to automatic review settings May 28, 2026 15:56

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude Code Review

This repository is configured for manual code reviews. Comment @claude review to trigger a review and subscribe this PR to future pushes, or @claude review once for a one-time review.

Tip: disable this comment in your organization's Code Review settings.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new guide article explaining how to set up a “canary” Fleet Premium fleet using the edge update channel to detect fleetd/EDR compatibility issues before rolling updates to production hosts.

Changes:

  • New article describing what the edge channel is and how to configure update_channels for orbit/osqueryd/desktop.
  • Guidance on enrolling representative test devices and what signals to monitor (offline hosts, EDR alerts, query failures).
  • Notes an important orbit downgrade edge case and links to the agent configuration docs.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread articles/canary-fleet-for-fleetd-updates.md Outdated
Comment thread articles/canary-fleet-for-fleetd-updates.md Outdated
@coderabbitai

coderabbitai Bot commented May 28, 2026

Copy link
Copy Markdown
Contributor

Walkthrough

This PR contains three independent infrastructure updates: advancing the Fleet-maintained apps submodule with refreshed installer URLs and SHA-256 checksums for multiple applications, refactoring the CIS benchmarks conversion script from a hardcoded downloader to a parameterized GitOps converter that processes YAML files, and updating a development worktree reference pointer.

Possibly related PRs

  • fleetdm/fleet#46050: Directly overlaps with submodule update for ee/maintained-apps, modifying app metadata (versions, installer URLs, SHA-256 checksums).
  • fleetdm/fleet#45673: Updates Fleet-maintained apps dataset metadata and installer URLs within the same ee/maintained-apps submodule.
  • fleetdm/fleet#46147: Updates Fleet-maintained app JSON entries (version/installer_url/sha256) corresponding to the submodule revision bump in this PR.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The pull request has no description provided, but the template requires a checklist and details about changes, testing, and configuration. Add a comprehensive pull request description following the repository template, including related issue, checklist items, testing details, and any applicable sections.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title directly describes the main change: a guide for setting up a canary fleet to catch fleetd conflicts, which aligns with the pull request objectives.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch blog/canary-fleet-for-fleed-updates

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
.claude/worktrees/interesting-ramanujan-6fb826 (2)

129-129: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Update documentation to match new file-based output.

The documentation states "The converted YAML is written to standard out in the Terminal. Copy/paste the CIS policies..." but the updated script now writes output directly to a file (../gitops/<filename>) instead of stdout. The instructions should be updated to reflect this change.

📝 Proposed documentation update
-3. The converted YAML is written to standard out in the Terminal. Copy/paste the CIS policies you wish to use into your own YAML file and run Fleet GitOps.
+3. The converted YAML is written to a file in the `../gitops/` directory. Review the output file and run Fleet GitOps.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.claude/worktrees/interesting-ramanujan-6fb826 at line 129, Update the
documentation that currently says "The converted YAML is written to standard out
in the Terminal. Copy/paste the CIS policies..." to reflect that the script now
writes output to a file under ../gitops/<filename>; change all references to
stdout and manual copy/paste to state that the converted YAML is saved to
../gitops/<filename> and can be applied via Fleet GitOps from that file, and
adjust any examples/usage steps to show the new file-based workflow and path
instead of instructing users to copy/paste from the terminal.

113-113: ⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

Hardcoded macOS Homebrew path breaks portability.

The script uses /opt/homebrew/bin/yq which only exists on macOS with Homebrew installed. This breaks portability to Linux and other systems where yq would be installed elsewhere.

🔧 Proposed fix to use yq from PATH
-/opt/homebrew/bin/yq eval-all '
+yq eval-all '
   [select(.spec.name != null and .spec.name != "") | .spec | {
     "name": ((.name // "") | sub("\n$", "")),
     "description": ((.description // "") | sub("\n$", "")),
     "resolution": ((.resolution // "") | sub("\n$", "")),
     "query": ((.query // "") | sub("\n$", "")),
     "platform": ((.platform // "") | sub("\n$", "")),
     "critical": ((.tags // "") | test("critical:true")),
     "calendar_events_enabled": false,
     "tags": ((.tags // "") | sub("\n$", ""))
   }]
-' "$cispath" | /opt/homebrew/bin/yq eval '.[] | [.]' - | /opt/homebrew/bin/yq eval-all '. as $item ireduce ([]; . + $item)' - > "$outputfile"
+' "$cispath" | yq eval '.[] | [.]' - | yq eval-all '. as $item ireduce ([]; . + $item)' - > "$outputfile"

Alternatively, add installation/requirements documentation if the Homebrew version is specifically required.

Also applies to: 124-124

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.claude/worktrees/interesting-ramanujan-6fb826 at line 113, Replace the
hardcoded macOS Homebrew binary path "/opt/homebrew/bin/yq" with an invocation
that uses the yq on the PATH (e.g. "yq eval-all") or a configurable fallback
(env var like YQ_PATH) so the script works on Linux and other systems; update
the two occurrences of "/opt/homebrew/bin/yq" in the script to call "yq" from
PATH (or check/assign YQ_PATH first) and optionally add a brief runtime check
that exits with a helpful error if yq is not found.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In @.claude/worktrees/interesting-ramanujan-6fb826:
- Line 129: Update the documentation that currently says "The converted YAML is
written to standard out in the Terminal. Copy/paste the CIS policies..." to
reflect that the script now writes output to a file under ../gitops/<filename>;
change all references to stdout and manual copy/paste to state that the
converted YAML is saved to ../gitops/<filename> and can be applied via Fleet
GitOps from that file, and adjust any examples/usage steps to show the new
file-based workflow and path instead of instructing users to copy/paste from the
terminal.
- Line 113: Replace the hardcoded macOS Homebrew binary path
"/opt/homebrew/bin/yq" with an invocation that uses the yq on the PATH (e.g. "yq
eval-all") or a configurable fallback (env var like YQ_PATH) so the script works
on Linux and other systems; update the two occurrences of "/opt/homebrew/bin/yq"
in the script to call "yq" from PATH (or check/assign YQ_PATH first) and
optionally add a brief runtime check that exits with a helpful error if yq is
not found.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 7cf3d428-c2b5-4a68-a604-470bc5b65880

📥 Commits

Reviewing files that changed from the base of the PR and between d313300 and bd3df3a.

⛔ Files ignored due to path filters (1)
  • articles/canary-fleet-for-fleetd-updates.md is excluded by !**/*.md
📒 Files selected for processing (3)
  • .claude/worktrees/blissful-yonath-9b0d81
  • .claude/worktrees/interesting-ramanujan-6fb826
  • .claude/worktrees/sweet-gauss-fa2930

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Removed section about downgrading orbit version to prevent restart loop.

@mike-j-thomas mike-j-thomas left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice one, @kitzy !

@kitzy
kitzy merged commit 02b6d08 into main May 29, 2026
11 checks passed
@kitzy
kitzy deleted the blog/canary-fleet-for-fleed-updates branch May 29, 2026 09:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants