databricks-cli/bundle/internal/tf/codegen
Ilia Babanov 079c416f8d
Add `bundle debug terraform` command (#1294)
- Add `bundle debug terraform` command. It prints versions of the
Terraform and the Databricks Terraform provider. In the text mode it
also explains how to setup the CLI in environments with restricted
internet access.
- Use `DATABRICKS_TF_EXEC_PATH` env var to point Databricks CLI to the
Terraform binary. The CLI only uses it if `DATABRICKS_TF_VERSION`
matches the currently used terraform version.
- Use `DATABRICKS_TF_CLI_CONFIG_FILE` env var to point Terraform CLI
config that points to the filesystem mirror for the Databricks provider.
The CLI only uses it if `DATABRICKS_TF_PROVIDER_VERSION` matches the
currently used provider version.


Relevant PR on the VSCode extension side:
https://github.com/databricks/databricks-vscode/pull/1147

Example output of the `databricks bundle debug terraform`:
```
Terraform version: 1.5.5
Terraform URL: https://releases.hashicorp.com/terraform/1.5.5

Databricks Terraform Provider version: 1.38.0
Databricks Terraform Provider URL: https://github.com/databricks/terraform-provider-databricks/releases/tag/v1.38.0

Databricks CLI downloads its Terraform dependencies automatically.

If you run the CLI in an air-gapped environment, you can download the dependencies manually and set these environment variables:

  DATABRICKS_TF_VERSION=1.5.5
  DATABRICKS_TF_EXEC_PATH=/path/to/terraform/binary
  DATABRICKS_TF_PROVIDER_VERSION=1.38.0
  DATABRICKS_TF_CLI_CONFIG_FILE=/path/to/terraform/cli/config.tfrc

Here is an example *.tfrc configuration file:

  disable_checkpoint = true
  provider_installation {
    filesystem_mirror {
      path = "/path/to/a/folder/with/databricks/terraform/provider"
    }
  }

The filesystem mirror path should point to the folder with the Databricks Terraform Provider. The folder should have this structure: /registry.terraform.io/databricks/databricks/terraform-provider-databricks_1.38.0_ARCH.zip

For more information about filesystem mirrors, see the Terraform documentation: https://developer.hashicorp.com/terraform/cli/config/config-file#filesystem_mirror
```

---------

Co-authored-by: shreyas-goenka <88374338+shreyas-goenka@users.noreply.github.com>
2024-04-02 12:56:27 +00:00
..
generator Update Terraform provider schema structs from 1.23.0 (#713) 2023-08-30 13:58:28 +00:00
schema Upgrade Terraform provider to 1.38.0 (#1308) 2024-03-25 09:17:52 +00:00
templates Add `bundle debug terraform` command (#1294) 2024-04-02 12:56:27 +00:00
.gitignore Regenerate bundle resource structs from latest terraform provider (#633) 2023-08-03 11:20:30 +00:00
README.md Bump Terraform provider to v1.29.0 (#926) 2023-10-27 09:16:41 +00:00
go.mod Bump Terraform provider to v1.36.2 (#1215) 2024-02-16 07:05:45 +00:00
go.sum Bump Terraform provider to v1.36.2 (#1215) 2024-02-16 07:05:45 +00:00
main.go Rename bricks -> databricks (#389) 2023-05-16 18:35:39 +02:00

README.md

Use this tool to generate equivalent Go types from Terraform provider schema.

Usage

The entry point for this tool is ..

It uses ./tmp a temporary data directory and ../schema as output directory.

It automatically installs the Terraform binary as well as the Databricks Terraform provider.

Run with:

go run .

How to regenerate Go structs from an updated terraform provider?

  1. Bump version in ./schema/version.go
  2. Delete ./tmp if it exists
  3. Run go run .
  4. Run gofmt -s -w ../schema