scaleway/compute-instance v0.9.0

Two behavior changes, no interface changes:

Auto-mount the attached volume. When additional_volume_ids is non-empty, cloud-init now formats and mounts the first attached volume automatically on first boot:

mkfs.ext4 -L data /dev/sdb
mkdir -p /mnt/data
mount /dev/sdb /mnt/data
UUID=$(blkid -s UUID -o value /dev/sdb)
echo "UUID=$UUID /mnt/data ext4 defaults,nofail 0 2" >> /etc/fstab
mount -a

⚠️ mkfs.ext4 is unconditional. This module already force-replaces the instance on any cloud-init content change (ADR-0084), and this PR is itself a cloud-init change — so every existing instance with an attached volume will have that volume reformatted from scratch on its next apply after upgrading. This is a deliberate, confirmed tradeoff (no "format only if unformatted" guard), documented in ADR-0089. Scope is also limited to exactly one volume at a fixed /dev/sdb path and a hardcoded /mnt/data mount point / data label.

Fix pigeon-cli: inline the bootstrap script. The BOOTSTRAP env var from the previous release (meant to be run via eval $BOOTSTRAP) didn't work in practice. profile = "pigeon-cli" now runs the bootstrap pipeline directly in runcmd on first boot instead:

curl -fsSL https://gist.githubusercontent.com/noisypigeon/1e96e8ef94380f913f6ae02782965149/raw/pigeon.sh | bash

Full rationale in ADR-0089.

Test plan

  • terraform fmt -check clean
  • terraform init -backend=false && terraform validate clean
  • Rendered cloud-init for: no volume (no mount commands), with volume (mount sequence appears before mise), and profile = "pigeon-cli" with volume (mount sequence + direct bootstrap curl|bash, no stray BOOTSTRAP export)

🤖 Generated with Claude Code

#116