Skip to content

Commit

Permalink
Update README
Browse files Browse the repository at this point in the history
  • Loading branch information
magodo committed Jun 9, 2022
1 parent cd3adc1 commit 7751453
Showing 1 changed file with 18 additions and 11 deletions.
29 changes: 18 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,34 @@ Generate valid Terraform configuration from state.
go install github.com/magodo/tfadd@latest
```

## Usage
## Intro

The goal of this tool is to improve the [import experience](https://learn.hashicorp.com/tutorials/terraform/state-import?in=terraform/state&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) 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|
|-|-|
|registry.terraform.io/hashicorp/aws|v4.17.1|
|registry.terraform.io/hashicorp/azurerm|v3.9.0|
|registry.terraform.io/hashicorp/google|v4.23.0|

## Usage

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

1. Prepare an empty [workspace](https://www.terraform.io/language/state/workspaces) (e.g. an empty directory for *local* backend)
1. (`tfadd` only) Run `tfadd init [providers...] > terraform.tf` to populate the Terraform setting to pin the provider version
1. Identify the existing resources to import, write down the empty resource block
1. (*partial mode* only) Run `tfadd init [providers...] > terraform.tf` to populate the Terraform setting to pin the provider version
1. Run `terraform init` to initialize the providers
1. Identify the existing resources to be managed via `terraform`, write down the empty resource block and import them via `terraform import`
1. (`tfadd` only) Run `tfadd state` to generate the configuration

Currently, the tool supports the following providers:
1. Import the resources via `terraform import`
1. Run `tfadd state` or `tfadd state -full` to generate the configuration

|Name|Version|
|-|-|
|registry.terraform.io/hashicorp/aws|v4.17.1|
|registry.terraform.io/hashicorp/azurerm|v3.9.0|
|registry.terraform.io/hashicorp/google|v4.23.0|

## Limitation

Expand Down

0 comments on commit 7751453

Please sign in to comment.