Skip to content

Terraform support

Kamil Mrzygłód edited this page Apr 30, 2023 · 1 revision

Starting from version 1.2, ACE supports Terraform as one more IaC tool, which can be used as input for estimations. To use Terraform with ACE no additional tools are needed - you keep your code as it as and just point it as source, in the same way as you'd do for ARM Templates or Bicep files.

As for now, support for Terraform is considered experimental, but stable.

This document describes differences in using Terraform compared to ARM Templates / Bicep.

Usage

Running estimations for Terraform works in the same way as for other supported IaC tools:

./azure-cost-estimator <path-to-your-terraform-file>.tf <subscription-id> <resource-group-name>

ACE will automatically parse all the .tf files in the same directory, as the .tf file you provided based on the tfplan file created there. Note, that tfplan file must be created before running ACE and must be named exactly that. You can create that file using Terraform CLI: terraform plan -out tfplan.

This is a limitation of current implementation of Terraform support in ACE. In the next version, you'll be able to pass a custom location of your Terraform plan file.

ACE treats Terraform resources in the same way as it'd treat standard ARM Templates or Bicep files.

Features support

Not every feature of ACE is supported when working with Terraform:

  • Scoped deployment is not available as What If operation is no performed for Terraform. The output of What If is guaranteed by reading a plan file.
  • You cannot provide usage patterns.
  • Specifying deployment mode is ignored.
  • Passing parameters is yet not possible.

Most of those limitations (if they're not solved by use of Terraform itself), will be resolved during next iterations.

Clone this wiki locally