Skip to content

Crow 0.7.0

Choose a tag to compare

@the-nelson the-nelson released this 09 Oct 22:19
· 90 commits to main since this release

Crow 0.7.0: patching, rollouts and drift you can act on. All three are in Fleet Setup, and all three run on the fleet runner: you see the plan, type a word to start it, it reaches one server (or one batch) at a time, the first failure stops it, and each server gets a change record.

Binaries: Linux x86_64 (install.sh puts Crow and its icon under ~/.local) and macOS Apple Silicon (an ad-hoc signed Crow.app: the first launch needs right-click → Open).

Verify a download with slsa-verifier, or against SHA256SUMS:

slsa-verifier verify-artifact crow-linux-x86_64.tar.gz \
  --provenance-path multiple.intoto.jsonl \
  --source-uri github.com/errorware/crow --source-tag v0.7.0

Patching

Fleet Setup → PATCHING.

  • Who's behind: each server's pending security updates, all pending updates, a pending kernel, and whether it needs a reboot. Crow re-reads this every 6 hours while it runs, or on REFRESH.
  • Apply updates:
    • Security or all updates, to every server or one group.
    • The plan lists the exact packages per server, and only those are upgraded (apt, dnf, apk).
    • Optionally, reboot the servers that need it afterwards.
  • Maintenance windows per group: for example Sun 02-05 or Mon-Fri 22-06. A run leaves out servers outside their window, unreachable ones, and the machine Crow runs on, and says why.
  • Orderly reboots, here and in the Danger Zone's rolling reboot:
    • Servers behind a bastion reboot before the bastion.
    • After each reboot, Crow waits for systemd to settle, and stops if a service fails that wasn't failing before.
  • A server's Updates card gets APPLY SECURITY and APPLY ALL buttons.
  • Alpine: if the package index was never downloaded, Crow says "pending updates unknown" instead of showing 0.

Rollouts

Fleet Setup → ROLLOUTS: one command, or one config file, across a group.

  • What a config file can start from: what you type, a server's own copy, or a pinned baseline.
  • Before anything runs, each server's copy gets its own diff. Servers that are already identical are left out.
  • A canary goes first, alone. The run then pauses: CONTINUE WITH THE REST, or STOP HERE.
  • The rest run in batches of 1, 2, 5 or 10, side by side. The first failure stops the run and shows that server's output.
  • Config files are checked on each server by the format's own validator (sshd -t, nginx -t, visudo, fstab) and kept in config history.
  • ROLL BACK on the finished run puts every file back exactly as it was, and removes files the rollout created.

Drift and config search

Fleet Setup → DRIFT & SEARCH.

  • Drift is checked: every 15 minutes, Crow re-reads every server's baselined files.
    • A drifted file raises an alert, which Email mails like any other.
    • The alert clears once the file matches the baseline again.
  • For each drifted file: see the diff, then BRING BACK one server or BRING ALL BACK, or ACCEPT THIS VERSION as the new baseline.
  • Search every server's configs for a file name or a setting, without connecting to any server. A hit opens that file on its server. The palette (Ctrl/⌘K) finds other servers' config files too.