BPlan: Formal Verification of Stability in Terraform Changes
Authors/Creators
Description
With Infrastructure as Code (IaC) tools like terraform, users declaratively define the target infrastructure state, and the IaC tool automatically plans and executes the required deployment actions to reconcile the target and actual state. However, ensuring the correctness and safety of such plans remains a challenge. BPlan leverages a formalization of Terraform in Maude and allows to verify properties on the stability of resources and dependencies, namely that during evaluation, (1) a resource is never duplicated (two instances exist at the same time) and (2) a dependency is never dangling (the dependency link exist but the target instance is absent).
This upload is the artifact of the paper "Formal Verification of Stability in Provisioning Changes with BPlan" to be published at SEFM 2026.
File structure :
bplan/is the main subdirectory containing the source code of BPlan with the Maude semantics as well as the code for generating our benchmarks, the Terraform code of real modules and their changes, and scripts for BPlan correctness validations.src/contains the Python source files of BPlan, it relies on the Maude semantics insemantics/.semantics/contains our Maude implementation of Terraform's semantics.real-modules/contains the Terraform modules extracted from TerraDS.synthetic-cases/contains the script to generate our benchmarks as well as archive files of the benchmarks (excluding the systematic cases with 4 resources) and the results in CSV.scripts/contains various scripts, seescripts/README.md.
query_TerraDS/contains the code to count the number of resources in TerraDS.TerraDS-exploration/contains the code to extract critical commits. The extraction may take several hours (even days if not parallelized).
Files
BPlan-SEFM26.zip
Additional details
Funding
- Agence Nationale de la Recherche
- TARANIS - Taranis : Modéliser, Déployer, Orchestrer, et Optimiser les applications et les infrastructures du cloud ANR-23-PECL-0008