1. Developer pushes VM spec (YAML)
Plain KubeVirt manifest fragment stored in GitLab repo.
2. GitLab CI renders Terraform file
Job uses a small Python/Jinja2 script to wrap the YAML into a kubernetes_manifest resource.
3. Terraform plan / apply
State stored in GitLab-managed backend (EE) or Terraform Cloud.