forked from databricks/cli
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add
bundle debug terraform
command (databricks#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: databricks/databricks-vscode#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 <[email protected]>
- Loading branch information
1 parent
56e393c
commit 079c416
Showing
8 changed files
with
317 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,34 @@ | ||
package terraform | ||
|
||
import ( | ||
"github.com/databricks/cli/bundle/internal/tf/schema" | ||
"github.com/hashicorp/go-version" | ||
) | ||
|
||
const TerraformStateFileName = "terraform.tfstate" | ||
const TerraformConfigFileName = "bundle.tf.json" | ||
|
||
// Users can provide their own terraform binary and databricks terraform provider by setting the following environment variables. | ||
// This allows users to use the CLI in an air-gapped environments. See the `debug terraform` command. | ||
const TerraformExecPathEnv = "DATABRICKS_TF_EXEC_PATH" | ||
const TerraformVersionEnv = "DATABRICKS_TF_VERSION" | ||
const TerraformCliConfigPathEnv = "DATABRICKS_TF_CLI_CONFIG_FILE" | ||
const TerraformProviderVersionEnv = "DATABRICKS_TF_PROVIDER_VERSION" | ||
|
||
var TerraformVersion = version.Must(version.NewVersion("1.5.5")) | ||
|
||
type TerraformMetadata struct { | ||
Version string `json:"version"` | ||
ProviderHost string `json:"providerHost"` | ||
ProviderSource string `json:"providerSource"` | ||
ProviderVersion string `json:"providerVersion"` | ||
} | ||
|
||
func NewTerraformMetadata() *TerraformMetadata { | ||
return &TerraformMetadata{ | ||
Version: TerraformVersion.String(), | ||
ProviderHost: schema.ProviderHost, | ||
ProviderSource: schema.ProviderSource, | ||
ProviderVersion: schema.ProviderVersion, | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
package bundle | ||
|
||
import ( | ||
"github.com/databricks/cli/cmd/bundle/debug" | ||
"github.com/spf13/cobra" | ||
) | ||
|
||
func newDebugCommand() *cobra.Command { | ||
cmd := &cobra.Command{ | ||
Use: "debug", | ||
Short: "Debug information about bundles", | ||
Long: "Debug information about bundles", | ||
// This command group is currently intended for the Databricks VSCode extension only | ||
Hidden: true, | ||
} | ||
cmd.AddCommand(debug.NewTerraformCommand()) | ||
return cmd | ||
} |
Oops, something went wrong.