2 min read | by Jordi Prats
Starting terraform v0.12 we can get the terraform plan in json format. To do so, first we will need to save the plan to a file:
$ terraform plan -out demo.plan
This file is going to be a zip file that it is not intended to be unzipped, instead we can use the terraform show command to see it's contents:
$ terraform show demo.plan An execution plan has been generated and is shown below. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # kubernetes_namespace.jenkins_namespace will be created + resource "kubernetes_namespace" "jenkins_namespace" { + id = (known after apply) + metadata { + generation = (known after apply) + name = "jenkins" + resource_version = (known after apply) + self_link = (known after apply) + uid = (known after apply) } } (...) Plan: 3 to add, 0 to change, 0 to destroy.
Despite that we can also use terraform show to output it using json format with far more details:
$ terraform show -json demo.plan | python -m json.tool { "format_version": "0.1", "terraform_version": "0.12.29", "variables": { "additional_plugins": { "value": [] }, "jenkins_namespace": { "value": "jenkins" } }, "planned_values": { "root_module": { "resources": [ { "address": "kubernetes_namespace.jenkins_namespace", "mode": "managed", "type": "kubernetes_namespace", "name": "jenkins_namespace", "provider_name": "kubernetes", "schema_version": 0, "values": { "metadata": [ { "annotations": null, "generate_name": null, "labels": null, "name": "jenkins" } ], "timeouts": null } } ], (...)
Output format is versioned, so it might change in the future, even though it is using the same format for 0.12, 0.13 and 0.14
"format_version": "0.1",
Posted on 28/01/2021