Summary
Track a future improvement to replace the current cross-cloud SSH marker wait with provider-specific readiness signals where each cloud supports them.
Background
Release-mode setup runs through first-boot scripts. That keeps the setup package small and avoids uploading local files for learners, but the cloud VM resource can report as created before the CTF setup is complete. The current fix should use a consistent marker-based readiness wait so learners do not SSH into a half-configured VM.
Future provider-specific options
- Azure: investigate moving release setup, or a setup-complete check, to Azure VM Custom Script Extension so Terraform can use extension provisioning status.
- AWS: investigate AWS Systems Manager Association or Run Command with success waits. This likely requires SSM agent readiness, IAM instance profile, and network access to SSM endpoints.
- GCP: research whether OS Config, guest attributes, or another Google-native signal can provide a clean setup-complete wait. Startup scripts alone do not appear to provide Terraform-native completion readiness.
Acceptance criteria
- Document which provider-native readiness paths are viable and what extra permissions or infrastructure they require.
- Prefer native success/failure status over blind sleeps.
- Keep learner deployment simple. Do not add provider-specific complexity unless it improves reliability enough to justify it.
- Preserve contributor-mode testing behavior.
Related to #81.
Summary
Track a future improvement to replace the current cross-cloud SSH marker wait with provider-specific readiness signals where each cloud supports them.
Background
Release-mode setup runs through first-boot scripts. That keeps the setup package small and avoids uploading local files for learners, but the cloud VM resource can report as created before the CTF setup is complete. The current fix should use a consistent marker-based readiness wait so learners do not SSH into a half-configured VM.
Future provider-specific options
Acceptance criteria
Related to #81.