Loading ARM to Terraform Converter...

How to Convert Azure ARM Templates to Terraform - Complete Guide

Step 1

Input Your Azure ARM Template

Start by providing your Azure Resource Manager template. Whether you're migrating from ARM to Terraform or modernizing your Azure Infrastructure as Code:

Paste directly: Copy your ARM template (JSON or YAML) and paste it into the input editor
Upload files: Click "Upload" to select your .json or .template files
Try the sample: Click "Sample" to load a complete Azure infrastructure example with VNet and Storage
Step 2

Automatic Conversion Process

Our intelligent converter analyzes your ARM template and generates idiomatic Terraform HCL using the azurerm provider:

Resource mapping: Converts 40+ Azure ARM resource types to Terraform azurerm provider resources
ARM functions: Translates parameters(), variables(), resourceId() to Terraform syntax
Parameters → Variables: ARM parameters become Terraform variables with proper types
Outputs preserved: ARM outputs are converted to Terraform outputs
Provider setup: Generates terraform required_providers block and azurerm provider configuration
Step 3

Review Generated Terraform Code

Review the generated main.tf configuration. The converter creates production-ready Terraform code for Azure:

Azure resources: VMs, VNets, Storage Accounts, AKS clusters, App Services, SQL databases, and more
Location handling: ARM location parameters correctly mapped to Azure regions
Tags preserved: Resource tags maintained for cost management and organization
Step 4

Download and Deploy with Terraform

Deploy your Azure infrastructure with Terraform:

Download: Save main.tf to your project directory
Initialize: Run terraform init to download the azurerm provider
Authenticate: Run az login to authenticate with Azure
Apply: Run terraform apply to provision Azure resources

Frequently Asked Questions

Which Azure resources are supported?

The converter supports 40+ Azure resource types including Virtual Machines, Virtual Networks, Storage Accounts, AKS clusters, App Services, SQL databases, CosmosDB, Container Registries, Key Vaults, Application Insights, and more.

How are ARM template functions handled?

Common ARM template functions are converted: parameters() becomes variables, variables() becomes locals, resourceId() becomes resource references. Complex expressions may need manual review.

Is the generated code production-ready?

The generated Terraform provides a solid starting point. Review the output, adjust resource properties as needed, and run terraform plan before deploying. ARM-specific features like nested deployments may need manual translation.

Can I import existing Azure resources?

Yes! After generating Terraform code, use terraform import to manage existing Azure resources that match your template. This allows you to adopt existing infrastructure without recreation.

Is my ARM template secure during conversion?

Absolutely! All conversion happens client-side in your browser. Your ARM templates, Azure configurations, and sensitive data never leave your computer or get sent to any server.

What about Azure Bicep files?

Bicep files need to be compiled to ARM templates first using az bicep build, then the resulting ARM JSON can be converted to Terraform.