Skip to content
/ tfadd Public

Generate valid Terraform configuration from state

License

Notifications You must be signed in to change notification settings

magodo/tfadd

Repository files navigation

tfadd

Generate valid Terraform configuration from state.

Install

go install github.com/magodo/tfadd@latest

Intro

The goal of this tool is to improve the import experience of Terraform, that rather than constructing the configurations from scratch, tfadd (try its best to) provide users a valid configuration automatically.

The valid here means the generated configuration should raise no error and show no diff during terraform plan.

Currently to generate the state, the tool supports full mode (with -full) or partial mode (by default).

  • In full mode, tfadd outputs all non-computed properties in the generated config. The generated config might be invalid for kinds of reasons, where manual modification is needed. But the benefit is that it works for any Terraform provider.

  • In partial mode, tfadd only outputs properties without Optional+Computed properties, with cross property constraints taken into consideration. This mode aims aims to generate a valid Terraform config. Currently, this mode can only works for the following providers:

    Name Version
    hashicorp/aws v5.64.0
    hashicorp/azurerm v4.5.0
    hashicorp/google v6.0.1
    azure/azapi v2.0.1

Usage

The typical usage is to use tfadd together with terraform import:

  1. Prepare an empty workspace (e.g. an empty directory for local backend)
  2. Identify the existing resources to import, write down the empty resource block
  3. (partial mode only) Run tfadd init [providers...] > terraform.tf to populate the Terraform setting to pin the provider version
  4. Run terraform init to initialize the providers
  5. Import the resources via terraform import
  6. Run tfadd state or tfadd state -full to generate the configuration

Limitation

  • Only the managed resources of the root module in the state file will get the config generated, any child module will be skipped.
  • No inter-resource dependency generated.

About

Generate valid Terraform configuration from state

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages