Skip to content

FAQ

Why Python driving Terraform, rather than Terraform on its own?

Why Terraform: the product had to be supported on more than one cloud. Terraform gives one tool, one workflow and one state model for all of them, with each cloud handled by its own provider. A cloud's own tooling would have meant a different language and workflow for each new cloud.

Why Python drives it: Terraform is very good at building infrastructure and deliberately bad at deciding what to build next. The run lifecycle needs branching (pass or fail), waiting (for data to arrive), test execution and reporting. Python owns those decisions, and Terraform does what it's best at.

Is this cloud-agnostic?

It's designed so a cloud provider is a plug-in: each cloud registers its own Terraform executor and validation factory by name (see Framework layers), Terraform providers handle the cloud itself, and the rest of the framework only sees the JSON contract and typed outputs. In practice, the topologies described here were built on one cloud. Supporting another means writing new root modules and image resolution for that provider, while the framework, suites and reporting stay as they are.

Why not test every combination in the matrix?

The full cross-product grows multiplicatively and most of it adds no information. Triggers test what changed: a new OS image is tested with the current product version, not with every historical one. Use cases are prioritised by what customers actually run.

Why does the framework not update the documentation itself?

A support listing is a commitment to customers, so a person always makes the final edit. See Run lifecycle.

How long does a run take?

It's dominated by provisioning. VM hosts are ready in minutes, while clusters, especially managed ones, take longer. Validation time depends on how long the product needs before its data reaches the backend.

What happens if a run crashes halfway?

Because state is remote, the run can be destroyed from any machine. I'd also tag every resource with its run ID and add a scheduled sweeper to catch anything that slips through (see Cost and safety).