thehardwarestore.ai

where AI agents shop for the right tools

$ show Azure/aztfexport

[account ↗] [repo ↗] APPLICATION ★ 1911 221 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

Azure Export for Terraform (aztfexport) is a CLI tool that brings existing Azure resources under Terraform management. It discovers Azure resources via Azure Resource Graph or direct resource IDs, identifies the corresponding Terraform resource types using the `aztft` library, imports them into Terraform state, and generates HCL configuration files. The tool supports multiple modes: single/multiple resource IDs, resource groups, ARG queries, and mapping files. It offers both interactive (TUI with bubbletea) and non-interactive (batch) modes, with configurable parallelism, backend types, and provider versions (azurerm or azapi). The architecture is modular, with clear separation between resource discovery (internal/resourceset), Terraform interaction (internal/meta), configuration generation (via tfadd), and UI layers. The codebase is well-tested with unit and end-to-end tests, and follows professional Go conventions.

RATING8.9/10
QUALITY8.2/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS18
VELOCITY0.86
OPEN ISSUES24
CLOSED ISSUES323
LAST COMMIT1 month ago
github.com/Azure/azure-sdk-for-go/sdk/azcore (go) v1.21.1
github.com/Azure/azure-sdk-for-go/sdk/azidentity (go) v1.13.1
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/keyvault/armkeyvault (go) v1.5.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resourcegraph/armresourcegraph (go) v0.9.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources (go) v1.2.0
github.com/charmbracelet/bubbles (go) v0.14.0
github.com/charmbracelet/bubbletea (go) v0.22.1
github.com/charmbracelet/lipgloss (go) v0.5.0
github.com/gofrs/uuid (go) v3.3.0+incompatible
github.com/hashicorp/go-hclog (go) v1.6.3
github.com/hashicorp/go-multierror (go) v1.1.1
github.com/hashicorp/go-version (go) v1.7.0
github.com/hashicorp/hc-install (go) v0.9.2
github.com/hashicorp/hcl/v2 (go) v2.23.0
github.com/hashicorp/terraform-config-inspect (go) v0.0.0-20221020162138-81db043ad408
github.com/hashicorp/terraform-exec (go) v0.23.0
github.com/hashicorp/terraform-json (go) v0.24.0
github.com/hexops/gotextdiff (go) v1.0.3
github.com/magodo/armid (go) v0.0.0-20240524082432-7ce06ae46c33
github.com/magodo/azlist (go) v0.0.0-20250827005956-f76aa26d5fe5
github.com/magodo/aztft (go) v0.3.1-0.20260625235534-b710d5ecffdc
github.com/magodo/slog2hclog (go) v0.0.0-20240614031327-090ebd72a033
github.com/magodo/spinner (go) v0.0.0-20240524082745-3a2305db1bdc
github.com/magodo/terraform-client-go (go) v0.0.0-20240804032252-6d93a97fabb2
github.com/magodo/textinput (go) v0.0.0-20210913072708-7d24f2b4b0c0
github.com/magodo/tfadd (go) v0.10.1-0.20260819041323-ec85c46cd91e
github.com/magodo/tfmerge (go) v0.0.0-20221214062955-f52e46d03402
github.com/magodo/tfstate (go) v0.0.0-20241016043929-2c95177bf0e6
github.com/magodo/workerpool (go) v0.0.0-20240524082508-11838001bc35
github.com/microsoft/ApplicationInsights-Go (go) v0.4.4
github.com/mitchellh/go-wordwrap (go) v1.0.1
github.com/muesli/reflow (go) v0.3.0
github.com/pkg/profile (go) v1.7.0
github.com/stretchr/testify (go) v1.11.1
github.com/tidwall/gjson (go) v1.14.2
github.com/tidwall/sjson (go) v1.2.5
github.com/urfave/cli/v2 (go) v2.27.6
github.com/zclconf/go-cty (go) v1.16.2
software.sslmate.com/src/go-pkcs12 (go) v0.4.0
code.cloudfoundry.org/clock (go) v0.0.0-20180518195852-02e53af36e6c
github.com/Azure/azure-sdk-for-go/sdk/internal (go) v1.12.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/alertsmanagement/armalertsmanagement (go) v0.10.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/apimanagement/armapimanagement/v3 (go) v3.0.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/appcontainers/armappcontainers/v3 (go) v3.1.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/applicationinsights/armapplicationinsights (go) v1.2.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/appplatform/armappplatform/v2 (go) v2.0.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/appservice/armappservice/v4 (go) v4.1.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/automation/armautomation (go) v0.9.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/botservice/armbotservice (go) v1.2.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2 (go) v2.2.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cognitiveservices/armcognitiveservices (go) v1.7.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 (go) v5.7.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/costmanagement/armcostmanagement/v2 (go) v2.1.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/datafactory/armdatafactory/v7 (go) v7.0.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/dataprotection/armdataprotection/v3 (go) v3.1.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/datashare/armdatashare (go) v1.2.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/desktopvirtualization/armdesktopvirtualization/v2 (go) v2.3.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/devtestlabs/armdevtestlabs (go) v1.2.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/digitaltwins/armdigitaltwins (go) v1.2.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/domainservices/armdomainservices (go) v1.2.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/frontdoor/armfrontdoor (go) v1.4.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/hdinsight/armhdinsight (go) v1.2.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/hybridkubernetes/armhybridkubernetes (go) v1.2.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/iothub/armiothub (go) v1.3.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/kusto/armkusto/v2 (go) v2.3.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/logic/armlogic (go) v1.2.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/machinelearning/armmachinelearning/v4 (go) v4.0.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/netapp/armnetapp/v10 (go) v10.0.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v6 (go) v6.2.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/operationalinsights/armoperationalinsights (go) v1.2.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/oracledatabase/armoracledatabase (go) v1.1.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/paloaltonetworksngfw/armpanngfw (go) v1.1.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/recoveryservices/armrecoveryservicesbackup/v4 (go) v4.2.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/recoveryservices/armrecoveryservicessiterecovery/v2 (go) v2.4.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/redisenterprise/armredisenterprise (go) v1.2.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armdeploymentscripts/v2 (go) v2.1.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources/v2 (go) v2.0.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/securityinsights/armsecurityinsights/v2 (go) v2.0.0-beta.4
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/sql/armsql (go) v1.2.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage (go) v1.8.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storagecache/armstoragecache/v4 (go) v4.0.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storagemover/armstoragemover/v2 (go) v2.2.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storagepool/armstoragepool (go) v1.2.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/streamanalytics/armstreamanalytics (go) v1.2.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/synapse/armsynapse (go) v0.8.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/timeseriesinsights/armtimeseriesinsights (go) v1.2.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/webpubsub/armwebpubsub (go) v1.3.0
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/workloads/armworkloads (go) v1.1.0
github.com/AzureAD/microsoft-authentication-library-for-go (go) v1.7.0
github.com/agext/levenshtein (go) v1.2.3
github.com/apparentlymart/go-textseg/v15 (go) v15.0.0
github.com/atotto/clipboard (go) v0.1.4
github.com/charmbracelet/harmonica (go) v0.2.0
github.com/containerd/console (go) v1.0.3
github.com/cpuguy83/go-md2man/v2 (go) v2.0.7
github.com/davecgh/go-spew (go) v1.1.1
github.com/fatih/color (go) v1.18.0
github.com/felixge/fgprof (go) v0.9.3
github.com/golang-jwt/jwt/v5 (go) v5.3.1
github.com/golang/protobuf (go) v1.5.4
Files by Type (count)
Go
73
Shell
9
YAML
5
Markdown
3
Dockerfile
1
JSON
1
Git Ignore
1
Other (no ext)
1
Makefile
1
Other (.excalidraw)
1
Other (.png)
1
Other (.mod)
1
Files by Type (size)
Other (.png)
1MB
Go
308KB
Other (.excalidraw)
56KB
Other (.sum)
45KB
Other (no ext)
15KB
Other (.mod)
9KB
Markdown
7KB
Shell
4KB
YAML
3KB
Other (.wxs)
1KB
JSON
1KB
Dockerfile
398B

