diff --git a/README.md b/README.md index ca90170..4be348b 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,8 @@ plan files by displaying all differences in resources and outputs, including sensitive values. Unlike Terraform, which hides sensitive data, tfreveal reveals these values to ensure complete transparency in your infrastructure changes. +[![asciicast](https://asciinema.org/a/672302.svg)](https://asciinema.org/a/672302) + ## Motivation Terraform does mask sensitive values in the output (e.g. from `terraform plan`) diff --git a/resources/tfreveal.cast b/resources/tfreveal.cast new file mode 100644 index 0000000..e2271b5 --- /dev/null +++ b/resources/tfreveal.cast @@ -0,0 +1,79 @@ +{"version": 2, "width": 209, "height": 51, "timestamp": 1723800851, "idle_time_limit": 3.0, "env": {"SHELL": "/bin/bash", "TERM": "xterm-256color"}, "title": "tfreveal"} +[0.018058, "o", "$ "] +[1.011409, "o", "t"] +[1.210462, "o", "e"] +[1.449761, "o", "r"] +[1.593245, "o", "r"] +[1.784655, "o", "a"] +[2.135778, "o", "f"] +[2.303313, "o", "o"] +[2.488217, "o", "r"] +[2.630827, "o", "m"] +[3.253111, "o", " "] +[3.629153, "o", "p"] +[3.860281, "o", "l"] +[4.020036, "o", "a"] +[4.116258, "o", "n"] +[4.292557, "o", " "] +[4.84028, "o", "-"] +[5.096364, "o", "o"] +[5.249848, "o", "u"] +[5.407821, "o", "t"] +[5.63759, "o", " "] +[6.182006, "o", "p"] +[6.389167, "o", "l"] +[6.571166, "o", "a"] +[6.714918, "o", "n"] +[7.144546, "o", "."] +[7.456428, "o", "o"] +[7.592493, "o", "u"] +[7.736033, "o", "t"] +[8.182719, "o", "\r\n\u001b[?2004l\r"] +[8.28449, "o", "\u001b[0m\u001b[1mnull_resource.sensitive: Refreshing state... [id=779033444032252607]\u001b[0m\r\n"] +[8.293545, "o", "\r\nTerraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:\r\n\u001b[31m-\u001b[0m/\u001b[32m+\u001b[0m destroy and then create replacement\u001b[0m\r\n\r\nTerraform will perform the following actions:\r\n\r\n\u001b[1m # null_resource.sensitive\u001b[0m must be \u001b[1m\u001b[31mreplaced\u001b[0m\r\n\u001b[0m\u001b[31m-\u001b[0m/\u001b[32m+\u001b[0m\u001b[0m resource \"null_resource\" \"sensitive\" {\r\n \u001b[33m~\u001b[0m\u001b[0m id = \"779033444032252607\" -> (known after apply)\r\n \u001b[33m~\u001b[0m\u001b[0m triggers = { \u001b[31m# forces replacement\u001b[0m\u001b[0m\r\n \u001b[33m~\u001b[0m\u001b[0m \"secret\" = (sensitive value)\r\n }\r\n }\r\n\r\n\u001b[1mPlan:\u001b[0m 1 to add, 0 to change, 1 to destroy.\r\n\u001b[0m\r\nChanges to Outputs:\r\n \u001b[33m~\u001b[0m\u001b[0m json_with_nested_sensitive = (sensitive value)\r\n \u001b[33m~\u001b[0m\u001b[0m null_resource = (sensitive value)\r\n \u001b[33m~\u001b[0m\u001b[0m sensitive = (sensitive value)\r\n \u001b[33m~\u001b[0m\u001b[0m sensitive_json = (sensitive value)\r\n\u001b[90m\r\n────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\r\n\r\nSaved the plan to: plan.out\r\n\r\nTo perform exactly these actions, run the following command to apply:\r\n terraform apply \"plan.out\"\r\n"] +[8.299675, "o", "$ "] +[13.701412, "o", "t"] +[14.434745, "o", "e"] +[14.713196, "o", "r"] +[14.848999, "o", "r"] +[15.076409, "o", "a"] +[15.637754, "o", "f"] +[15.787253, "o", "o"] +[15.960045, "o", "r"] +[16.353591, "o", "m"] +[16.545223, "o", " "] +[16.782131, "o", "s"] +[16.878969, "o", "h"] +[17.015434, "o", "o"] +[17.173707, "o", "w"] +[17.750892, "o", " "] +[18.657051, "o", "-"] +[18.970233, "o", "j"] +[19.117325, "o", "s"] +[19.213684, "o", "o"] +[19.410394, "o", "n"] +[19.833309, "o", " "] +[20.256719, "o", "p"] +[20.446091, "o", "l"] +[20.545028, "o", "a"] +[20.644554, "o", "n"] +[20.945021, "o", "."] +[21.261249, "o", "o"] +[21.407778, "o", "u"] +[21.556152, "o", "t"] +[22.145026, "o", " "] +[22.984971, "o", "|"] +[23.22992, "o", " "] +[24.154724, "o", "t"] +[24.645254, "o", "f"] +[24.983468, "o", "r"] +[25.080573, "o", "e"] +[25.413524, "o", "v"] +[25.673612, "o", "e"] +[25.804847, "o", "a"] +[25.941391, "o", "l"] +[26.529072, "o", "\r\n\u001b[?2004l\r"] +[26.623703, "o", "The provided execution plan contains the following changes.\r\n\r\n"] +[26.62414, "o", "Changes to Resources:\r\n\r\n \u001b[97m# null_resource.sensitive\u001b[0m must be \u001b[91mreplaced\u001b[0m\r\n\u001b[31m-\u001b[0m/\u001b[32m+\u001b[0m null_resource.sensitive = {\r\n \u001b[33m~\u001b[0m id = \"779033444032252607\" \u001b[33m->\u001b[0m \"(known after apply)\"\r\n triggers = { \u001b[91m# forces replacement\u001b[0m\r\n \u001b[33m~\u001b[0m secret = \"some secret value\" \u001b[33m->\u001b[0m \"new secret value\"\r\n }\r\n }\r\n\r\nChanges to Outputs:\r\n\r\n \u001b[33m~\u001b[0m json_with_nested_sensitive = jsonencode(\r\n {\r\n \u001b[33m~\u001b[0m key = \"value\" \u001b[33m->\u001b[0m \"value2\"\r\n }\r\n )\r\n \u001b[33m~\u001b[0m null_resource = {\r\n \u001b[33m~\u001b[0m id = \"779033444032252607\" \u001b[33m->\u001b[0m \"(known after apply)\"\r\n triggers = {\r\n \u001b[33m~\u001b[0m secret = \"some secret value\" \u001b[33m->\u001b[0m \"new secret value\"\r\n }\r\n }\r\n \u001b[33m~\u001b[0m sensitive = \"some secret value\" \u001b[33m->\u001b[0m \"new secret value\"\r\n \u001b[33m~\u001b[0m sensitive_json = jsonencode(\r\n {\r\n \u001b[33m~\u001b[0m key = \"value\" \u001b[33m->\u001b[0m \"value2\"\r\n }\r\n )\r\n"] +[26.631321, "o", "$ "] +[28.404596, "o", "\u001b[?2004l\r\r\nexit\r\n"]