scaleway/pigeon-cluster v4.0.0
pigeon-cluster's keyring inputs now take pigeon-cli's own keyring.toml shape, and both of its compute-instance-config calls (per job and for the bastion) repin from v0.1.0 to v1.0.0 (LIB-0018 §4). A job instance built from this release can load its keyring and run pigeon. No instance built from v3.x with a keyring could, because pigeon-cli no longer read the shape that version wrote.
What changes in cluster_config.shared_keyring and jobs[*].keyring
Both stay map(object(...)) keyed by alias, and the map key is still the alias.
kindacceptsemailandbucketonly.kind = "encryption-key"and itscreated_atfield are removed.- An email entry's secret is
secret, matching pigeon-cli'sIdentity. Email entries requireemail,provider,host,portandsecret, andprovidermust be one ofgmail,fastmail,icloud,protonorcustom. - Bucket entries lose
providerandencryption_key_alias. A bucket keepsendpoint,bucket,access_key_idandsecret_key. As before (DEV-0144), a bucket that omitsaccess_key_id/secret_keygets the job's own API key. - A missing required field fails the plan.
compute-instance-configv1.0.0 validates each kind's required fields, so an incomplete entry no longer produces an instance whose pigeon can't load its keyring.
Terraform's type conversion drops an attribute the object type doesn't declare, so a leftover bucket provider or encryption_key_alias is ignored silently rather than rejected. Remove them anyway.
What changes on the instances
compute-instance-config v1.0.0 writes every secret into /root/.config/pigeon/keyring.toml (0600). It no longer renders /root/.config/rclone/rclone.conf or exports PIGEON_SECRET_<ALIAS>. pigeon generates its own rclone.conf at /root/.config/pigeon/rclone.conf from the bucket entries each time a job runs. A bare rclone ... alias: in job_commands, or in a bastion shell, finds no remotes; pass --config /root/.config/pigeon/rclone.conf, or call pigeon.
The rendered cloud-init changes, so every server is replaced on upgrade. Jobs self-delete anyway, so in practice that's the bastion.
Re-enabling runway's pigeon-cli leaf
runway's terraform/scaleway/pigeon-cluster/pigeon-cli/ is this module's only consumer, and its module "cluster" block is commented out, so nothing live changes. When it's re-enabled, it needs to:
- pin
https://noisypigeon.garden/terraform/scaleway/pigeon-cluster/v4.0.0or later, not thev3.0.1its comment names; - remove
provider = "Scaleway"fromshared_keyring.reports, which this version no longer reads; - move the commented job commands from
--source-path/--destination-pathto--source-bucket/--destination-bucket(pigeon-cli ADR-0136). Those flags were stale before this release.
Verified with terraform init, validate and plan in a scratch root against this module with the bastion enabled, a shared bucket entry with no credentials and a job email entry: both nested compute-instance-config sources resolved to v1.0.0 from noisypigeon.garden, and the plan came to 20 resources to add. Dropping the email entry's secret failed the plan with compute-instance-config's required-field validation.
🤖 Generated with Claude Code