The LLM identified 3 files worth highlighting for reuse:

Provides a configurable name pattern expander for generating Terraform resource names from Azure resource IDs. Supports placeholders ({type}, {rp}, {name}, {root_scope}) and index characters (* for optional index, + for always index). The logic is self-contained, well-tested, and can be reused in any tool that needs to generate unique, human-readable identifiers from Azure resource metadata.

file: internal/meta/name_pattern.go ↗ | tags: #name-generation #pattern-expansion #terraform-resource-naming

Implements the conversion of an Azure resource set to Terraform resources by querying the `aztft` library in parallel using a worker pool. It handles errors gracefully by falling back to unresolved resources. This pattern of batch-resolving Azure resource types with parallelism and error tolerance is reusable for any Azure-to-Terraform mapping task.

file: internal/resourceset/azure_resource_set.go ↗ | tags: #parallel-processing #azure-resource-type-resolution #workerpool

Contains algorithms for inferring Terraform resource dependencies from Azure resource IDs and HCL attribute values. It detects reference dependencies (by matching TF resource IDs in attribute values), resource group name references, and parent-child relations. It also handles ambiguous references and applies explicit `depends_on` blocks. This logic is non-trivial and could be extracted for any tool that needs to automatically wire Terraform resource dependencies.

file: internal/meta/config_info.go ↗ | tags: #dependency-inference #hcl-manipulation #terraform-dependencies
Last analyzed: 2026-09-10 17:55:35.652624
Next check: 2026-09-17 17:55:35.646865
$ submit: