Repository navigation
s3-fleet v0.1.0
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.