diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 0c388d41f595..102640757991 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -4,7 +4,7 @@ This repository contains Terraform core, which includes the command line interface and the main graph engine. -Providers are implemented as plugins that each have their own repository linked from the [Terraform Registry index](https://registry.terraform.io/browse/providers). Instructions for developing each provider are usually in the associated README file. For more information, see [the provider development overview](https://www.terraform.io/docs/plugins/provider.html). +Providers are implemented as plugins that each have their own repository linked from the [Terraform Registry index](https://registry.terraform.io/browse/providers). Instructions for developing each provider are usually in the associated README file. For more information, see [the provider development overview](https://developer.hashicorp.com/terraform/plugin). This document provides guidance on Terraform contribution recommended practices. It covers what we're looking for in order to help set expectations and help you get the most out of participation in this project. @@ -100,7 +100,7 @@ Provisioners are an area of concern in Terraform for a number of reasons. Chiefl There are two main types of provisioners in Terraform, the generic provisioners (`file`,`local-exec`, and `remote-exec`) and the tool-specific provisioners (`chef`, `habbitat`, `puppet` & `salt-masterless`). **The tool-specific provisioners [are deprecated](https://discuss.hashicorp.com/t/notice-terraform-to-begin-deprecation-of-vendor-tool-specific-provisioners-starting-in-terraform-0-13-4/13997).** In practice this means we will not be accepting PRs for these areas of the codebase. -From our [documentation](https://www.terraform.io/docs/provisioners/index.html): +From our [documentation](https://developer.hashicorp.com/terraform/language/resources/provisioners/syntax): > ... they [...] add a considerable amount of complexity and uncertainty to Terraform usage.[...] we still recommend attempting to solve it [your problem] using other techniques first, and use provisioners only if there is no other option. diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 3c7f0d74b44a..edd4744609f8 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -30,7 +30,7 @@ body: * Set defaults on (or omit) any variables. The person reproducing it should not need to invent variable settings * If multiple steps are required, such as running terraform twice, consider scripting it in a simple shell script. Providing a script can be easier than explaining what changes to make to the config between runs. * Omit any unneeded complexity: remove variables, conditional statements, functions, modules, providers, and resources that are not needed to trigger the bug - * When possible, use the [null resource](https://www.terraform.io/docs/providers/null/resource.html) provider rather than a real provider in order to minimize external dependencies. We know this isn't always feasible. The Terraform Core team doesn't have deep domain knowledge in every provider, or access to every cloud platform for reproduction cases. + * When possible, use the [terraform_data resource](https://developer.hashicorp.com/terraform/language/resources/terraform-data) provider rather than a real provider in order to minimize external dependencies. We know this isn't always feasible. The Terraform Core team doesn't have deep domain knowledge in every provider, or access to every cloud platform for reproduction cases. - type: textarea id: tf-version diff --git a/.github/ISSUE_TEMPLATE/documentation_issue.yml b/.github/ISSUE_TEMPLATE/documentation_issue.yml index 6c188df1170f..ee3e315073b5 100644 --- a/.github/ISSUE_TEMPLATE/documentation_issue.yml +++ b/.github/ISSUE_TEMPLATE/documentation_issue.yml @@ -10,7 +10,7 @@ body: value: | # Thank you for opening a documentation change request. - Please only use the [hashicorp/terraform](https://github.com/hashicorp/terraform) `Documentation` issue type to report problems with the documentation on [https://www.terraform.io/docs](). Only technical writers (not engineers) monitor this issue type. Report Terraform bugs or feature requests with the `Bug report` or `Feature Request` issue types instead to get engineering attention. + Please only use the [hashicorp/terraform](https://github.com/hashicorp/terraform) `Documentation` issue type to report problems with the documentation on [https://developer.hashicorp.com/terraform/docs](). Only technical writers (not engineers) monitor this issue type. Report Terraform bugs or feature requests with the `Bug report` or `Feature Request` issue types instead to get engineering attention. For general usage questions, please see: https://www.terraform.io/community.html. diff --git a/.terraform.tfstate.lock.info b/.terraform.tfstate.lock.info new file mode 100644 index 000000000000..8d4f44e13587 --- /dev/null +++ b/.terraform.tfstate.lock.info @@ -0,0 +1 @@ +{"ID":"5fe2219c-e21d-e344-6652-f903a6c4de6e","Operation":"OperationTypeInvalid","Info":"","Who":"rita@rita-WX43K9FNL6","Version":"1.11.0","Created":"2025-04-01T15:08:08.587838Z","Path":"terraform.tfstate"} \ No newline at end of file diff --git a/README.md b/README.md index 24d1bf843d2e..da16579fbc15 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ - Website: https://www.terraform.io - Forums: [HashiCorp Discuss](https://discuss.hashicorp.com/c/terraform-core) -- Documentation: [https://www.terraform.io/docs/](https://www.terraform.io/docs/) +- Documentation: [https://developer.hashicorp.com/terraform/docs](https://developer.hashicorp.com/terraform/docs) - Tutorials: [HashiCorp's Learn Platform](https://learn.hashicorp.com/terraform) - Certification Exam: [HashiCorp Certified: Terraform Associate](https://www.hashicorp.com/certification/#hashicorp-certified-terraform-associate) diff --git a/build.Dockerfile b/build.Dockerfile index 2a4db8582883..8caefac34c62 100644 --- a/build.Dockerfile +++ b/build.Dockerfile @@ -37,7 +37,7 @@ LABEL org.opencontainers.image.title=${BIN_NAME} \ org.opencontainers.image.description="Terraform enables you to safely and predictably create, change, and improve infrastructure" \ org.opencontainers.image.authors="HashiCorp Terraform Team " \ org.opencontainers.image.url="https://www.terraform.io/" \ - org.opencontainers.image.documentation="https://www.terraform.io/docs" \ + org.opencontainers.image.documentation="https://developer.hashicorp.com/terraform/docs" \ org.opencontainers.image.source="https://github.com/hashicorp/terraform" \ org.opencontainers.image.version=${PRODUCT_VERSION} \ org.opencontainers.image.revision=${PRODUCT_REVISION} \ diff --git a/docs/README.md b/docs/README.md index d70ae2d0fde9..785afc19f58b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -4,7 +4,7 @@ This directory contains some documentation about the Terraform Core codebase, aimed at readers who are interested in making code contributions. If you're looking for information on _using_ Terraform, please instead refer -to [the main Terraform CLI documentation](https://www.terraform.io/docs/cli/index.html). +to [the main Terraform CLI documentation](https://developer.hashicorp.com/terraform/docs). ## Terraform Core Architecture Documents @@ -25,8 +25,7 @@ to [the main Terraform CLI documentation](https://www.terraform.io/docs/cli/inde changes to those behaviors or if you are implementing a new Terraform plugin SDK and so wish to conform to them. - (If you are planning to write a new provider using the _official_ SDK then - please refer to [the Extend documentation](https://www.terraform.io/docs/extend/index.html) + (If you are planning to write a new provider, please refer to [the documentation](https://developer.hashicorp.com/terraform/plugin) instead; it presents similar information from the perspective of the SDK API, rather than the plugin wire protocol.) diff --git a/docs/architecture.md b/docs/architecture.md index 5db79b48bbba..971d32ca393a 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -43,7 +43,7 @@ object that describes an action to be taken. An _operation_ consists of: * The action to be taken (e.g. "plan", "apply"). -* The name of the [workspace](https://www.terraform.io/docs/state/workspaces.html) +* The name of the [workspace](https://developer.hashicorp.com/terraform/language/state/workspaces) where the action will be taken. * Root module input variables to use for the action. * For the "plan" operation, a path to the directory containing the configuration's root module. diff --git a/docs/planning-behaviors.md b/docs/planning-behaviors.md index ecb6fb301184..a9ce2151c026 100644 --- a/docs/planning-behaviors.md +++ b/docs/planning-behaviors.md @@ -20,7 +20,7 @@ their behaviors in a way comparable to the resource instance behaviors. This is developer-oriented documentation rather than user-oriented documentation. See -[the main Terraform documentation](https://www.terraform.io/docs) for +[the main Terraform documentation](https://developer.hashicorp.com/terraform/docs) for information on existing planning behaviors and other behaviors as viewed from an end-user perspective. diff --git a/docs/plugin-protocol/README.md b/docs/plugin-protocol/README.md index f65873d5c80c..4eed8db68218 100644 --- a/docs/plugin-protocol/README.md +++ b/docs/plugin-protocol/README.md @@ -10,7 +10,7 @@ the SDK's API. ---- **If you want to write a plugin for Terraform, please refer to -[Extending Terraform](https://www.terraform.io/docs/extend/index.html) instead.** +[Extending Terraform](https://developer.hashicorp.com/terraform/plugin) instead.** This documentation is for those who are developing _Terraform SDKs_, rather than those implementing plugins. @@ -244,4 +244,4 @@ Now, you can begin to introduce your changes to the `.proto` files. See the next * This will use the symlinks in the `internal/tfplugin*` directories to access the latest minor versions' `.proto` files. * You should see diffs in `internal/tfplugin5/tfplugin5.pb.go` and `internal/tfplugin6/tfplugin6.pb.go`. 5) Run `make generate`. - * You should see diffs in `internal/plugin/mock_proto/mock.go` and `internal/plugin6/mock_proto/mock.go`. \ No newline at end of file + * You should see diffs in `internal/plugin/mock_proto/mock.go` and `internal/plugin6/mock_proto/mock.go`. diff --git a/docs/plugin-protocol/object-wire-format.md b/docs/plugin-protocol/object-wire-format.md index 9552f35023ff..2b57493e2bf2 100644 --- a/docs/plugin-protocol/object-wire-format.md +++ b/docs/plugin-protocol/object-wire-format.md @@ -63,7 +63,7 @@ The key-value pairs representing nested block types have values based on The MessagePack serialization of an attribute value depends on the value of the `type` field of the corresponding `Schema.Attribute` message. The `type` field is a compact JSON serialization of a -[Terraform type constraint](https://www.terraform.io/docs/configuration/types.html), +[Terraform type constraint](https://developer.hashicorp.com/terraform/language/expressions/type-constraints), which consists either of a single string value (for primitive types) or a two-element array giving a type kind and a type argument. @@ -212,7 +212,7 @@ The properties representing nested block types have property values based on The JSON serialization of an attribute value depends on the value of the `type` field of the corresponding `Schema.Attribute` message. The `type` field is a compact JSON serialization of a -[Terraform type constraint](https://www.terraform.io/docs/configuration/types.html), +[Terraform type constraint](https://developer.hashicorp.com/terraform/language/expressions/type-constraints), which consists either of a single string value (for primitive types) or a two-element array giving a type kind and a type argument. diff --git a/internal/backend/remote-state/s3/backend.go b/internal/backend/remote-state/s3/backend.go index f53c22c3d3fd..be1af3f6fd19 100644 --- a/internal/backend/remote-state/s3/backend.go +++ b/internal/backend/remote-state/s3/backend.go @@ -903,7 +903,7 @@ func (b *Backend) Configure(obj cty.Value) tfdiags.Diagnostics { cfg := &awsbase.Config{ AccessKey: stringAttr(obj, "access_key"), APNInfo: stdUserAgentProducts(), - CallerDocumentationURL: "https://www.terraform.io/docs/language/settings/backends/s3.html", + CallerDocumentationURL: "https://developer.hashicorp.com/terraform/language/backend/s3", CallerName: "S3 Backend", Logger: baselog, MaxRetries: intAttrDefault(obj, "max_retries", 5), diff --git a/internal/cloud/testdata/apply-json-with-outputs/plan-redacted.json b/internal/cloud/testdata/apply-json-with-outputs/plan-redacted.json index c6ee2776a208..12ca62432634 100644 --- a/internal/cloud/testdata/apply-json-with-outputs/plan-redacted.json +++ b/internal/cloud/testdata/apply-json-with-outputs/plan-redacted.json @@ -1 +1 @@ -{"plan_format_version":"1.1","resource_drift":[],"resource_changes":[{"address":"null_resource.foo","mode":"managed","type":"null_resource","name":"foo","provider_name":"registry.terraform.io/hashicorp/null","change":{"actions":["create"],"before":null,"after":{"triggers":null},"after_unknown":{"id":true},"before_sensitive":false,"after_sensitive":{}}}],"relevant_attributes":[],"output_changes":{"complex":{"actions":["create"],"before":null,"after":{"keyA":{"someList":[1,2,3]},"keyB":{"someBool":true,"someStr":"hello"}},"after_unknown":false,"before_sensitive":false,"after_sensitive":false},"secret":{"actions":["create"],"before":null,"after":"8517896e47af3c9ca19a694ea0d6cc30b0dccf08598f33d93e583721fd5f3032","after_unknown":false,"before_sensitive":true,"after_sensitive":true},"simple":{"actions":["create"],"before":null,"after":["some","list"],"after_unknown":false,"before_sensitive":false,"after_sensitive":false}},"provider_schemas":{"registry.terraform.io/hashicorp/null":{"provider":{"version":0,"block":{"description_kind":"plain"}},"resource_schemas":{"null_resource":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"This is set to a random value at create time.","description_kind":"plain","computed":true},"triggers":{"type":["map","string"],"description":"A map of arbitrary strings that, when changed, will force the null resource to be replaced, re-running any associated provisioners.","description_kind":"plain","optional":true}},"description":"The `null_resource` resource implements the standard resource lifecycle but takes no further action.\n\nThe `triggers` argument allows specifying an arbitrary set of values that, when changed, will cause the resource to be replaced.","description_kind":"plain"}}},"data_source_schemas":{"null_data_source":{"version":0,"block":{"attributes":{"has_computed_default":{"type":"string","description":"If set, its literal value will be stored and returned. If not, its value defaults to `\"default\"`. This argument exists primarily for testing and has little practical use.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description":"This attribute is only present for some legacy compatibility issues and should not be used. It will be removed in a future version.","description_kind":"plain","deprecated":true,"computed":true},"inputs":{"type":["map","string"],"description":"A map of arbitrary strings that is copied into the `outputs` attribute, and accessible directly for interpolation.","description_kind":"plain","optional":true},"outputs":{"type":["map","string"],"description":"After the data source is \"read\", a copy of the `inputs` map.","description_kind":"plain","computed":true},"random":{"type":"string","description":"A random value. This is primarily for testing and has little practical use; prefer the [hashicorp/random provider](https://registry.terraform.io/providers/hashicorp/random) for more practical random number use-cases.","description_kind":"plain","computed":true}},"description":"The `null_data_source` data source implements the standard data source lifecycle but does not\ninteract with any external APIs.\n\nHistorically, the `null_data_source` was typically used to construct intermediate values to re-use elsewhere in configuration. The\nsame can now be achieved using [locals](https://www.terraform.io/docs/language/values/locals.html).\n","description_kind":"plain","deprecated":true}}}}},"provider_format_version":"1.0"} \ No newline at end of file +{"plan_format_version":"1.1","resource_drift":[],"resource_changes":[{"address":"null_resource.foo","mode":"managed","type":"null_resource","name":"foo","provider_name":"registry.terraform.io/hashicorp/null","change":{"actions":["create"],"before":null,"after":{"triggers":null},"after_unknown":{"id":true},"before_sensitive":false,"after_sensitive":{}}}],"relevant_attributes":[],"output_changes":{"complex":{"actions":["create"],"before":null,"after":{"keyA":{"someList":[1,2,3]},"keyB":{"someBool":true,"someStr":"hello"}},"after_unknown":false,"before_sensitive":false,"after_sensitive":false},"secret":{"actions":["create"],"before":null,"after":"8517896e47af3c9ca19a694ea0d6cc30b0dccf08598f33d93e583721fd5f3032","after_unknown":false,"before_sensitive":true,"after_sensitive":true},"simple":{"actions":["create"],"before":null,"after":["some","list"],"after_unknown":false,"before_sensitive":false,"after_sensitive":false}},"provider_schemas":{"registry.terraform.io/hashicorp/null":{"provider":{"version":0,"block":{"description_kind":"plain"}},"resource_schemas":{"null_resource":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"This is set to a random value at create time.","description_kind":"plain","computed":true},"triggers":{"type":["map","string"],"description":"A map of arbitrary strings that, when changed, will force the null resource to be replaced, re-running any associated provisioners.","description_kind":"plain","optional":true}},"description":"The `null_resource` resource implements the standard resource lifecycle but takes no further action.\n\nThe `triggers` argument allows specifying an arbitrary set of values that, when changed, will cause the resource to be replaced.","description_kind":"plain"}}},"data_source_schemas":{"null_data_source":{"version":0,"block":{"attributes":{"has_computed_default":{"type":"string","description":"If set, its literal value will be stored and returned. If not, its value defaults to `\"default\"`. This argument exists primarily for testing and has little practical use.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description":"This attribute is only present for some legacy compatibility issues and should not be used. It will be removed in a future version.","description_kind":"plain","deprecated":true,"computed":true},"inputs":{"type":["map","string"],"description":"A map of arbitrary strings that is copied into the `outputs` attribute, and accessible directly for interpolation.","description_kind":"plain","optional":true},"outputs":{"type":["map","string"],"description":"After the data source is \"read\", a copy of the `inputs` map.","description_kind":"plain","computed":true},"random":{"type":"string","description":"A random value. This is primarily for testing and has little practical use; prefer the [hashicorp/random provider](https://registry.terraform.io/providers/hashicorp/random) for more practical random number use-cases.","description_kind":"plain","computed":true}},"description":"The `null_data_source` data source implements the standard data source lifecycle but does not\ninteract with any external APIs.\n\nHistorically, the `null_data_source` was typically used to construct intermediate values to re-use elsewhere in configuration. The\nsame can now be achieved using [locals](https://developer.hashicorp.com/terraform/language/values/locals).\n","description_kind":"plain","deprecated":true}}}}},"provider_format_version":"1.0"} diff --git a/internal/cloud/testdata/apply-json-with-provisioner-error/plan-redacted.json b/internal/cloud/testdata/apply-json-with-provisioner-error/plan-redacted.json index 9becf1bcd0d3..6aa0649dbeb8 100644 --- a/internal/cloud/testdata/apply-json-with-provisioner-error/plan-redacted.json +++ b/internal/cloud/testdata/apply-json-with-provisioner-error/plan-redacted.json @@ -104,7 +104,7 @@ "computed": true } }, - "description": "The `null_data_source` data source implements the standard data source lifecycle but does not\ninteract with any external APIs.\n\nHistorically, the `null_data_source` was typically used to construct intermediate values to re-use elsewhere in configuration. The\nsame can now be achieved using [locals](https://www.terraform.io/docs/language/values/locals.html).\n", + "description": "The `null_data_source` data source implements the standard data source lifecycle but does not\ninteract with any external APIs.\n\nHistorically, the `null_data_source` was typically used to construct intermediate values to re-use elsewhere in configuration. The\nsame can now be achieved using [locals](https://developer.hashicorp.com/terraform/language/values/locals).\n", "description_kind": "plain", "deprecated": true } diff --git a/internal/cloud/testdata/apply-json-with-provisioner/plan-redacted.json b/internal/cloud/testdata/apply-json-with-provisioner/plan-redacted.json index 9becf1bcd0d3..6aa0649dbeb8 100644 --- a/internal/cloud/testdata/apply-json-with-provisioner/plan-redacted.json +++ b/internal/cloud/testdata/apply-json-with-provisioner/plan-redacted.json @@ -104,7 +104,7 @@ "computed": true } }, - "description": "The `null_data_source` data source implements the standard data source lifecycle but does not\ninteract with any external APIs.\n\nHistorically, the `null_data_source` was typically used to construct intermediate values to re-use elsewhere in configuration. The\nsame can now be achieved using [locals](https://www.terraform.io/docs/language/values/locals.html).\n", + "description": "The `null_data_source` data source implements the standard data source lifecycle but does not\ninteract with any external APIs.\n\nHistorically, the `null_data_source` was typically used to construct intermediate values to re-use elsewhere in configuration. The\nsame can now be achieved using [locals](https://developer.hashicorp.com/terraform/language/values/locals).\n", "description_kind": "plain", "deprecated": true } diff --git a/internal/cloud/testdata/apply-json/plan-redacted.json b/internal/cloud/testdata/apply-json/plan-redacted.json index 9becf1bcd0d3..6aa0649dbeb8 100644 --- a/internal/cloud/testdata/apply-json/plan-redacted.json +++ b/internal/cloud/testdata/apply-json/plan-redacted.json @@ -104,7 +104,7 @@ "computed": true } }, - "description": "The `null_data_source` data source implements the standard data source lifecycle but does not\ninteract with any external APIs.\n\nHistorically, the `null_data_source` was typically used to construct intermediate values to re-use elsewhere in configuration. The\nsame can now be achieved using [locals](https://www.terraform.io/docs/language/values/locals.html).\n", + "description": "The `null_data_source` data source implements the standard data source lifecycle but does not\ninteract with any external APIs.\n\nHistorically, the `null_data_source` was typically used to construct intermediate values to re-use elsewhere in configuration. The\nsame can now be achieved using [locals](https://developer.hashicorp.com/terraform/language/values/locals).\n", "description_kind": "plain", "deprecated": true } diff --git a/internal/cloud/testdata/plan-json-basic-no-unredacted/plan-redacted.json b/internal/cloud/testdata/plan-json-basic-no-unredacted/plan-redacted.json index 9becf1bcd0d3..6aa0649dbeb8 100644 --- a/internal/cloud/testdata/plan-json-basic-no-unredacted/plan-redacted.json +++ b/internal/cloud/testdata/plan-json-basic-no-unredacted/plan-redacted.json @@ -104,7 +104,7 @@ "computed": true } }, - "description": "The `null_data_source` data source implements the standard data source lifecycle but does not\ninteract with any external APIs.\n\nHistorically, the `null_data_source` was typically used to construct intermediate values to re-use elsewhere in configuration. The\nsame can now be achieved using [locals](https://www.terraform.io/docs/language/values/locals.html).\n", + "description": "The `null_data_source` data source implements the standard data source lifecycle but does not\ninteract with any external APIs.\n\nHistorically, the `null_data_source` was typically used to construct intermediate values to re-use elsewhere in configuration. The\nsame can now be achieved using [locals](https://developer.hashicorp.com/terraform/language/values/locals).\n", "description_kind": "plain", "deprecated": true } diff --git a/internal/cloud/testdata/plan-json-basic/plan-redacted.json b/internal/cloud/testdata/plan-json-basic/plan-redacted.json index 9becf1bcd0d3..6aa0649dbeb8 100644 --- a/internal/cloud/testdata/plan-json-basic/plan-redacted.json +++ b/internal/cloud/testdata/plan-json-basic/plan-redacted.json @@ -104,7 +104,7 @@ "computed": true } }, - "description": "The `null_data_source` data source implements the standard data source lifecycle but does not\ninteract with any external APIs.\n\nHistorically, the `null_data_source` was typically used to construct intermediate values to re-use elsewhere in configuration. The\nsame can now be achieved using [locals](https://www.terraform.io/docs/language/values/locals.html).\n", + "description": "The `null_data_source` data source implements the standard data source lifecycle but does not\ninteract with any external APIs.\n\nHistorically, the `null_data_source` was typically used to construct intermediate values to re-use elsewhere in configuration. The\nsame can now be achieved using [locals](https://developer.hashicorp.com/terraform/language/values/locals).\n", "description_kind": "plain", "deprecated": true } diff --git a/internal/cloud/testdata/plan-json-no-changes/plan-redacted.json b/internal/cloud/testdata/plan-json-no-changes/plan-redacted.json index b945f225349c..74d9c1c92c6a 100644 --- a/internal/cloud/testdata/plan-json-no-changes/plan-redacted.json +++ b/internal/cloud/testdata/plan-json-no-changes/plan-redacted.json @@ -106,7 +106,7 @@ "computed": true } }, - "description": "The `null_data_source` data source implements the standard data source lifecycle but does not\ninteract with any external APIs.\n\nHistorically, the `null_data_source` was typically used to construct intermediate values to re-use elsewhere in configuration. The\nsame can now be achieved using [locals](https://www.terraform.io/docs/language/values/locals.html).\n", + "description": "The `null_data_source` data source implements the standard data source lifecycle but does not\ninteract with any external APIs.\n\nHistorically, the `null_data_source` was typically used to construct intermediate values to re-use elsewhere in configuration. The\nsame can now be achieved using [locals](https://developer.hashicorp.com/terraform/language/values/locals).\n", "description_kind": "plain", "deprecated": true } diff --git a/internal/cloud/testdata/test-verbose/test.log b/internal/cloud/testdata/test-verbose/test.log index 4763511200b5..7d355a40c8c0 100644 --- a/internal/cloud/testdata/test-verbose/test.log +++ b/internal/cloud/testdata/test-verbose/test.log @@ -2,11 +2,11 @@ {"@level":"info","@message":"Found 1 file and 2 run blocks","@module":"terraform.ui","@timestamp":"2023-09-12T08:30:36.453493+02:00","test_abstract":{"main.tftest.hcl":["defaults","overrides"]},"type":"test_abstract"} {"@level":"info","@message":"main.tftest.hcl... in progress","@module":"terraform.ui","@testfile":"main.tftest.hcl","@timestamp":"2023-09-12T08:30:36.453557+02:00","test_file":{"path":"main.tftest.hcl","progress":"starting"},"type":"test_file"} {"@level":"info","@message":" \"defaults\"... pass","@module":"terraform.ui","@testfile":"main.tftest.hcl","@testrun":"defaults","@timestamp":"2023-09-12T08:30:37.184747+02:00","test_run":{"path":"main.tftest.hcl","run":"defaults","progress":"complete","status":"pass"},"type":"test_run"} -{"@level":"info","@message":"-verbose flag enabled, printing plan","@module":"terraform.ui","@testfile":"main.tftest.hcl","@testrun":"defaults","@timestamp":"2023-09-12T08:30:37.184891+02:00","test_plan":{"plan_format_version":"1.2","output_changes":{"input":{"actions":["create"],"before":null,"after":"Hello, world!","after_unknown":false,"before_sensitive":false,"after_sensitive":false}},"relevant_attributes":[{"resource":"data.null_data_source.values","attribute":["outputs","data"]}],"provider_format_version":"1.0","provider_schemas":{"registry.terraform.io/hashicorp/null":{"provider":{"version":0,"block":{"description_kind":"plain"}},"resource_schemas":{"null_resource":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"This is set to a random value at create time.","description_kind":"plain","computed":true},"triggers":{"type":["map","string"],"description":"A map of arbitrary strings that, when changed, will force the null resource to be replaced, re-running any associated provisioners.","description_kind":"plain","optional":true}},"description":"The `null_resource` resource implements the standard resource lifecycle but takes no further action.\n\nThe `triggers` argument allows specifying an arbitrary set of values that, when changed, will cause the resource to be replaced.","description_kind":"plain"}}},"data_source_schemas":{"null_data_source":{"version":0,"block":{"attributes":{"has_computed_default":{"type":"string","description":"If set, its literal value will be stored and returned. If not, its value defaults to `\"default\"`. This argument exists primarily for testing and has little practical use.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description":"This attribute is only present for some legacy compatibility issues and should not be used. It will be removed in a future version.","description_kind":"plain","deprecated":true,"computed":true},"inputs":{"type":["map","string"],"description":"A map of arbitrary strings that is copied into the `outputs` attribute, and accessible directly for interpolation.","description_kind":"plain","optional":true},"outputs":{"type":["map","string"],"description":"After the data source is \"read\", a copy of the `inputs` map.","description_kind":"plain","computed":true},"random":{"type":"string","description":"A random value. This is primarily for testing and has little practical use; prefer the [hashicorp/random provider](https://registry.terraform.io/providers/hashicorp/random) for more practical random number use-cases.","description_kind":"plain","computed":true}},"description":"The `null_data_source` data source implements the standard data source lifecycle but does not\ninteract with any external APIs.\n\nHistorically, the `null_data_source` was typically used to construct intermediate values to re-use elsewhere in configuration. The\nsame can now be achieved using [locals](https://www.terraform.io/docs/language/values/locals.html).\n","description_kind":"plain","deprecated":true}}}}}},"type":"test_plan"} +{"@level":"info","@message":"-verbose flag enabled, printing plan","@module":"terraform.ui","@testfile":"main.tftest.hcl","@testrun":"defaults","@timestamp":"2023-09-12T08:30:37.184891+02:00","test_plan":{"plan_format_version":"1.2","output_changes":{"input":{"actions":["create"],"before":null,"after":"Hello, world!","after_unknown":false,"before_sensitive":false,"after_sensitive":false}},"relevant_attributes":[{"resource":"data.null_data_source.values","attribute":["outputs","data"]}],"provider_format_version":"1.0","provider_schemas":{"registry.terraform.io/hashicorp/null":{"provider":{"version":0,"block":{"description_kind":"plain"}},"resource_schemas":{"null_resource":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"This is set to a random value at create time.","description_kind":"plain","computed":true},"triggers":{"type":["map","string"],"description":"A map of arbitrary strings that, when changed, will force the null resource to be replaced, re-running any associated provisioners.","description_kind":"plain","optional":true}},"description":"The `null_resource` resource implements the standard resource lifecycle but takes no further action.\n\nThe `triggers` argument allows specifying an arbitrary set of values that, when changed, will cause the resource to be replaced.","description_kind":"plain"}}},"data_source_schemas":{"null_data_source":{"version":0,"block":{"attributes":{"has_computed_default":{"type":"string","description":"If set, its literal value will be stored and returned. If not, its value defaults to `\"default\"`. This argument exists primarily for testing and has little practical use.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description":"This attribute is only present for some legacy compatibility issues and should not be used. It will be removed in a future version.","description_kind":"plain","deprecated":true,"computed":true},"inputs":{"type":["map","string"],"description":"A map of arbitrary strings that is copied into the `outputs` attribute, and accessible directly for interpolation.","description_kind":"plain","optional":true},"outputs":{"type":["map","string"],"description":"After the data source is \"read\", a copy of the `inputs` map.","description_kind":"plain","computed":true},"random":{"type":"string","description":"A random value. This is primarily for testing and has little practical use; prefer the [hashicorp/random provider](https://registry.terraform.io/providers/hashicorp/random) for more practical random number use-cases.","description_kind":"plain","computed":true}},"description":"The `null_data_source` data source implements the standard data source lifecycle but does not\ninteract with any external APIs.\n\nHistorically, the `null_data_source` was typically used to construct intermediate values to re-use elsewhere in configuration. The\nsame can now be achieved using [locals](https://developer.hashicorp.com/terraform/language/values/locals).\n","description_kind":"plain","deprecated":true}}}}}},"type":"test_plan"} {"@level":"warn","@message":"Warning: Deprecated","@module":"terraform.ui","@testfile":"main.tftest.hcl","@testrun":"defaults","@timestamp":"2023-09-12T08:30:37.185952+02:00","diagnostic":{"severity":"warning","summary":"Deprecated","detail":"The null_data_source was historically used to construct intermediate values to re-use elsewhere in configuration, the same can now be achieved using locals","address":"data.null_data_source.values","range":{"filename":"main.tf","start":{"line":7,"column":34,"byte":104},"end":{"line":7,"column":35,"byte":105}},"snippet":{"context":"data \"null_data_source\" \"values\"","code":"data \"null_data_source\" \"values\" {","start_line":7,"highlight_start_offset":33,"highlight_end_offset":34,"values":[]}},"type":"diagnostic"} {"@level":"warn","@message":"Warning: Deprecated","@module":"terraform.ui","@testfile":"main.tftest.hcl","@testrun":"defaults","@timestamp":"2023-09-12T08:30:37.186067+02:00","diagnostic":{"severity":"warning","summary":"Deprecated","detail":"The null_data_source was historically used to construct intermediate values to re-use elsewhere in configuration, the same can now be achieved using locals","address":"data.null_data_source.values","range":{"filename":"main.tf","start":{"line":7,"column":34,"byte":104},"end":{"line":7,"column":35,"byte":105}},"snippet":{"context":"data \"null_data_source\" \"values\"","code":"data \"null_data_source\" \"values\" {","start_line":7,"highlight_start_offset":33,"highlight_end_offset":34,"values":[]}},"type":"diagnostic"} {"@level":"info","@message":" \"overrides\"... pass","@module":"terraform.ui","@testfile":"main.tftest.hcl","@testrun":"overrides","@timestamp":"2023-09-12T08:30:37.246268+02:00","test_run":{"path":"main.tftest.hcl","run":"overrides","progress":"complete","status":"pass"},"type":"test_run"} -{"@level":"info","@message":"-verbose flag enabled, printing state","@module":"terraform.ui","@testfile":"main.tftest.hcl","@testrun":"overrides","@timestamp":"2023-09-12T08:30:37.246362+02:00","test_state":{"state_format_version":"1.0","root_module":{"resources":[{"address":"data.null_data_source.values","mode":"data","type":"null_data_source","name":"values","provider_name":"registry.terraform.io/hashicorp/null","schema_version":0,"values":{"has_computed_default":"default","id":"static","inputs":{"data":"Hello, universe!"},"outputs":{"data":"Hello, universe!"},"random":"8484833523059069761"},"sensitive_values":{"inputs":{},"outputs":{}}}]},"outputs":{"input":{"sensitive":false,"value":"Hello, universe!","type":"string"}},"provider_format_version":"1.0","provider_schemas":{"registry.terraform.io/hashicorp/null":{"provider":{"version":0,"block":{"description_kind":"plain"}},"resource_schemas":{"null_resource":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"This is set to a random value at create time.","description_kind":"plain","computed":true},"triggers":{"type":["map","string"],"description":"A map of arbitrary strings that, when changed, will force the null resource to be replaced, re-running any associated provisioners.","description_kind":"plain","optional":true}},"description":"The `null_resource` resource implements the standard resource lifecycle but takes no further action.\n\nThe `triggers` argument allows specifying an arbitrary set of values that, when changed, will cause the resource to be replaced.","description_kind":"plain"}}},"data_source_schemas":{"null_data_source":{"version":0,"block":{"attributes":{"has_computed_default":{"type":"string","description":"If set, its literal value will be stored and returned. If not, its value defaults to `\"default\"`. This argument exists primarily for testing and has little practical use.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description":"This attribute is only present for some legacy compatibility issues and should not be used. It will be removed in a future version.","description_kind":"plain","deprecated":true,"computed":true},"inputs":{"type":["map","string"],"description":"A map of arbitrary strings that is copied into the `outputs` attribute, and accessible directly for interpolation.","description_kind":"plain","optional":true},"outputs":{"type":["map","string"],"description":"After the data source is \"read\", a copy of the `inputs` map.","description_kind":"plain","computed":true},"random":{"type":"string","description":"A random value. This is primarily for testing and has little practical use; prefer the [hashicorp/random provider](https://registry.terraform.io/providers/hashicorp/random) for more practical random number use-cases.","description_kind":"plain","computed":true}},"description":"The `null_data_source` data source implements the standard data source lifecycle but does not\ninteract with any external APIs.\n\nHistorically, the `null_data_source` was typically used to construct intermediate values to re-use elsewhere in configuration. The\nsame can now be achieved using [locals](https://www.terraform.io/docs/language/values/locals.html).\n","description_kind":"plain","deprecated":true}}}}}},"type":"test_state"} +{"@level":"info","@message":"-verbose flag enabled, printing state","@module":"terraform.ui","@testfile":"main.tftest.hcl","@testrun":"overrides","@timestamp":"2023-09-12T08:30:37.246362+02:00","test_state":{"state_format_version":"1.0","root_module":{"resources":[{"address":"data.null_data_source.values","mode":"data","type":"null_data_source","name":"values","provider_name":"registry.terraform.io/hashicorp/null","schema_version":0,"values":{"has_computed_default":"default","id":"static","inputs":{"data":"Hello, universe!"},"outputs":{"data":"Hello, universe!"},"random":"8484833523059069761"},"sensitive_values":{"inputs":{},"outputs":{}}}]},"outputs":{"input":{"sensitive":false,"value":"Hello, universe!","type":"string"}},"provider_format_version":"1.0","provider_schemas":{"registry.terraform.io/hashicorp/null":{"provider":{"version":0,"block":{"description_kind":"plain"}},"resource_schemas":{"null_resource":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"This is set to a random value at create time.","description_kind":"plain","computed":true},"triggers":{"type":["map","string"],"description":"A map of arbitrary strings that, when changed, will force the null resource to be replaced, re-running any associated provisioners.","description_kind":"plain","optional":true}},"description":"The `null_resource` resource implements the standard resource lifecycle but takes no further action.\n\nThe `triggers` argument allows specifying an arbitrary set of values that, when changed, will cause the resource to be replaced.","description_kind":"plain"}}},"data_source_schemas":{"null_data_source":{"version":0,"block":{"attributes":{"has_computed_default":{"type":"string","description":"If set, its literal value will be stored and returned. If not, its value defaults to `\"default\"`. This argument exists primarily for testing and has little practical use.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description":"This attribute is only present for some legacy compatibility issues and should not be used. It will be removed in a future version.","description_kind":"plain","deprecated":true,"computed":true},"inputs":{"type":["map","string"],"description":"A map of arbitrary strings that is copied into the `outputs` attribute, and accessible directly for interpolation.","description_kind":"plain","optional":true},"outputs":{"type":["map","string"],"description":"After the data source is \"read\", a copy of the `inputs` map.","description_kind":"plain","computed":true},"random":{"type":"string","description":"A random value. This is primarily for testing and has little practical use; prefer the [hashicorp/random provider](https://registry.terraform.io/providers/hashicorp/random) for more practical random number use-cases.","description_kind":"plain","computed":true}},"description":"The `null_data_source` data source implements the standard data source lifecycle but does not\ninteract with any external APIs.\n\nHistorically, the `null_data_source` was typically used to construct intermediate values to re-use elsewhere in configuration. The\nsame can now be achieved using [locals](https://developer.hashicorp.com/terraform/language/values/locals).\n","description_kind":"plain","deprecated":true}}}}}},"type":"test_state"} {"@level":"warn","@message":"Warning: Deprecated","@module":"terraform.ui","@testfile":"main.tftest.hcl","@testrun":"overrides","@timestamp":"2023-09-12T08:30:37.247116+02:00","diagnostic":{"severity":"warning","summary":"Deprecated","detail":"The null_data_source was historically used to construct intermediate values to re-use elsewhere in configuration, the same can now be achieved using locals","address":"data.null_data_source.values","range":{"filename":"main.tf","start":{"line":7,"column":34,"byte":104},"end":{"line":7,"column":35,"byte":105}},"snippet":{"context":"data \"null_data_source\" \"values\"","code":"data \"null_data_source\" \"values\" {","start_line":7,"highlight_start_offset":33,"highlight_end_offset":34,"values":[]}},"type":"diagnostic"} {"@level":"warn","@message":"Warning: Deprecated","@module":"terraform.ui","@testfile":"main.tftest.hcl","@testrun":"overrides","@timestamp":"2023-09-12T08:30:37.247182+02:00","diagnostic":{"severity":"warning","summary":"Deprecated","detail":"The null_data_source was historically used to construct intermediate values to re-use elsewhere in configuration, the same can now be achieved using locals","address":"data.null_data_source.values","range":{"filename":"main.tf","start":{"line":7,"column":34,"byte":104},"end":{"line":7,"column":35,"byte":105}},"snippet":{"context":"data \"null_data_source\" \"values\"","code":"data \"null_data_source\" \"values\" {","start_line":7,"highlight_start_offset":33,"highlight_end_offset":34,"values":[]}},"type":"diagnostic"} {"@level":"info","@message":"main.tftest.hcl... tearing down","@module":"terraform.ui","@testfile":"main.tftest.hcl","@timestamp":"2023-09-12T08:30:37.247905+02:00","test_file":{"path":"main.tftest.hcl","progress":"teardown"},"type":"test_file"} diff --git a/internal/command/import.go b/internal/command/import.go index beccfa51f053..a78bc4a2cf76 100644 --- a/internal/command/import.go +++ b/internal/command/import.go @@ -1,6 +1,6 @@ -// Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: BUSL-1.1 +// Copyright (c) HashiCorp, Inc. package command import ( @@ -341,7 +341,7 @@ func (c *ImportCommand) Synopsis() string { } const importCommandInvalidAddressReference = `For information on valid syntax, see: -https://www.terraform.io/docs/cli/state/resource-addressing.html` +https://developer.hashicorp.com/terraform/cli/state/resource-addressing` const importCommandMissingResourceFmt = `[reset][bold][red]Error:[reset][bold] resource address %q does not exist in the configuration.[reset] diff --git a/internal/command/meta_backend_migrate.go b/internal/command/meta_backend_migrate.go index f01b4a82c7c3..bfb0605285b5 100644 --- a/internal/command/meta_backend_migrate.go +++ b/internal/command/meta_backend_migrate.go @@ -1011,7 +1011,7 @@ const errTFCMigrateNotYetImplemented = ` Migrating state from HCP Terraform or Terraform Enterprise to another backend is not yet implemented. -Please use the API to do this: https://www.terraform.io/docs/cloud/api/state-versions.html +Please use the API to do this: https://developer.hashicorp.com/terraform/cloud-docs/api-docs/state-versions ` const errInteractiveInputDisabled = ` @@ -1036,7 +1036,7 @@ workspaces are named uniquely across all configurations used within an organizat strategy to start with is -- (e.g. networking-prod-us-east, networking-staging-us-east). -For more information on workspace naming, see https://www.terraform.io/docs/cloud/workspaces/naming.html +For more information on workspace naming, see https://developer.hashicorp.com/terraform/cloud-docs/workspaces/create#workspace-naming When migrating existing workspaces from the backend %[1]q to %[2]s, would you like to rename your workspaces? Enter 1 or 2. diff --git a/internal/command/views/init.go b/internal/command/views/init.go index 92868d11615f..cd91daa4282f 100644 --- a/internal/command/views/init.go +++ b/internal/command/views/init.go @@ -359,7 +359,7 @@ version control system if they represent changes you intended to make.` const partnerAndCommunityProvidersInfo = "\nPartner and community providers are signed by their developers.\n" + "If you'd like to know more about provider signing, you can read about it here:\n" + - "https://www.terraform.io/docs/cli/plugins/signing.html" + "https://developer.hashicorp.com/terraform/cli/plugins/signing" const errInitConfigError = ` [reset]Terraform encountered problems during initialisation, including problems diff --git a/internal/command/views/testdata/plans/redacted-plan.json b/internal/command/views/testdata/plans/redacted-plan.json index 9becf1bcd0d3..6aa0649dbeb8 100644 --- a/internal/command/views/testdata/plans/redacted-plan.json +++ b/internal/command/views/testdata/plans/redacted-plan.json @@ -104,7 +104,7 @@ "computed": true } }, - "description": "The `null_data_source` data source implements the standard data source lifecycle but does not\ninteract with any external APIs.\n\nHistorically, the `null_data_source` was typically used to construct intermediate values to re-use elsewhere in configuration. The\nsame can now be achieved using [locals](https://www.terraform.io/docs/language/values/locals.html).\n", + "description": "The `null_data_source` data source implements the standard data source lifecycle but does not\ninteract with any external APIs.\n\nHistorically, the `null_data_source` was typically used to construct intermediate values to re-use elsewhere in configuration. The\nsame can now be achieved using [locals](https://developer.hashicorp.com/terraform/language/values/locals).\n", "description_kind": "plain", "deprecated": true } diff --git a/terraform.tfstate b/terraform.tfstate new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/tools/terraform-bundle/README.md b/tools/terraform-bundle/README.md index 26df43a3973a..87ff8d672d19 100644 --- a/tools/terraform-bundle/README.md +++ b/tools/terraform-bundle/README.md @@ -8,11 +8,11 @@ change to distribute providers separately from Terraform CLI. The Terraform v0.13 series introduced our intended longer-term solutions to this need: -* [Alternative provider installation methods](https://www.terraform.io/docs/cli/config/config-file.html#provider-installation), +* [Alternative provider installation methods](https://developer.hashicorp.com/terraform/cli/config/config-file#provider-installation), including the possibility of running server containing a local mirror of providers you intend to use which Terraform can then use instead of the origin registry. -* [The `terraform providers mirror` command](https://www.terraform.io/docs/cli/commands/providers/mirror.html), +* [The `terraform providers mirror` command](https://developer.hashicorp.com/terraform/cli/commands/providers/mirror), built in to Terraform v0.13.0 and later, can automatically construct a suitable directory structure to serve from a local mirror based on your current Terraform configuration, serving a similar (though not identical) diff --git a/website/docs/language/functions/regex.mdx b/website/docs/language/functions/regex.mdx index 9e18197f98f3..4cc726d9b1bc 100644 --- a/website/docs/language/functions/regex.mdx +++ b/website/docs/language/functions/regex.mdx @@ -136,9 +136,9 @@ aaabbbccc "01", ] -> regex("^(?:(?P[^:/?#]+):)?(?://(?P[^/?#]*))?", "https://terraform.io/docs/") +> regex("^(?:(?P[^:/?#]+):)?(?://(?P[^/?#]*))?", "https://developer.hashicorp.com/terraform/docs") { - "authority" = "terraform.io" + "authority" = "developer.hashicorp.com" "scheme" = "https" }