Examples
Real tfplan2md output from actual Terraform plans. See what your reports will look like.
Report Templates
tfplan2md includes built-in templates for different use cases. Choose the right level of detail for your workflow.
π Security Analysis Integration
NEW in v1.6.0Combine Terraform plan changes with security findings from Checkov, TfLint, and Trivy in a single unified report. Security issues are automatically mapped to specific resources and attributes.
- Security-conscious teams requiring audit trails
- Compliance workflows requiring both infrastructure and security validation
- Teams using multiple security tools (Checkov, TfLint, Trivy)
- PR reviews where security findings need visibility alongside changes
Terraform Plan Report
Generated by tfplan2md 1.6.0 on 2026-01-31 08:43:31 UTC | Terraform 1.14.0
Summary
| Action | Count | Resource Types |
|---|---|---|
| β Add | 15 | 1 azurerm_api_management_api_operation 1 azurerm_api_management_named_value 1 azurerm_firewall_network_rule_collection 1 azurerm_key_vault 1 azurerm_key_vault_secret 2 azurerm_log_analytics_workspace 1 azurerm_resource_group 2 azurerm_role_assignment 1 azurerm_storage_account 1 azurerm_subnet 1 azurerm_subscription 2 azurerm_virtual_network |
| π Change | 6 | 1 azurerm_firewall_network_rule_collection 1 azurerm_key_vault 1 azurerm_key_vault_secret 2 azurerm_storage_account 1 azurerm_virtual_network |
| Total | 26 |
Code Analysis Summary
Status: β οΈ 2 high findings require attention
| Severity | Count | Resource Types |
|---|---|---|
| π¨ Critical | 0 | |
| β οΈ High | 2 | 1 azurerm_key_vault 1 azurerm_storage_account |
| β οΈ Medium | 4 | 1 azurerm_key_vault 1 azurerm_storage_account |
| βΉοΈ Low | 1 | 1 azurerm_virtual_network |
Tools Used: Checkov 3.2.490, tflint 0.60.0, Trivy 0.50.0
Resource Changes
π¦ Module: root
β azurerm_storage_account logs β π sttfplan2mdlogs in π rg-tfplan2md-demo π eastus
π Security & Quality: β οΈ 1 High, β οΈ 1 Medium
| Severity | Rule | Tool | Message | Attribute |
|---|---|---|---|---|
| β οΈ High | CKV_AZURE_33 |
Checkov | Ensure Storage logging is enabled for Queue service | queue_properties |
| β οΈ Medium | CKV2_AZURE_38 |
Checkov | Ensure soft-delete is enabled on Azure storage account | blob_properties |
| Attribute | Value |
|---|---|
| account_replication_type | LRS |
| account_tier | Standard |
| name | π sttfplan2mdlogs |
# Terraform Plan Report
Generated by tfplan2md 1.6.0 on 2026-01-31 08:43:31 UTC | Terraform 1.14.0
## Summary
| Action | Count | Resource Types |
| ------ | ----- | -------------- |
| β Add | 15 | 1 azurerm_api_management_api_operation<br>... |
| π Change | 6 | 1 azurerm_firewall_network_rule_collection<br>... |
| **Total** | **26** | |
## Code Analysis Summary
**Status:** β οΈ 2 high findings require attention
| Severity | Count | Resource Types |
| -------- | ----- | -------------- |
| π¨ Critical | 0 | |
| β οΈ High | 2 | 1 azurerm_key_vault<br>1 azurerm_storage_account |
| β οΈ Medium | 4 | 1 azurerm_key_vault<br>1 azurerm_storage_account |
| βΉοΈ Low | 1 | 1 azurerm_virtual_network |
**Tools Used:** Checkov 3.2.490, tflint 0.60.0, Trivy 0.50.0
## Resource Changes
### π¦ Module: root
<details open style="margin-bottom:12px; border:1px solid rgb(var(--palette-neutral-10, 153, 153, 153)); padding:12px;">
<summary>β azurerm_storage_account <b><code>logs</code></b> β <code>π sttfplan2mdlogs</code> in <code>π rg-tfplan2md-demo</code> <code>π eastus</code></summary>
<br>
π **Security & Quality:** β οΈ 1 High, β οΈ 1 Medium
| Severity | Rule | Tool | Message | Attribute |
| -------- | ---- | ---- | ------- | --------- |
| β οΈ High | `CKV_AZURE_33` | Checkov | Ensure Storage logging is enabled for Queue service | `queue_properties` |
| β οΈ Medium | `CKV2_AZURE_38` | Checkov | Ensure soft-delete is enabled on Azure storage account | `blob_properties` |
</details>Summary Template
--template summaryCompact overview showing only action counts and resource type breakdown. Perfect for notifications where the full report isn't needed.
- Drift detection notifications (Teams, Slack)
- Scheduled pipeline summaries
- Quick overviews before viewing full report
Terraform Plan Summary
Terraform Version: 1.14.0
Generated: 2025-12-20T14:30:00Z
Summary
| Action | Count | Resource Types |
|---|---|---|
| β Add | 12 | 1 azurerm_firewall_network_rule_collection 1 azurerm_key_vault 1 azurerm_key_vault_secret 2 azurerm_log_analytics_workspace 1 azurerm_resource_group 2 azurerm_role_assignment 1 azurerm_storage_account 1 azurerm_subnet 2 azurerm_virtual_network |
| π Change | 6 | 1 azurerm_firewall_network_rule_collection 1 azurerm_key_vault 1 azurerm_key_vault_secret 2 azurerm_storage_account 1 azurerm_virtual_network |
| β»οΈ Replace | 2 | 1 azurerm_network_security_group 1 azurerm_subnet |
| β Destroy | 3 | 1 azurerm_role_assignment 1 azurerm_storage_account 1 azurerm_virtual_network |
| Total | 23 |
# Terraform Plan Summary
**Terraform Version:** 1.14.0
**Generated:** 2025-12-20T14:30:00Z
## Summary
| Action | Count | Resource Types |
|--------|-------|----------------|
| β Add | 12 | 1 azurerm_firewall_network_rule_collection<br/>1 azurerm_key_vault<br/>1 azurerm_key_vault_secret<br/>2 azurerm_log_analytics_workspace<br/>1 azurerm_resource_group<br/>2 azurerm_role_assignment<br/>1 azurerm_storage_account<br/>1 azurerm_subnet<br/>2 azurerm_virtual_network |
| π Change | 6 | 1 azurerm_firewall_network_rule_collection<br/>1 azurerm_key_vault<br/>1 azurerm_key_vault_secret<br/>2 azurerm_storage_account<br/>1 azurerm_virtual_network |
| β»οΈ Replace | 2 | 1 azurerm_network_security_group<br/>1 azurerm_subnet |
| β Destroy | 3 | 1 azurerm_role_assignment<br/>1 azurerm_storage_account<br/>1 azurerm_virtual_network |
| **Total** | **23** | |Default Template
defaultFull report with summary, resource changes, and attribute details. Shows exactly what will change.
- Standard PR reviews
- Security audits
- Change verification
Terraform Plan Report
Terraform Version: 1.14.0
Summary
| Action | Count | Resource Types |
|---|---|---|
| β Add | 12 | ... |
| π Change | 6 | ... |
| Total | 23 |
Resource Changes
π¦ Module: root
β azurerm_resource_group core β π rg-tfplan2md-demo π eastus
| Attribute | Value |
|---|---|
| location | π eastus |
| name | π rg-tfplan2md-demo |
π·οΈ Tags: environment: demo owner: tfplan2md
π azurerm_storage_account data β π sttfplan2mddata in π rg-tfplan2md-demo π eastus | 2π§ account_replication_type, tags.cost_center
| Attribute | Before | After |
|---|---|---|
| account_replication_type | LRS |
GRS |
| tags.cost_center | - | 1234 |
# Terraform Plan Report
**Terraform Version:** 1.14.0
## Summary
| Action | Count | Resource Types |
|--------|-------|----------------|
| β Add | 12 | ... |
| π Change | 6 | ... |
| **Total** | **23** | |
## Resource Changes
### π¦ Module: root
<details style="margin-bottom:12px; border:1px solid rgb(var(--palette-neutral-10, 153, 153, 153)); padding:12px">
<summary>β azurerm_resource_group <b><code>core</code></b> β <code>π rg-tfplan2md-demo</code> <code>π eastus</code></summary>
<br/>
| Attribute | Value |
|-----------|-------|
| location | `π eastus` |
| name | `π rg-tfplan2md-demo` |
**π·οΈ Tags:** `environment: demo` `owner: tfplan2md`
</details>
<details style="margin-bottom:12px; border:1px solid rgb(var(--palette-neutral-10, 153, 153, 153)); padding:12px">
<summary>π azurerm_storage_account <b><code>data</code></b> β <code>π sttfplan2mddata</code> in <code>π rg-tfplan2md-demo</code> <code>π eastus</code> | 2π§ account_replication_type, tags.cost_center</summary>
<br/>
| Attribute | Before | After |
|-----------|--------|-------|
| account_replication_type | `LRS` | `GRS` |
| tags.cost_center | - | `1234` |
</details>Feature Examples
See how tfplan2md transforms complex Terraform changes into readable reports.
Firewall Rule Semantic Diffing
Learn more βArray index changes are replaced with a semantic diff showing which rules were added, modified, or removed.
π azurerm_firewall_network_rule_collection network_rules β π demo-network-rules in π rg-firewall-demo | 9π§ priority, rule[0].destination_addresses[0], rule[0].destination_ports[0], +6 more
π azurerm_firewall_network_rule_collection.network_rules
Collection: demo-network-rules | Priority: 150 | Action: β
Allow
Rule Changes
| Change | Rule Name | Protocols | Source Addresses | Destination Addresses | Destination Ports | Description |
|---|---|---|---|---|---|---|
| β | allow-dns |
π TCP, π¨ UDP |
π 10.1.0.0/24 |
π 168.63.129.16 |
π 53 |
|
| π | allow-http |
π TCP | - π 10.1.0.0/24 |
- π 0.0.0.0/0 |
π 80 | |
| β | allow-ssh-old |
π TCP |
π 10.0.0.0/16 |
π 10.1.0.0/24 |
π 22 |
|
| βΊοΈ | allow-https |
π TCP |
π 10.1.0.0/24 |
π 0.0.0.0/0 |
π 443 |
<details open style="margin-bottom:12px; border:1px solid rgb(var(--palette-neutral-10, 153, 153, 153)); padding:12px;">
<summary>π azurerm_firewall_network_rule_collection <b><code>network_rules</code></b> β <code>π demo-network-rules</code> in <code>π rg-firewall-demo</code> | 9π§ priority, rule[0].destination_addresses[0], rule[0].destination_ports[0], +6 more</summary>
<br>
### π azurerm_firewall_network_rule_collection.network_rules
**Collection:** `demo-network-rules` | **Priority:** `150` | **Action:** `β
Allow`
#### Rule Changes
| Change | Rule Name | Protocols | Source Addresses | Destination Addresses | Destination Ports | Description |
| -------- | ----------- | ----------- | ------------------ | ---------------------- | ------------------- | ------------- |
| β | `allow-dns` | `π TCP`, `π¨ UDP` | `π 10.1.0.0/24` | `π 168.63.129.16` | `π 53` | `` |
| π | `allow-http` | π TCP | <code style="display:block; white-space:normal; padding:0; margin:0;"><span style="background-color: #fff5f5; border-left: 3px solid #d73a49; color: #24292e; display: inline-block; padding-left: 8px; margin-left: 0;">- π 10.<span style="background-color: #ffc0c0; color: #24292e;">1</span>.0.0/<span style="background-color: #ffc0c0; color: #24292e;">24</span></span><br><span style="background-color: #f0fff4; border-left: 3px solid #28a745; color: #24292e; display: inline-block; padding-left: 8px; margin-left: 0;">+ π 10.<span style="background-color: #acf2bd; color: #24292e;">0</span>.0.0/<span style="background-color: #acf2bd; color: #24292e;">8</span></span></code> | <code style="display:block; white-space:normal; padding:0; margin:0;"><span style="background-color: #fff5f5; border-left: 3px solid #d73a49; color: #24292e; display: inline-block; padding-left: 8px; margin-left: 0;">- <span style="background-color: #ffc0c0; color: #24292e;">π 0.0.0.0/0</span></span><br><span style="background-color: #f0fff4; border-left: 3px solid #28a745; color: #24292e; display: inline-block; padding-left: 8px; margin-left: 0;">+ <span style="background-color: #acf2bd; color: #24292e;">β³οΈ</span></span></code> | π 80 | |
| β | `allow-ssh-old` | `π TCP` | `π 10.0.0.0/16` | `π 10.1.0.0/24` | `π 22` | `` |
| βΊοΈ | `allow-https` | `π TCP` | `π 10.1.0.0/24` | `π 0.0.0.0/0` | `π 443` | `` |
</details>Firewall Application Rule Collections
Learn more βApplication rules render as readable FQDN-focused tables with semantic diffs for added, changed, removed, and unchanged entries.
π azurerm_firewall_application_rule_collection app_rules_update β π web-rules in π rg-firewall-demo | 3 π§ β π allow-github, π π allow-microsoft, β π allow-old-site
Collection: web-rules | Priority: 200 | Action: β
Allow
Rule Changes
| Change | Rule Name | Protocols | Source Addresses | Target FQDNs | Description |
|---|---|---|---|---|---|
| β | π allow-github |
Https:443 |
10.0.1.0/24 |
github.com, *.github.io |
GitHub access |
| π | π allow-microsoft |
Http:80, Https:443 |
10.0.0.0/24 -> 10.0.0.0/16 |
*.microsoft.com |
Microsoft services |
| β | π allow-old-site |
Https:443 |
10.0.2.0/24 |
old-site.example.com |
Legacy site (removed) |
<summary>π azurerm_firewall_application_rule_collection <b><code>app_rules_update</code></b> β <code>π web-rules</code> in <code>π rg-firewall-demo</code> | 3 π§ β <code>π allow-github</code>, π <code>π allow-microsoft</code>, β <code>π allow-old-site</code></summary>
**Collection:** `web-rules` | **Priority:** `200` | **Action:** `β
Allow`
#### Rule Changes
| Change | Rule Name | Protocols | Source Addresses | Target FQDNs | Description |
| ------ | --------- | --------- | ---------------- | ------------ | ----------- |
| β | `π allow-github` | `Https:443` | `10.0.1.0/24` | `github.com, *.github.io` | `GitHub access` |
| π | `π allow-microsoft` | `Http:80, Https:443` | `10.0.0.0/24 -> 10.0.0.0/16` | `*.microsoft.com` | `Microsoft services` |
| β | `π allow-old-site` | `Https:443` | `10.0.2.0/24` | `old-site.example.com` | `Legacy site (removed)` |Module Grouping
Learn more βResources are automatically organized by Terraform module for better readability in multi-module configurations.
Resource Changes
π¦ Module: root
β azurerm_resource_group core β π rg-tfplan2md-demo π eastus
| Attribute | Value |
|---|---|
| location | π eastus |
| name | π rg-tfplan2md-demo |
π·οΈ Tags: environment: demo owner: tfplan2md
β azurerm_storage_account logs β π sttfplan2mdlogs in π rg-tfplan2md-demo π eastus
| Attribute | Value |
|---|---|
| account_replication_type | LRS |
| account_tier | Standard |
| allow_blob_public_access | β false |
| location | π eastus |
| min_tls_version | TLS1_2 |
| name | π sttfplan2mdlogs |
| resource_group_name | π rg-tfplan2md-demo |
π·οΈ Tags: cost_center: ops environment: demo
π¦ Module: module.network
β azurerm_virtual_network hub β π vnet-hub in π rg-tfplan2md-demo π eastus π 10.0.0.0/16
| Attribute | Value |
|---|---|
| address_space[0] | π 10.0.0.0/16 |
| location | π eastus |
| name | π vnet-hub |
| resource_group_name | π rg-tfplan2md-demo |
π·οΈ Tags: environment: demo
π¦ Module: module.security
β azurerm_role_assignment rg_reader β π€ Jane Doe (User) β π‘οΈ Reader on rg-tfplan2md-demo
| Attribute | Value |
|---|---|
| scope | π rg-tfplan2md-demo in subscription 12345678-1234-1234-1234-123456789012 |
| role_definition_id | π‘οΈ Reader (acdd72a7-3385-48ef-bd42-f606fba81ae7) |
| principal_id | π€ Jane Doe (User) [00000000-0000-0000-0000-000000000001] |
| principal_type | π€ User |
| role_definition_name | π‘οΈ Reader |
π¦ Module: module.network.module.monitoring
β azurerm_log_analytics_workspace network β π law-network-monitoring in π rg-tfplan2md-demo π eastus
| Attribute | Value |
|---|---|
| location | π eastus |
| name | π law-network-monitoring |
| resource_group_name | π rg-tfplan2md-demo |
| retention_in_days | 30 |
| sku | PerGB2018 |
π·οΈ Tags: environment: demo module: monitoring
## Resource Changes
### π¦ Module: root
<details style="margin-bottom:12px; border:1px solid rgb(var(--palette-neutral-10, 153, 153, 153)); padding:12px;">
<summary>β azurerm_resource_group <b><code>core</code></b> β <code>π rg-tfplan2md-demo</code> <code>π eastus</code></summary>
<br>
| Attribute | Value |
| ----------- | ------- |
| location | `π eastus` |
| name | `π rg-tfplan2md-demo` |
**π·οΈ Tags:** `environment: demo` `owner: tfplan2md`
</details>
<details style="margin-bottom:12px; border:1px solid rgb(var(--palette-neutral-10, 153, 153, 153)); padding:12px;">
<summary>β azurerm_storage_account <b><code>logs</code></b> β <code>π sttfplan2mdlogs</code> in <code>π rg-tfplan2md-demo</code> <code>π eastus</code></summary>
<br>
| Attribute | Value |
| ----------- | ------- |
| account_replication_type | `LRS` |
| account_tier | `Standard` |
| allow_blob_public_access | `β false` |
| location | `π eastus` |
| min_tls_version | `TLS1_2` |
| name | `π sttfplan2mdlogs` |
| resource_group_name | `π rg-tfplan2md-demo` |
**π·οΈ Tags:** `cost_center: ops` `environment: demo`
</details>
---
### π¦ Module: `module.network`
<details style="margin-bottom:12px; border:1px solid rgb(var(--palette-neutral-10, 153, 153, 153)); padding:12px;">
<summary>β azurerm_virtual_network <b><code>hub</code></b> β <code>π vnet-hub</code> in <code>π rg-tfplan2md-demo</code> <code>π eastus</code> <code>π 10.0.0.0/16</code></summary>
<br>
| Attribute | Value |
| ----------- | ------- |
| address_space[0] | `π 10.0.0.0/16` |
| location | `π eastus` |
| name | `π vnet-hub` |
| resource_group_name | `π rg-tfplan2md-demo` |
**π·οΈ Tags:** `environment: demo`
</details>
---
### π¦ Module: `module.security`
<details style="margin-bottom:12px; border:1px solid rgb(var(--palette-neutral-10, 153, 153, 153)); padding:12px;">
<summary>β azurerm_role_assignment <b><code>rg_reader</code></b> β <code>π€ Jane Doe (User)</code> β <code>π‘οΈ Reader</code> on <code>rg-tfplan2md-demo</code></summary>
<br>
| Attribute | Value |
| ----------- | ------- |
| scope | `π rg-tfplan2md-demo` in subscription `12345678-1234-1234-1234-123456789012` |
| role_definition_id | `π‘οΈ Reader` (`acdd72a7-3385-48ef-bd42-f606fba81ae7`) |
| principal_id | `π€ Jane Doe (User)` [`00000000-0000-0000-0000-000000000001`] |
| principal_type | `π€ User` |
| role_definition_name | `π‘οΈ Reader` |
</details>
---
### π¦ Module: `module.network.module.monitoring`
<details style="margin-bottom:12px; border:1px solid rgb(var(--palette-neutral-10, 153, 153, 153)); padding:12px;">
<summary>β azurerm_log_analytics_workspace <b><code>network</code></b> β <code>π law-network-monitoring</code> in <code>π rg-tfplan2md-demo</code> <code>π eastus</code></summary>
<br>
| Attribute | Value |
| ----------- | ------- |
| location | `π eastus` |
| name | `π law-network-monitoring` |
| resource_group_name | `π rg-tfplan2md-demo` |
| retention_in_days | `30` |
| sku | `PerGB2018` |
**π·οΈ Tags:** `environment: demo` `module: monitoring`
</details>
Parent-Child Resource Grouping
Learn more βGroups, virtual networks, and other parent resources keep their related child changes inline instead of scattering them across the report.
β azuread_group platform_engineers β π₯ Platform Engineers (π platform-engineers) | 3 π€ 1 π₯ 1 π» | β 5 members
| Attribute | Value |
|---|---|
| display_name | Platform Engineers |
| mail_nickname | platform-engineers |
Members
| Change | Member | Terraform Resource |
|---|---|---|
| β | user-100 | members attribute |
| β | group-200 | members attribute |
| β | spn-300 | members attribute |
β azurerm_virtual_network spoke β π vnet-spoke in π rg-tfplan2md-demo π eastus π 10.1.0.0/16 | β 1 subnets | β»οΈ 1 subnets
Subnets
| Change | Name | Address Prefixes | NSG | Delegation | Terraform Resource |
|---|---|---|---|---|---|
| β | π snet-app | π 10.1.1.0/24 | - | - | module.network.azurerm_subnet.app |
| β»οΈ | π snet-db | π 10.1.20.0/24 | - | - | module.network.azurerm_subnet.db |
<summary>β azuread_group <b><code>platform_engineers</code></b> β <code>π₯ Platform Engineers</code> (<code>π platform-engineers</code>) | <code>3 π€ 1 π₯ 1 π»</code> | β 5 members</summary>
#### Members
| Change | Member | Terraform Resource |
| ------ | ------ | ------------------ |
| β | `user-100` | `members attribute` |
| β | `group-200` | `members attribute` |
| β | `spn-300` | `members attribute` |
<summary>β azurerm_virtual_network <b><code>spoke</code></b> β <code>π vnet-spoke</code> in <code>π rg-tfplan2md-demo</code> <code>π eastus</code> <code>π 10.1.0.0/16</code> | β 1 subnets | β»οΈ 1 subnets</summary>
#### Subnets
| Change | Name | Address Prefixes | NSG | Delegation | Terraform Resource |
| ------ | ---- | ---------------- | --- | ---------- | ------------------ |
| β | `π snet-app` | `π 10.1.1.0/24` | - | - | `module.network.azurerm_subnet.app` |
| β»οΈ | `π snet-db` | `π 10.1.20.0/24` | - | - | `module.network.azurerm_subnet.db` |Azure Role Assignment Display
Learn more βRole assignments show human-readable names with principal mapping instead of cryptic GUIDs.
β azurerm_role_assignment rg_reader β π€ Jane Doe (User) β π‘οΈ Reader on rg-tfplan2md-demo
| Attribute | Value |
|---|---|
| scope | π rg-tfplan2md-demo in subscription 12345678-1234-1234-1234-123456789012 |
| role_definition_id | π‘οΈ Reader (acdd72a7-3385-48ef-bd42-f606fba81ae7) |
| principal_id | π€ Jane Doe (User) [00000000-0000-0000-0000-000000000001] |
| principal_type | π€ User |
| role_definition_name | π‘οΈ Reader |
<details style="margin-bottom:12px; border:1px solid rgb(var(--palette-neutral-10, 153, 153, 153)); padding:12px;">
<summary>β azurerm_role_assignment <b><code>rg_reader</code></b> β <code>π€ Jane Doe (User)</code> β <code>π‘οΈ Reader</code> on <code>rg-tfplan2md-demo</code></summary>
<br>
| Attribute | Value |
| ----------- | ------- |
| scope | `π rg-tfplan2md-demo` in subscription `12345678-1234-1234-1234-123456789012` |
| role_definition_id | `π‘οΈ Reader` (`acdd72a7-3385-48ef-bd42-f606fba81ae7`) |
| principal_id | `π€ Jane Doe (User)` [`00000000-0000-0000-0000-000000000001`] |
| principal_type | `π€ User` |
| role_definition_name | `π‘οΈ Reader` |
</details>{
"users": {
"12345678-1234-1234-1234-123456789012": "jane.doe@contoso.com",
"87654321-4321-4321-4321-210987654321": "john.smith@contoso.com"
},
"groups": {
"abcdef12-3456-7890-abcd-ef1234567890": "Platform Team"
},
"servicePrincipals": {
"fedcba98-7654-3210-fedc-ba9876543210": "terraform-spn"
}
}
Azure DevOps Build Definitions
Learn more βBuild definitions render repository configuration, variables, triggers, and outputs as structured tables that stay reviewable even when Terraform marks nested blocks as sensitive.
β azuredevops_build_definition example2 β π example-pipeline
Pipeline Name: example-pipeline
Path: \Pipelines
Agent Pool: Azure Pipelines
Variables
| Name | Value | Is Secret | Allow Override |
|---|---|---|---|
π BUILD_CONFIGURATION |
Release |
β false |
β
true |
π BUILD_PLATFORM |
Any CPU |
β false |
β
true |
Repository
| Type | Repo ID | Branch | YAML Path | Report Build Status |
|---|---|---|---|---|
TfsGit |
ποΈ Infrastructure-Platform (80128bc2-17ff-45f8-ad59-d7609a605c75) |
β refs/heads/master |
azure-pipelines.yml |
β
true |
<details style="margin-bottom:12px; border:1px solid rgb(var(--palette-neutral-10, 153, 153, 153)); padding:12px;">
<summary>β azuredevops_build_definition <b><code>example2</code></b> β <code>π example-pipeline</code></summary>
<br>
**Pipeline Name:** <code>example-pipeline</code>
**Path:** <code>\Pipelines</code>
#### Variables
| Name | Value | Is Secret | Allow Override |
| ---- | ----- | --------- | -------------- |
| `π BUILD_CONFIGURATION` | `Release` | `β false` | `β
true` |
| `π BUILD_PLATFORM` | `Any CPU` | `β false` | `β
true` |
#### Repository
| Type | Repo ID | Branch | YAML Path | Report Build Status |
| ---- | ------- | ------ | --------- | ------------------- |
| `TfsGit` | `ποΈ Infrastructure-Platform (80128bc2-17ff-45f8-ad59-d7609a605c75)` | `β refs/heads/master` | `azure-pipelines.yml` | `β
true` |
</details>Terraform Outputs
Learn more βOutput changes render in a dedicated table so reviewers can see IDs, URLs, and computed values alongside the resource changes that produce them.
π€ Outputs
| Change | Name | Description | Sensitive | Value |
|---|---|---|---|---|
| π | pipeline_id |
The ID of the created build pipeline | No | (known after apply) |
project_name |
The name of the created Azure DevOps project | No | π example-project |
|
repository_url |
The HTTPS URL of the created Git repository | No | https://oocx@dev.azure.com/oocx/example-project/_git/example-repo |
|
variable_group_id |
The ID of the created variable group | No | 1 |
## π€ Outputs
| Change | Name | Description | Sensitive | Value |
| ------ | ---- | ----------- | --------- | ----- |
| π | `pipeline_id` | The ID of the created build pipeline | No | (known after apply) |
| | `project_name` | The name of the created Azure DevOps project | No | `π example-project` |
| | `repository_url` | The HTTPS URL of the created Git repository | No | `https://oocx@dev.azure.com/oocx/example-project/_git/example-repo` |
| | `variable_group_id` | The ID of the created variable group | No | `1` |Sensitive Value Masking
Learn more βSensitive values are automatically masked by default to prevent accidental exposure in PRs.
β azurerm_key_vault_secret db_password β π db-password
| Attribute | Value |
|---|---|
| content_type | password |
| key_vault_id | Key Vault kv-tfplan2md in resource group rg-tfplan2md-demo of subscription 12345678-1234-1234-1234-123456789012 |
| name | π db-password |
| value | (sensitive) |
<details style="margin-bottom:12px; border:1px solid rgb(var(--palette-neutral-10, 153, 153, 153)); padding:12px;">
<summary>β azurerm_key_vault_secret <b><code>db_password</code></b> β <code>π db-password</code></summary>
<br>
| Attribute | Value |
| ----------- | ------- |
| content_type | `password` |
| key_vault_id | Key Vault `kv-tfplan2md` in resource group `rg-tfplan2md-demo` of subscription `12345678-1234-1234-1234-123456789012` |
| name | `π db-password` |
| value | `(sensitive)` |
</details>β azurerm_key_vault_secret db_password β π db-password
| Attribute | Value |
|---|---|
| content_type | password |
| key_vault_id | Key Vault kv-tfplan2md in resource group rg-tfplan2md-demo of subscription 12345678-1234-1234-1234-123456789012 |
| name | π db-password |
| value | super-secret-value |
<details style="margin-bottom:12px; border:1px solid rgb(var(--palette-neutral-10, 153, 153, 153)); padding:12px;">
<summary>β azurerm_key_vault_secret <b><code>db_password</code></b> β <code>π db-password</code></summary>
<br>
| Attribute | Value |
| ----------- | ------- |
| content_type | `password` |
| key_vault_id | Key Vault `kv-tfplan2md` in resource group `rg-tfplan2md-demo` of subscription `12345678-1234-1234-1234-123456789012` |
| name | `π db-password` |
| value | `super-secret-value` |
</details>Real-World Examples
Complete example projects showing tfplan2md in action.
Comprehensive Demo
A handcrafted Terraform plan demonstrating all tfplan2md features: firewall rules, NSG rules, role assignments, module grouping, and more.
Azure DevOps Example
Real Terraform configuration creating Azure DevOps projects, repositories, variable groups, and pipelines. Generate your own plans and test tfplan2md.
Try It Yourself
Run the comprehensive demo using Docker or build from source.
# Default report with principal mapping
docker run --rm oocx/tfplan2md \
/examples/comprehensive-demo/plan.json \
--principals /examples/comprehensive-demo/demo-principals.json
# Summary report
docker run --rm oocx/tfplan2md \
/examples/comprehensive-demo/plan.json \
--template summary
# Show sensitive values
docker run --rm oocx/tfplan2md \
/examples/comprehensive-demo/plan.json \
--principals /examples/comprehensive-demo/demo-principals.json \
--show-sensitive
git clone https://github.com/oocx/tfplan2md.git
cd tfplan2md
# Default report
dotnet run --project src/Oocx.TfPlan2Md/Oocx.TfPlan2Md.csproj -- \
examples/comprehensive-demo/plan.json \
--principals examples/comprehensive-demo/demo-principals.json
# Summary report
dotnet run --project src/Oocx.TfPlan2Md/Oocx.TfPlan2Md.csproj -- \
examples/comprehensive-demo/plan.json \
--template summary