Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package terraform for openSUSE:Factory checked in at 2022-06-23 10:25:14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/terraform (Old) and /work/SRC/openSUSE:Factory/.terraform.new.1548 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "terraform" Thu Jun 23 10:25:14 2022 rev:35 rq:984655 version:1.2.3 Changes: -------- --- /work/SRC/openSUSE:Factory/terraform/terraform.changes 2022-06-07 11:45:38.655272452 +0200 +++ /work/SRC/openSUSE:Factory/.terraform.new.1548/terraform.changes 2022-06-23 10:25:50.783842739 +0200 @@ -1,0 +2,20 @@ +Wed Jun 22 07:58:20 UTC 2022 - Johannes Kastl <ka...@b1-systems.de> + +- Update to 1.2.3: + * UPGRADE NOTES: + The following remote state backends are now marked as deprecated, and are + planned to be removed in a future Terraform release. These backends have + been unmaintained since before Terraform v1.0, and may contain known bugs, + outdated packages, or security vulnerabilities. + - artifactory + - etcd + - etcdv3 + - manta + - swift + * BUG FIXES: + - Missing check for error diagnostics in GetProviderSchema could result in panic (#31184) + - Module registries returning X-Terraform-Get locations with no URL would error with "no getter available for X-Terraform-Get source protocol" (#31237) + - Fix crash from concurrent operation on shared set of resource instance dependencies (#31246) + - backend/cos: tencentcloud-terraform-lock tag was not removed in all cases (#31223) + +------------------------------------------------------------------- Old: ---- terraform-1.2.2.obscpio terraform-1.2.2.tar.gz New: ---- terraform-1.2.3.obscpio terraform-1.2.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ terraform.spec ++++++ --- /var/tmp/diff_new_pack.ZsW0cG/_old 2022-06-23 10:25:51.623843652 +0200 +++ /var/tmp/diff_new_pack.ZsW0cG/_new 2022-06-23 10:25:51.623843652 +0200 @@ -17,7 +17,7 @@ Name: terraform -Version: 1.2.2 +Version: 1.2.3 Release: 0 Summary: Tool for building infrastructure safely and efficiently License: MPL-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.ZsW0cG/_old 2022-06-23 10:25:51.667843700 +0200 +++ /var/tmp/diff_new_pack.ZsW0cG/_new 2022-06-23 10:25:51.671843704 +0200 @@ -3,8 +3,8 @@ <param name="url">https://github.com/hashicorp/terraform</param> <param name="scm">git</param> <param name="filename">terraform</param> - <param name="versionformat">1.2.2</param> - <param name="revision">v1.2.2</param> + <param name="versionformat">1.2.3</param> + <param name="revision">v1.2.3</param> <param name="exclude">.git</param> </service> <service name="tar" mode="disabled"/> @@ -16,7 +16,7 @@ <param name="basename">terraform</param> </service> <service name="go_modules" mode="disabled"> - <param name="archive">terraform-1.2.2.tar.gz</param> + <param name="archive">terraform-1.2.3.tar.gz</param> </service> </services> ++++++ terraform-1.2.2.obscpio -> terraform-1.2.3.obscpio ++++++ /work/SRC/openSUSE:Factory/terraform/terraform-1.2.2.obscpio /work/SRC/openSUSE:Factory/.terraform.new.1548/terraform-1.2.3.obscpio differ: char 49, line 1 ++++++ terraform-1.2.2.tar.gz -> terraform-1.2.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/CHANGELOG.md new/terraform-1.2.3/CHANGELOG.md --- old/terraform-1.2.2/CHANGELOG.md 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/CHANGELOG.md 2022-06-15 19:34:28.000000000 +0200 @@ -1,3 +1,24 @@ +## 1.2.3 (June 15, 2022) + +UPGRADE NOTES: + +* The following remote state backends are now marked as deprecated, and are + planned to be removed in a future Terraform release. These backends have + been unmaintained since before Terraform v1.0, and may contain known bugs, + outdated packages, or security vulnerabilities. + - artifactory + - etcd + - etcdv3 + - manta + - swift + +BUG FIXES: + +* Missing check for error diagnostics in GetProviderSchema could result in panic ([#31184](https://github.com/hashicorp/terraform/issues/31184)) +* Module registries returning X-Terraform-Get locations with no URL would error with "no getter available for X-Terraform-Get source protocol" ([#31237](https://github.com/hashicorp/terraform/issues/31237)) +* Fix crash from concurrent operation on shared set of resource instance dependencies ([#31246](https://github.com/hashicorp/terraform/issues/31246)) +* backend/cos: `tencentcloud-terraform-lock` tag was not removed in all cases ([#31223](https://github.com/hashicorp/terraform/issues/31223)) + ## 1.2.2 (June 01, 2022) ENHANCEMENTS: @@ -8,7 +29,7 @@ * Terraform now hides invalid input values for sensitive root module variables when generating error diagnostics ([#30552](https://github.com/hashicorp/terraform/issues/30552)) * Fixed crash on CLI autocomplete ([#31160](https://github.com/hashicorp/terraform/issues/31160)) -* The "Configuration contains unknown values" error message now includes attribute paths ([#3111](https://github.com/hashicorp/terraform/issues/3111)) +* The "Configuration contains unknown values" error message now includes attribute paths ([#31111](https://github.com/hashicorp/terraform/issues/31111)) ## 1.2.1 (May 23, 2022) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/go.mod new/terraform-1.2.3/go.mod --- old/terraform-1.2.2/go.mod 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/go.mod 2022-06-15 19:34:28.000000000 +0200 @@ -36,7 +36,7 @@ github.com/hashicorp/go-azure-helpers v0.31.1 github.com/hashicorp/go-checkpoint v0.5.0 github.com/hashicorp/go-cleanhttp v0.5.2 - github.com/hashicorp/go-getter v1.6.1 + github.com/hashicorp/go-getter v1.6.2 github.com/hashicorp/go-hclog v0.15.0 github.com/hashicorp/go-multierror v1.1.1 github.com/hashicorp/go-plugin v1.4.3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/go.sum new/terraform-1.2.3/go.sum --- old/terraform-1.2.2/go.sum 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/go.sum 2022-06-15 19:34:28.000000000 +0200 @@ -387,8 +387,8 @@ github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320/go.mod h1:EiZBMaudVLy8fmjf9Npq1dq9RalhveqZG5w/yz3mHWs= github.com/hashicorp/go-getter v1.5.3/go.mod h1:BrrV/1clo8cCYu6mxvboYg+KutTiFnXjMEgDD8+i7ZI= -github.com/hashicorp/go-getter v1.6.1 h1:NASsgP4q6tL94WH6nJxKWj8As2H/2kop/bB1d8JMyRY= -github.com/hashicorp/go-getter v1.6.1/go.mod h1:IZCrswsZPeWv9IkVnLElzRU/gz/QPi6pZHn4tv6vbwA= +github.com/hashicorp/go-getter v1.6.2 h1:7jX7xcB+uVCliddZgeKyNxv0xoT7qL5KDtH7rU4IqIk= +github.com/hashicorp/go-getter v1.6.2/go.mod h1:IZCrswsZPeWv9IkVnLElzRU/gz/QPi6pZHn4tv6vbwA= github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/internal/backend/init/init.go new/terraform-1.2.3/internal/backend/init/init.go --- old/terraform-1.2.2/internal/backend/init/init.go 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/internal/backend/init/init.go 2022-06-15 19:34:28.000000000 +0200 @@ -54,26 +54,22 @@ "remote": func() backend.Backend { return backendRemote.New(services) }, // Remote State backends. - "artifactory": func() backend.Backend { return backendArtifactory.New() }, - "azurerm": func() backend.Backend { return backendAzure.New() }, - "consul": func() backend.Backend { return backendConsul.New() }, - "cos": func() backend.Backend { return backendCos.New() }, - "etcd": func() backend.Backend { return backendEtcdv2.New() }, - "etcdv3": func() backend.Backend { return backendEtcdv3.New() }, - "gcs": func() backend.Backend { return backendGCS.New() }, - "http": func() backend.Backend { return backendHTTP.New() }, - "inmem": func() backend.Backend { return backendInmem.New() }, - "kubernetes": func() backend.Backend { return backendKubernetes.New() }, - "manta": func() backend.Backend { return backendManta.New() }, - "oss": func() backend.Backend { return backendOSS.New() }, - "pg": func() backend.Backend { return backendPg.New() }, - "s3": func() backend.Backend { return backendS3.New() }, - "swift": func() backend.Backend { return backendSwift.New() }, + "azurerm": func() backend.Backend { return backendAzure.New() }, + "consul": func() backend.Backend { return backendConsul.New() }, + "cos": func() backend.Backend { return backendCos.New() }, + "gcs": func() backend.Backend { return backendGCS.New() }, + "http": func() backend.Backend { return backendHTTP.New() }, + "inmem": func() backend.Backend { return backendInmem.New() }, + "kubernetes": func() backend.Backend { return backendKubernetes.New() }, + "oss": func() backend.Backend { return backendOSS.New() }, + "pg": func() backend.Backend { return backendPg.New() }, + "s3": func() backend.Backend { return backendS3.New() }, // Terraform Cloud 'backend' // This is an implementation detail only, used for the cloud package "cloud": func() backend.Backend { return backendCloud.New(services) }, + // FIXME: remove deprecated backends for v1.3 // Deprecated backends. "azure": func() backend.Backend { return deprecateBackend( @@ -81,6 +77,36 @@ `Warning: "azure" name is deprecated, please use "azurerm"`, ) }, + "artifactory": func() backend.Backend { + return deprecateBackend( + backendArtifactory.New(), + `Warning: "artifactory" backend is deprecated, and will be removed in a future release."`, + ) + }, + "etcd": func() backend.Backend { + return deprecateBackend( + backendEtcdv2.New(), + `Warning: "etcd" backend is deprecated, and will be removed in a future release."`, + ) + }, + "etcdv3": func() backend.Backend { + return deprecateBackend( + backendEtcdv3.New(), + `Warning: "etcdv3" backend is deprecated, and will be removed in a future release."`, + ) + }, + "manta": func() backend.Backend { + return deprecateBackend( + backendManta.New(), + `Warning: "manta" backend is deprecated, and will be removed in a future release."`, + ) + }, + "swift": func() backend.Backend { + return deprecateBackend( + backendSwift.New(), + `Warning: "swift" backend is deprecated, and will be removed in a future release."`, + ) + }, } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/internal/backend/init/init_test.go new/terraform-1.2.3/internal/backend/init/init_test.go --- old/terraform-1.2.2/internal/backend/init/init_test.go 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/internal/backend/init/init_test.go 2022-06-15 19:34:28.000000000 +0200 @@ -18,14 +18,17 @@ {"azurerm", "*azure.Backend"}, {"consul", "*consul.Backend"}, {"cos", "*cos.Backend"}, - {"etcdv3", "*etcd.Backend"}, {"gcs", "*gcs.Backend"}, {"inmem", "*inmem.Backend"}, - {"manta", "*manta.Backend"}, {"pg", "*pg.Backend"}, {"s3", "*s3.Backend"}, - {"swift", "*swift.Backend"}, + {"azure", "init.deprecatedBackendShim"}, + {"artifactory", "init.deprecatedBackendShim"}, + {"etcd", "init.deprecatedBackendShim"}, + {"etcdv3", "init.deprecatedBackendShim"}, + {"manta", "init.deprecatedBackendShim"}, + {"swift", "init.deprecatedBackendShim"}, } // Make sure we get the requested backend diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/internal/backend/remote-state/cos/client.go new/terraform-1.2.3/internal/backend/remote-state/cos/client.go --- old/terraform-1.2.2/internal/backend/remote-state/cos/client.go 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/internal/backend/remote-state/cos/client.go 2022-06-15 19:34:28.000000000 +0200 @@ -123,6 +123,11 @@ return c.lockError(err) } + err = c.cosUnlock(c.bucket, c.lockFile) + if err != nil { + return c.lockError(err) + } + return nil } @@ -362,6 +367,16 @@ var err error for i := 0; i < 30; i++ { + tagExists, err := c.CheckTag(lockTagKey, lockTagValue) + + if err != nil { + return err + } + + if !tagExists { + return nil + } + err = c.DeleteTag(lockTagKey, lockTagValue) if err == nil { return nil @@ -372,6 +387,30 @@ return err } +// CheckTag checks if tag key:value exists +func (c *remoteClient) CheckTag(key, value string) (exists bool, err error) { + request := tag.NewDescribeTagsRequest() + request.TagKey = &key + request.TagValue = &value + + response, err := c.tagClient.DescribeTags(request) + log.Printf("[DEBUG] create tag %s:%s: error: %v", key, value, err) + if err != nil { + return + } + + if len(response.Response.Tags) == 0 { + return + } + + tagKey := response.Response.Tags[0].TagKey + tagValue := response.Response.Tags[0].TagValue + + exists = key == *tagKey && value == *tagValue + + return +} + // CreateTag create tag by key and value func (c *remoteClient) CreateTag(key, value string) error { request := tag.NewCreateTagRequest() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/internal/plugin/grpc_provider.go new/terraform-1.2.3/internal/plugin/grpc_provider.go --- old/terraform-1.2.2/internal/plugin/grpc_provider.go 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/internal/plugin/grpc_provider.go 2022-06-15 19:34:28.000000000 +0200 @@ -137,6 +137,10 @@ resp.Diagnostics = resp.Diagnostics.Append(convert.ProtoToDiagnostics(protoResp.Diagnostics)) + if resp.Diagnostics.HasErrors() { + return resp + } + if protoResp.Provider == nil { resp.Diagnostics = resp.Diagnostics.Append(errors.New("missing provider schema")) return resp diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/internal/plugin/grpc_provider_test.go new/terraform-1.2.3/internal/plugin/grpc_provider_test.go --- old/terraform-1.2.2/internal/plugin/grpc_provider_test.go 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/internal/plugin/grpc_provider_test.go 2022-06-15 19:34:28.000000000 +0200 @@ -39,6 +39,15 @@ } } +// checkDiagsHasError ensures error diagnostics are present or fails the test. +func checkDiagsHasError(t *testing.T, d tfdiags.Diagnostics) { + t.Helper() + + if !d.HasErrors() { + t.Fatal("expected error diagnostics") + } +} + func providerProtoSchema() *proto.GetProviderSchema_Response { return &proto.GetProviderSchema_Response{ Provider: &proto.Schema{ @@ -92,6 +101,58 @@ checkDiags(t, resp.Diagnostics) } +// Ensure that gRPC errors are returned early. +// Reference: https://github.com/hashicorp/terraform/issues/31047 +func TestGRPCProvider_GetSchema_GRPCError(t *testing.T) { + ctrl := gomock.NewController(t) + client := mockproto.NewMockProviderClient(ctrl) + + client.EXPECT().GetSchema( + gomock.Any(), + gomock.Any(), + gomock.Any(), + ).Return(&proto.GetProviderSchema_Response{}, fmt.Errorf("test error")) + + p := &GRPCProvider{ + client: client, + } + + resp := p.GetProviderSchema() + + checkDiagsHasError(t, resp.Diagnostics) +} + +// Ensure that provider error diagnostics are returned early. +// Reference: https://github.com/hashicorp/terraform/issues/31047 +func TestGRPCProvider_GetSchema_ResponseErrorDiagnostic(t *testing.T) { + ctrl := gomock.NewController(t) + client := mockproto.NewMockProviderClient(ctrl) + + client.EXPECT().GetSchema( + gomock.Any(), + gomock.Any(), + gomock.Any(), + ).Return(&proto.GetProviderSchema_Response{ + Diagnostics: []*proto.Diagnostic{ + { + Severity: proto.Diagnostic_ERROR, + Summary: "error summary", + Detail: "error detail", + }, + }, + // Trigger potential panics + Provider: &proto.Schema{}, + }, nil) + + p := &GRPCProvider{ + client: client, + } + + resp := p.GetProviderSchema() + + checkDiagsHasError(t, resp.Diagnostics) +} + func TestGRPCProvider_PrepareProviderConfig(t *testing.T) { client := mockProviderClient(t) p := &GRPCProvider{ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/internal/plugin6/grpc_provider.go new/terraform-1.2.3/internal/plugin6/grpc_provider.go --- old/terraform-1.2.2/internal/plugin6/grpc_provider.go 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/internal/plugin6/grpc_provider.go 2022-06-15 19:34:28.000000000 +0200 @@ -144,6 +144,10 @@ resp.Diagnostics = resp.Diagnostics.Append(convert.ProtoToDiagnostics(protoResp.Diagnostics)) + if resp.Diagnostics.HasErrors() { + return resp + } + if protoResp.Provider == nil { resp.Diagnostics = resp.Diagnostics.Append(errors.New("missing provider schema")) return resp diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/internal/plugin6/grpc_provider_test.go new/terraform-1.2.3/internal/plugin6/grpc_provider_test.go --- old/terraform-1.2.2/internal/plugin6/grpc_provider_test.go 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/internal/plugin6/grpc_provider_test.go 2022-06-15 19:34:28.000000000 +0200 @@ -46,6 +46,15 @@ } } +// checkDiagsHasError ensures error diagnostics are present or fails the test. +func checkDiagsHasError(t *testing.T, d tfdiags.Diagnostics) { + t.Helper() + + if !d.HasErrors() { + t.Fatal("expected error diagnostics") + } +} + func providerProtoSchema() *proto.GetProviderSchema_Response { return &proto.GetProviderSchema_Response{ Provider: &proto.Schema{ @@ -99,6 +108,58 @@ checkDiags(t, resp.Diagnostics) } +// Ensure that gRPC errors are returned early. +// Reference: https://github.com/hashicorp/terraform/issues/31047 +func TestGRPCProvider_GetSchema_GRPCError(t *testing.T) { + ctrl := gomock.NewController(t) + client := mockproto.NewMockProviderClient(ctrl) + + client.EXPECT().GetProviderSchema( + gomock.Any(), + gomock.Any(), + gomock.Any(), + ).Return(&proto.GetProviderSchema_Response{}, fmt.Errorf("test error")) + + p := &GRPCProvider{ + client: client, + } + + resp := p.GetProviderSchema() + + checkDiagsHasError(t, resp.Diagnostics) +} + +// Ensure that provider error diagnostics are returned early. +// Reference: https://github.com/hashicorp/terraform/issues/31047 +func TestGRPCProvider_GetSchema_ResponseErrorDiagnostic(t *testing.T) { + ctrl := gomock.NewController(t) + client := mockproto.NewMockProviderClient(ctrl) + + client.EXPECT().GetProviderSchema( + gomock.Any(), + gomock.Any(), + gomock.Any(), + ).Return(&proto.GetProviderSchema_Response{ + Diagnostics: []*proto.Diagnostic{ + { + Severity: proto.Diagnostic_ERROR, + Summary: "error summary", + Detail: "error detail", + }, + }, + // Trigger potential panics + Provider: &proto.Schema{}, + }, nil) + + p := &GRPCProvider{ + client: client, + } + + resp := p.GetProviderSchema() + + checkDiagsHasError(t, resp.Diagnostics) +} + func TestGRPCProvider_PrepareProviderConfig(t *testing.T) { client := mockProviderClient(t) p := &GRPCProvider{ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/internal/terraform/node_resource_plan.go new/terraform-1.2.3/internal/terraform/node_resource_plan.go --- old/terraform-1.2.2/internal/terraform/node_resource_plan.go 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/internal/terraform/node_resource_plan.go 2022-06-15 19:34:28.000000000 +0200 @@ -38,6 +38,9 @@ // We attach dependencies to the Resource during refresh, since the // instances are instantiated during DynamicExpand. + // FIXME: These would be better off converted to a generic Set data + // structure in the future, as we need to compare for equality and take the + // union of multiple groups of dependencies. dependencies []addrs.ConfigResource } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/internal/terraform/node_resource_plan_instance.go new/terraform-1.2.3/internal/terraform/node_resource_plan_instance.go --- old/terraform-1.2.2/internal/terraform/node_resource_plan_instance.go 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/internal/terraform/node_resource_plan_instance.go 2022-06-15 19:34:28.000000000 +0200 @@ -391,6 +391,14 @@ return false } + // Because we need to sort the deps to compare equality, make shallow + // copies to prevent concurrently modifying the array values on + // dependencies shared between expanded instances. + copyA, copyB := make([]addrs.ConfigResource, len(a)), make([]addrs.ConfigResource, len(b)) + copy(copyA, a) + copy(copyB, b) + a, b = copyA, copyB + less := func(s []addrs.ConfigResource) func(i, j int) bool { return func(i, j int) bool { return s[i].String() < s[j].String() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/version/version.go new/terraform-1.2.3/version/version.go --- old/terraform-1.2.2/version/version.go 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/version/version.go 2022-06-15 19:34:28.000000000 +0200 @@ -11,7 +11,7 @@ ) // The main version number that is being run at the moment. -var Version = "1.2.2" +var Version = "1.2.3" // A pre-release marker for the version. If this is "" (empty string) // then it means that it is a final release. Otherwise, this is a pre-release diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/website/data/cli-nav-data.json new/terraform-1.2.3/website/data/cli-nav-data.json --- old/terraform-1.2.2/website/data/cli-nav-data.json 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/website/data/cli-nav-data.json 2022-06-15 19:34:28.000000000 +0200 @@ -429,59 +429,6 @@ ] }, { - "title": "Internals", - "routes": [ - { - "title": "Overview", - "href": "/internals" - }, - { - "title": "Credentials Helpers", - "href": "/internals/credentials-helpers" - }, - { - "title": "Debugging Terraform", - "href": "/internals/debugging" - }, - { - "title": "Module Registry Protocol", - "href": "/internals/module-registry-protocol" - }, - { - "title": "Provider Network Mirror Protocol", - "href": "/internals/provider-network-mirror-protocol" - }, - { - "title": "Provider Registry Protocol", - "href": "/internals/provider-registry-protocol" - }, - { - "title": "Resource Graph", - "href": "/internals/graph" - }, - { - "title": "Resource Lifecycle", - "href": "/internals/lifecycle" - }, - { - "title": "Login Protocol", - "href": "/internals/login-protocol" - }, - { - "title": "JSON Output Format", - "href": "/internals/json-format" - }, - { - "title": "Remote Service Discovery", - "href": "/internals/remote-service-discovery" - }, - { - "title": "Provider Metadata", - "href": "/internals/provider-meta" - } - ] - }, - { "title": "Installation", "hidden": true, "routes": [ @@ -494,5 +441,8 @@ "path": "install/yum" } ] - } + }, + { "divider": true }, + { "title": "Terraform Internals", "href": "/internals" }, + { "divider": true } ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/website/data/internals-nav-data.json new/terraform-1.2.3/website/data/internals-nav-data.json --- old/terraform-1.2.2/website/data/internals-nav-data.json 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/website/data/internals-nav-data.json 2022-06-15 19:34:28.000000000 +0200 @@ -1,4 +1,5 @@ [ + { "heading": "Terraform Internals" }, { "title": "Credentials Helpers", "path": "credentials-helpers" @@ -52,5 +53,10 @@ "title": "Archiving", "path": "archiving", "hidden": true - } + }, + { "divider": true }, + { "title": "Terraform CLI", "href": "/cli" }, + { "divider": true }, + { "title": "Configuration Language", "href": "/language" }, + { "divider": true } ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/website/data/language-nav-data.json new/terraform-1.2.3/website/data/language-nav-data.json --- old/terraform-1.2.2/website/data/language-nav-data.json 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/website/data/language-nav-data.json 2022-06-15 19:34:28.000000000 +0200 @@ -908,7 +908,6 @@ { "title": "Backends", "routes": [ - { "title": "Overview", "path": "settings/backends" }, { "title": "Backend Configuration", "path": "settings/backends/configuration" @@ -1220,5 +1219,8 @@ "path": "configuration-0-11/environment-variables" } ] - } + }, + { "divider": true }, + { "title": "Terraform Internals", "href": "/internals" }, + { "divider": true } ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/website/docs/internals/debugging.mdx new/terraform-1.2.3/website/docs/internals/debugging.mdx --- old/terraform-1.2.2/website/docs/internals/debugging.mdx 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/website/docs/internals/debugging.mdx 2022-06-15 19:34:28.000000000 +0200 @@ -12,7 +12,7 @@ Terraform has detailed logs which can be enabled by setting the `TF_LOG` environment variable to any value. This will cause detailed logs to appear on stderr. -You can set `TF_LOG` to one of the log levels `TRACE`, `DEBUG`, `INFO`, `WARN` or `ERROR` to change the verbosity of the logs. +You can set `TF_LOG` to one of the log levels (in order of decreasing verbosity) `TRACE`, `DEBUG`, `INFO`, `WARN` or `ERROR` to change the verbosity of the logs. Setting `TF_LOG` to `JSON` outputs logs at the `TRACE` level or higher, and uses a parseable JSON encoding as the formatting. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/website/docs/language/expressions/custom-conditions.mdx new/terraform-1.2.3/website/docs/language/expressions/custom-conditions.mdx --- old/terraform-1.2.2/website/docs/language/expressions/custom-conditions.mdx 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/website/docs/language/expressions/custom-conditions.mdx 2022-06-15 19:34:28.000000000 +0200 @@ -312,12 +312,12 @@ } resource "aws_internet_gateway" "example" { - for_each = aws_vpc.example + for_each = data.aws_vpc.example vpc_id = each.value.id lifecycle { precondition { - condition = aws_vpc.example[each.key].state == "available" + condition = data.aws_vpc.example[each.key].state == "available" error_message = "VPC ${each.key} must be available." } } @@ -341,7 +341,7 @@ ``` The `error_message` argument can be any expression that evaluates to a string. -This includes literal strings, heredocs, and template expressions. Multi-line +This includes literal strings, heredocs, and template expressions. You can use the [`format` function](/language/functions/format) to convert items of `null`, `list`, or `map` types into a formatted string. Multi-line error messages are supported, and lines with leading whitespace will not be word wrapped. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/website/docs/language/meta-arguments/depends_on.mdx new/terraform-1.2.3/website/docs/language/meta-arguments/depends_on.mdx --- old/terraform-1.2.2/website/docs/language/meta-arguments/depends_on.mdx 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/website/docs/language/meta-arguments/depends_on.mdx 2022-06-15 19:34:28.000000000 +0200 @@ -14,7 +14,7 @@ ## Processing and Planning Consequences -The `depends_on` meta-argument instructs Terraform to complete all actions on the the dependency object (including Read actions) before performing actions on the object declaring the dependency. When one the dependency object is an entire module, `depends_on` affects the order in which Terraform processes all of the resources and data sources associated with that module. Refer to [Resource Dependencies](/language/resources/behavior#resource-dependencies) and [Data Resource Dependencies](/language/data-sources#data-resource-dependencies) for more details. +The `depends_on` meta-argument instructs Terraform to complete all actions on the dependency object (including Read actions) before performing actions on the object declaring the dependency. When the dependency object is an entire module, `depends_on` affects the order in which Terraform processes all of the resources and data sources associated with that module. Refer to [Resource Dependencies](/language/resources/behavior#resource-dependencies) and [Data Resource Dependencies](/language/data-sources#data-resource-dependencies) for more details. You should use `depends_on` as a last resort because it can cause Terraform to create more conservative plans that replace more resources than necessary. For example, Terraform may treat more values as unknown ???(known after apply)??? because it is uncertain what changes will occur on the upstream object. This is especially likely when you use `depends_on` for modules. @@ -70,4 +70,4 @@ aws_iam_role_policy.example ] } -``` \ No newline at end of file +``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/website/docs/language/settings/backends/artifactory.mdx new/terraform-1.2.3/website/docs/language/settings/backends/artifactory.mdx --- old/terraform-1.2.2/website/docs/language/settings/backends/artifactory.mdx 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/website/docs/language/settings/backends/artifactory.mdx 2022-06-15 19:34:28.000000000 +0200 @@ -45,7 +45,9 @@ } ``` -## Configuration variables +## Configuration Variables + +!> **Warning:** We recommend using environment variables to supply credentials and other sensitive data. If you use `-backend-config` or hardcode these values directly in your configuration, Terraform will include these values in both the `.terraform` subdirectory and in plan files. Refer to [Credentials and Sensitive Data](/language/settings/backends/configuration#credentials-and-sensitive-data) for details. The following configuration options / environment variables are supported: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/website/docs/language/settings/backends/azurerm.mdx new/terraform-1.2.3/website/docs/language/settings/backends/azurerm.mdx --- old/terraform-1.2.2/website/docs/language/settings/backends/azurerm.mdx 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/website/docs/language/settings/backends/azurerm.mdx 2022-06-15 19:34:28.000000000 +0200 @@ -230,7 +230,10 @@ } ``` -## Configuration variables +## Configuration Variables + +!> **Warning:** We recommend using environment variables to supply credentials and other sensitive data. If you use `-backend-config` or hardcode these values directly in your configuration, Terraform will include these values in both the `.terraform` subdirectory and in plan files. Refer to [Credentials and Sensitive Data](/language/settings/backends/configuration#credentials-and-sensitive-data) for details. + The following configuration options are supported: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/website/docs/language/settings/backends/configuration.mdx new/terraform-1.2.3/website/docs/language/settings/backends/configuration.mdx --- old/terraform-1.2.2/website/docs/language/settings/backends/configuration.mdx 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/website/docs/language/settings/backends/configuration.mdx 2022-06-15 19:34:28.000000000 +0200 @@ -4,19 +4,27 @@ # Backend Configuration -Each Terraform configuration can specify a backend, which defines where -[state](/language/state) snapshots are stored. +A backend defines where Terraform stores its [state](/language/state) data files. -You do not need to configure a backend when using Terraform Cloud because -Terraform Cloud automatically manages state in the workspaces associated with your configuration. If your configuration includes [a `cloud` block](/language/settings/terraform-cloud), it cannot include a `backend` block. +Terraform uses persisted state data to keep track of the resources it manages. Most non-trivial Terraform configurations either [integrate with Terraform Cloud](/language/settings/terraform-cloud) or use a backend to store state remotely. This lets multiple people access the state data and work together on that collection of infrastructure resources. + +This page describes how to configure a backend by adding the [`backend` block](#using-a-backend-block) to your configuration. + +-> **Note:** In Terraform versions before 1.1.0, we classified backends as standard or enhanced. The enhanced label differentiated the [`remote` backend](/language/settings/backends/remote), which could both store state and perform Terraform operations. This classification has been removed. Refer to [Using Terraform Cloud](/cli/cloud) for details about storing state, executing remote operations, and using Terraform Cloud directly from Terraform. -Most non-trivial Terraform configurations store state remotely so that multiple -people can work with the same infrastructure. +## Available Backends + +By default, Terraform uses a backend called [`local`](/language/settings/backends/local), which stores state as a local file on disk. You can also configure one of the built-in backends listed in the documentation sidebar. + +Some of these backends act like plain remote disks for state files, while others support locking the state while operations are being performed. This helps prevent conflicts and inconsistencies. The built-in backends listed are the only backends. You cannot load additional backends as plugins. ## Using a Backend Block -Backends are configured with a nested `backend` block within the top-level -`terraform` block: +You do not need to configure a backend when using Terraform Cloud because +Terraform Cloud automatically manages state in the workspaces associated with your configuration. If your configuration includes a [`cloud` block](/language/settings/terraform-cloud), it cannot include a `backend` block. + +To configure a backend, add a nested `backend` block within the top-level +`terraform` block. The following example configures the `remote` backend. ```hcl terraform { @@ -35,6 +43,18 @@ - A configuration can only provide one backend block. - A backend block cannot refer to named values (like input variables, locals, or data source attributes). +### Credentials and Sensitive Data + +Backends store state in a remote service, which allows multiple people to access it. Accessing remote state generally requires access credentials, since state data contains extremely sensitive information. + +!> **Warning:** We recommend using environment variables to supply credentials and other sensitive data. If you use `-backend-config` or hardcode these values directly in your configuration, Terraform will include these values in both the `.terraform` subdirectory and in plan files. This can leak sensitive credentials. + +Terraform writes the backend configuration in plain text in two separate files. +- The `.terraform/terraform.tfstate` file contains the backend configuration for the current working directory. +- All plan files capture the information in `.terraform/terraform.tfstate` at the time the plan was created. This helps ensure Terraform is applying the plan to correct set of infrastructure. + +When applying a plan that you previously saved to a file, Terraform uses the backend configuration stored in that file instead of the current backend settings. If that configuration contains time-limited credentials, they may expire before you finish applying the plan. Use environment variables to pass credentials when you need to use different values between the plan and apply steps. + ### Backend Types The block label of the backend block (`"remote"`, in the example above) indicates which backend type to use. Terraform has a built-in selection of backends, and the configured backend must be available in the version of Terraform you are using. @@ -43,7 +63,7 @@ Some backends allow providing access credentials directly as part of the configuration for use in unusual situations, for pragmatic reasons. However, in normal use we _do not_ recommend including access credentials as part of the backend configuration. Instead, leave those arguments completely unset and provide credentials via the credentials files or environment variables that are conventional for the target system, as described in the documentation for each backend. -See the list of backend types in the navigation sidebar for details about each supported backend type and its configuration arguments. +Refer to the list of backend types in the navigation sidebar for details about each supported backend type and its configuration arguments. ### Default Backend diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/website/docs/language/settings/backends/consul.mdx new/terraform-1.2.3/website/docs/language/settings/backends/consul.mdx --- old/terraform-1.2.2/website/docs/language/settings/backends/consul.mdx 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/website/docs/language/settings/backends/consul.mdx 2022-06-15 19:34:28.000000000 +0200 @@ -35,7 +35,9 @@ } ``` -## Configuration variables +## Configuration Variables + +!> **Warning:** We recommend using environment variables to supply credentials and other sensitive data. If you use `-backend-config` or hardcode these values directly in your configuration, Terraform will include these values in both the `.terraform` subdirectory and in plan files. Refer to [Credentials and Sensitive Data](/language/settings/backends/configuration#credentials-and-sensitive-data) for details. The following configuration options / environment variables are supported: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/website/docs/language/settings/backends/cos.mdx new/terraform-1.2.3/website/docs/language/settings/backends/cos.mdx --- old/terraform-1.2.2/website/docs/language/settings/backends/cos.mdx 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/website/docs/language/settings/backends/cos.mdx 2022-06-15 19:34:28.000000000 +0200 @@ -45,7 +45,9 @@ } ``` -## Configuration variables +## Configuration Variables + +!> **Warning:** We recommend using environment variables to supply credentials and other sensitive data. If you use `-backend-config` or hardcode these values directly in your configuration, Terraform will include these values in both the `.terraform` subdirectory and in plan files. Refer to [Credentials and Sensitive Data](/language/settings/backends/configuration#credentials-and-sensitive-data) for details. The following configuration options or environment variables are supported: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/website/docs/language/settings/backends/etcd.mdx new/terraform-1.2.3/website/docs/language/settings/backends/etcd.mdx --- old/terraform-1.2.2/website/docs/language/settings/backends/etcd.mdx 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/website/docs/language/settings/backends/etcd.mdx 2022-06-15 19:34:28.000000000 +0200 @@ -32,7 +32,9 @@ } ``` -## Configuration variables +## Configuration Variables + +!> **Warning:** We recommend using environment variables to supply credentials and other sensitive data. If you use `-backend-config` or hardcode these values directly in your configuration, Terraform will include these values in both the `.terraform` subdirectory and in plan files. Refer to [Credentials and Sensitive Data](/language/settings/backends/configuration#credentials-and-sensitive-data) for details. The following configuration options are supported: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/website/docs/language/settings/backends/etcdv3.mdx new/terraform-1.2.3/website/docs/language/settings/backends/etcdv3.mdx --- old/terraform-1.2.2/website/docs/language/settings/backends/etcdv3.mdx 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/website/docs/language/settings/backends/etcdv3.mdx 2022-06-15 19:34:28.000000000 +0200 @@ -37,7 +37,9 @@ } ``` -## Configuration variables +## Configuration Variables + +!> **Warning:** We recommend using environment variables to supply credentials and other sensitive data. If you use `-backend-config` or hardcode these values directly in your configuration, Terraform will include these values in both state and plan files. Refer to [Credentials and Sensitive Data](/language/settings/backends/configuration#credentials-and-sensitive-data) for details. The following configuration options / environment variables are supported: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/website/docs/language/settings/backends/gcs.mdx new/terraform-1.2.3/website/docs/language/settings/backends/gcs.mdx --- old/terraform-1.2.2/website/docs/language/settings/backends/gcs.mdx 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/website/docs/language/settings/backends/gcs.mdx 2022-06-15 19:34:28.000000000 +0200 @@ -73,7 +73,9 @@ Terraform can impersonate a Google Service Account as described [here](https://cloud.google.com/iam/docs/creating-short-lived-service-account-credentials). A valid credential must be provided as mentioned in the earlier section and that identity must have the `roles/iam.serviceAccountTokenCreator` role on the service account you are impersonating. -## Configuration variables +## Configuration Variables + +!> **Warning:** We recommend using environment variables to supply credentials and other sensitive data. If you use `-backend-config` or hardcode these values directly in your configuration, Terraform will include these values in both the `.terraform` subdirectory and in plan files. Refer to [Credentials and Sensitive Data](/language/settings/backends/configuration#credentials-and-sensitive-data) for details. The following configuration options are supported: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/website/docs/language/settings/backends/http.mdx new/terraform-1.2.3/website/docs/language/settings/backends/http.mdx --- old/terraform-1.2.2/website/docs/language/settings/backends/http.mdx 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/website/docs/language/settings/backends/http.mdx 2022-06-15 19:34:28.000000000 +0200 @@ -38,7 +38,9 @@ } ``` -## Configuration variables +## Configuration Variables + +!> **Warning:** We recommend using environment variables to supply credentials and other sensitive data. If you use `-backend-config` or hardcode these values directly in your configuration, Terraform will include these values in both the `.terraform` subdirectory and in plan files. Refer to [Credentials and Sensitive Data](/language/settings/backends/configuration#credentials-and-sensitive-data) for details. The following configuration options / environment variables are supported: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/website/docs/language/settings/backends/index.mdx new/terraform-1.2.3/website/docs/language/settings/backends/index.mdx --- old/terraform-1.2.2/website/docs/language/settings/backends/index.mdx 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/website/docs/language/settings/backends/index.mdx 1970-01-01 01:00:00.000000000 +0100 @@ -1,58 +0,0 @@ ---- -page_title: Backend Overview - Configuration Language -description: >- - A backend defines where Terraform stores its state. Learn about how backends - work. ---- - -# Backends - -Backends define where Terraform's [state](/language/state) snapshots are stored. - -A given Terraform configuration can either specify a backend, -[integrate with Terraform Cloud](/language/settings/terraform-cloud), -or do neither and default to storing state locally. - -The rest of this page introduces the concept of backends; the other pages in -this section document how to configure and use backends. - -- [Backend Configuration](/language/settings/backends/configuration) documents the form - of a `backend` block, which selects and configures a backend for a - Terraform configuration. -- This section also includes a page for each of Terraform's built-in backends, - documenting its behavior and available settings. See the navigation sidebar - for a complete list. - -## What Backends Do - -Backends primarily determine where Terraform stores its [state](/language/state). -Terraform uses this persisted [state](/language/state) data to keep track of the -resources it manages. Since it needs the state in order to know which real-world infrastructure -objects correspond to the resources in a configuration, everyone working with a given collection of -infrastructure resources must be able to access the same state data. - -By default, Terraform implicitly uses a backend called -[`local`](/language/settings/backends/local) to store state as a local file on disk. -Every other backend stores state in a remote service of some kind, which allows multiple people to -access it. Accessing state in a remote service generally requires some kind of access credentials, -since state data contains extremely sensitive information. - -Some backends act like plain "remote disks" for state files; others support -_locking_ the state while operations are being performed, which helps prevent -conflicts and inconsistencies. - --> **Note:** In Terraform versions prior to 1.1.0, backends were also classified as being 'standard' -or 'enhanced', where the latter term referred to the ability of the -[remote backend](/language/settings/backends/remote) to store state and perform -Terraform operations. This classification has been removed, clarifying the primary purpose of -backends. Refer to [Using Terraform Cloud](/cli/cloud) for details about how to -store state, execute remote operations, and use Terraform Cloud directly from Terraform. - -## Available Backends - -Terraform includes a built-in selection of backends, which are listed in the -navigation sidebar. This selection has changed over time, but does not change -very often. - -The built-in backends are the only backends. You cannot load additional backends -as plugins. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/website/docs/language/settings/backends/kubernetes.mdx new/terraform-1.2.3/website/docs/language/settings/backends/kubernetes.mdx --- old/terraform-1.2.2/website/docs/language/settings/backends/kubernetes.mdx 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/website/docs/language/settings/backends/kubernetes.mdx 2022-06-15 19:34:28.000000000 +0200 @@ -44,7 +44,9 @@ } ``` -## Configuration variables +## Configuration Variables + +!> **Warning:** We recommend using environment variables to supply credentials and other sensitive data. If you use `-backend-config` or hardcode these values directly in your configuration, Terraform will include these values in both the `.terraform` subdirectory and in plan files. Refer to [Credentials and Sensitive Data](/language/settings/backends/configuration#credentials-and-sensitive-data) for details. The following configuration options are supported: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/website/docs/language/settings/backends/manta.mdx new/terraform-1.2.3/website/docs/language/settings/backends/manta.mdx --- old/terraform-1.2.2/website/docs/language/settings/backends/manta.mdx 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/website/docs/language/settings/backends/manta.mdx 2022-06-15 19:34:28.000000000 +0200 @@ -35,7 +35,9 @@ } ``` -## Configuration variables +## Configuration Variables + +!> **Warning:** We recommend using environment variables to supply credentials and other sensitive data. If you use `-backend-config` or hardcode these values directly in your configuration, Terraform will include these values in both the `.terraform` subdirectory and in plan files. Refer to [Credentials and Sensitive Data](/language/settings/backends/configuration#credentials-and-sensitive-data) for details. The following configuration options are supported: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/website/docs/language/settings/backends/oss.mdx new/terraform-1.2.3/website/docs/language/settings/backends/oss.mdx --- old/terraform-1.2.2/website/docs/language/settings/backends/oss.mdx 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/website/docs/language/settings/backends/oss.mdx 2022-06-15 19:34:28.000000000 +0200 @@ -69,7 +69,9 @@ } ``` -## Configuration variables +## Configuration Variables + +!> **Warning:** We recommend using environment variables to supply credentials and other sensitive data. If you use `-backend-config` or hardcode these values directly in your configuration, Terraform will include these values in both the `.terraform` subdirectory and in plan files. Refer to [Credentials and Sensitive Data](/language/settings/backends/configuration#credentials-and-sensitive-data) for details. The following configuration options or environment variables are supported: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/website/docs/language/settings/backends/pg.mdx new/terraform-1.2.3/website/docs/language/settings/backends/pg.mdx --- old/terraform-1.2.2/website/docs/language/settings/backends/pg.mdx 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/website/docs/language/settings/backends/pg.mdx 2022-06-15 19:34:28.000000000 +0200 @@ -64,6 +64,8 @@ ## Configuration Variables +!> **Warning:** We recommend using environment variables to supply credentials and other sensitive data. If you use `-backend-config` or hardcode these values directly in your configuration, Terraform will include these values in both the `.terraform` subdirectory and in plan files. Refer to [Credentials and Sensitive Data](/language/settings/backends/configuration#credentials-and-sensitive-data) for details. + The following configuration options or environment variables are supported: - `conn_str` - (Required) Postgres connection string; a `postgres://` URL diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/website/docs/language/settings/backends/remote.mdx new/terraform-1.2.3/website/docs/language/settings/backends/remote.mdx --- old/terraform-1.2.2/website/docs/language/settings/backends/remote.mdx 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/website/docs/language/settings/backends/remote.mdx 2022-06-15 19:34:28.000000000 +0200 @@ -173,7 +173,9 @@ } ``` -## Configuration variables +## Configuration Variables + +!> **Warning:** We recommend using environment variables to supply credentials and other sensitive data. If you use `-backend-config` or hardcode these values directly in your configuration, Terraform will include these values in both the `.terraform` subdirectory and in plan files. Refer to [Credentials and Sensitive Data](/language/settings/backends/configuration#credentials-and-sensitive-data) for details. The following configuration options are supported: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/website/docs/language/settings/backends/s3.mdx new/terraform-1.2.3/website/docs/language/settings/backends/s3.mdx --- old/terraform-1.2.2/website/docs/language/settings/backends/s3.mdx 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/website/docs/language/settings/backends/s3.mdx 2022-06-15 19:34:28.000000000 +0200 @@ -142,6 +142,8 @@ ### Credentials and Shared Configuration +!> **Warning:** We recommend using environment variables to supply credentials and other sensitive data. If you use `-backend-config` or hardcode these values directly in your configuration, Terraform will include these values in both the `.terraform` subdirectory and in plan files. Refer to [Credentials and Sensitive Data](/language/settings/backends/configuration#credentials-and-sensitive-data) for details. + The following configuration is required: * `region` - (Required) AWS Region of the S3 Bucket and DynamoDB Table (if used). This can also be sourced from the `AWS_DEFAULT_REGION` and `AWS_REGION` environment variables. @@ -411,7 +413,7 @@ ``` It is also possible to apply fine-grained access control to the DynamoDB -table used for locking. When Terraform puts the state lock in place during `terraform plan`, it stores the full state file as a document and sets the s3 object key as the partition key for the document. After the state lock is released, Terraform places a digest of the updated state file in DynamoDB. The key is similar to the one for the original state file, but is suffixed with `-md5`. +table used for locking. When Terraform puts the state lock in place during `terraform plan`, it stores the full state file as a document and sets the s3 object key as the partition key for the document. After the state lock is released, Terraform places a digest of the updated state file in DynamoDB. The key is similar to the one for the original state file, but is suffixed with `-md5`. The example below shows a simple IAM policy that allows the backend operations role to perform these operations: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terraform-1.2.2/website/docs/language/settings/backends/swift.mdx new/terraform-1.2.3/website/docs/language/settings/backends/swift.mdx --- old/terraform-1.2.2/website/docs/language/settings/backends/swift.mdx 2022-06-01 18:11:56.000000000 +0200 +++ new/terraform-1.2.3/website/docs/language/settings/backends/swift.mdx 2022-06-15 19:34:28.000000000 +0200 @@ -39,7 +39,9 @@ } ``` -## Configuration variables +## Configuration Variables + +!> **Warning:** We recommend using environment variables to supply credentials and other sensitive data. If you use `-backend-config` or hardcode these values directly in your configuration, Terraform will include these values in both the `.terraform` subdirectory and in plan files. Refer to [Credentials and Sensitive Data](/language/settings/backends/configuration#credentials-and-sensitive-data) for details. The following configuration options are supported: ++++++ terraform.obsinfo ++++++ --- /var/tmp/diff_new_pack.ZsW0cG/_old 2022-06-23 10:25:52.707844830 +0200 +++ /var/tmp/diff_new_pack.ZsW0cG/_new 2022-06-23 10:25:52.711844834 +0200 @@ -1,5 +1,5 @@ name: terraform -version: 1.2.2 -mtime: 1654099916 -commit: 129f62ae6f340ad8cf006a2f4d25d391d35a027b +version: 1.2.3 +mtime: 1655314468 +commit: 9a30749b89d4e88ed31a13d727996ec9bbfeeca2 ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/terraform/vendor.tar.gz /work/SRC/openSUSE:Factory/.terraform.new.1548/vendor.tar.gz differ: char 4, line 1