Skip to content

s3-fleet v0.1.0

Choose a tag to compare

@github-actions github-actions released this 23 Oct 04:19
· 10 commits to main since this release
v0.1.0
c3e6bb7

First release.

New features:

  • Keep a fleet of SSH hosts as one YAML document in an S3 bucket: each host's pinned host keys and labels, plus fleet-wide attributes.
  • Find the endpoint, region and bucket from a DNS TXT record (_s3-fleet., then _s3-fleet) through the resolver's search list, so readers need only the fleet name and no credentials.
  • Every write is conditional on the version that was read: two people editing at once never lose a change, the second gets exit 4 and reruns.
  • add pins host keys with ssh-keyscan and refuses a changed key unless --rekey; rm, label, attr, and label selectors for list and known-hosts.
  • s3-fleet ssh, and a KnownHostsCommand mode for plain ssh, trusting only the pinned keys; host names complete from a local cache.
  • For scripts: data on stdout, versioned --json output, one exit code per outcome, no prompt outside setup; --allow-stale serves the local cache when S3 is unreachable.
  • setup stores write credentials after checking them and says what init still has to create; init creates the bucket and an empty fleet.
  • Man pages: s3-fleet(1) with discovery, first use, exit status, environment and files, and one page per command.

Library:

  • Fleet (init, load, conditional commit), FleetDoc and its validation, label selectors, known_hosts rendering, keyscan, DNS discovery, and an opt-in local cache; async, never retrying or falling back on its own.
  • A small S3 client on reqwest and aws-sigv4: GET, HEAD, PUT with If-Match or If-None-Match, DELETE, ListObjectsV2 and bucket creation; anonymous when no credentials are given, with the S3 error code and request id in its errors.

Build:

  • Static musl binaries for amd64 and arm64, and .deb packages carrying the man pages and bash completion.