CtrlK
BlogDocsLog inGet started
Tessl Logo

terraform-search-import

Discover existing Azure resources and bulk import them into Terraform management. USE FOR: import Azure resources, bring unmanaged infra under Terraform, audit Azure resources, migrate to IaC, terraform import, bulk import. WHEN: import existing resources, discover Azure infrastructure, adopt Terraform for existing resources, generate import blocks. DO NOT USE FOR: Bicep code, new resource creation, architecture decisions.

89

Quality

86%

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Passed

No known issues

SKILL.md
Quality
Evals
Security

Terraform Search & Import for Azure

Discover existing Azure resources and generate Terraform configuration for bulk import.

References:

  • Terraform Import
  • Terraform Search (TF 1.14+)

Decision Tree

┌─ Identify target Azure resources
│
├─ PRIMARY: Manual Discovery via az CLI (always works)
│  └─ az resource list → create import blocks → terraform plan → apply
│
└─ SECONDARY: Terraform Search (EXPERIMENTAL)
   ├─ Check: terraform version >= 1.14?
   │  └─ NO → use Manual workflow
   ├─ Check: azurerm supports list_resource_schemas for this type?
   │  └─ UNKNOWN/NO → use Manual workflow
   └─ YES to both → use Search workflow

Primary workflow = Manual Discovery via az CLI. Always works with azurerm ~> 4.0.

Search workflow is experimentalazurerm provider support for list_resource_schemas is TBD. Use Manual Discovery as the reliable default.


Manual Discovery Workflow (Primary)

Step 1: Discover Resources with az CLI

az resource list --resource-group rg-contoso-prod --output table
az resource list --tag Environment=prod --output json

Use type-specific commands: az vm list, az network vnet list, az storage account list, etc.

Step 2: Create Import Blocks

For each resource, create a resource block + import block. See references/manual-import.md for full examples and bulk import scripts.

Step 3: Plan and Apply

terraform plan    # Review — should show import actions only
terraform apply   # Execute imports

Azure Resource Type ↔ Terraform Mapping

Azure TypeTerraform Resourceaz CLI
Microsoft.Resources/resourceGroupsazurerm_resource_groupaz group list
Microsoft.Network/virtualNetworksazurerm_virtual_networkaz network vnet list
Microsoft.Compute/virtualMachinesazurerm_linux_virtual_machineaz vm list
Microsoft.Storage/storageAccountsazurerm_storage_accountaz storage account list
Microsoft.KeyVault/vaultsazurerm_key_vaultaz keyvault list
Microsoft.Sql/serversazurerm_mssql_serveraz sql server list
Microsoft.Web/sitesazurerm_linux_web_appaz webapp list
Microsoft.App/containerAppsazurerm_container_appaz containerapp list

Import ID format: /subscriptions/{sub}/resourceGroups/{rg}/providers/{type}/{name}

Post-Import: Adopt AVM Modules

After importing raw azurerm_* resources, refactor to AVM modules using moved {} blocks. See terraform-patterns skill references/refactor-module.md for guidance.

Integration with Terraform MCP

Use Terraform MCP tools during import workflows:

ToolPurpose
mcp_terraform_search_providersValidate resource type support in provider
mcp_terraform_get_provider_detailsGet resource schemas and import ID format
mcp_terraform_search_modulesFind AVM modules for post-import refactoring
mcp_terraform_get_latest_module_versionGet latest AVM module version

Terraform Search Workflow (Experimental)

Warning: Requires Terraform >= 1.14 and azurerm provider support for list_resource_schemas (TBD). Use Manual Discovery above as primary path.

Uses .tfquery.hcl files with list blocks to discover resources, then terraform query -generate-config-out=imported.tf to generate config. Clean generated output by removing computed attrs, adding variables, applying CAF naming.


Reference Index

FileContents
references/manual-import.mdDetailed az CLI discovery, bulk import scripts, resource mapping
scripts/list_resources.shExtract supported list resources from providers
Repository
jonathan-vella/azure-agentic-infraops
Last updated
Created

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.