From 1287ad46a128565831961a53dcd569c32925f085 Mon Sep 17 00:00:00 2001 From: Andrew Babichev Date: Wed, 23 Nov 2022 17:42:55 +0000 Subject: [PATCH 1/3] docs: create_before_destroy meta-attribute propagation --- website/docs/language/meta-arguments/lifecycle.mdx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/website/docs/language/meta-arguments/lifecycle.mdx b/website/docs/language/meta-arguments/lifecycle.mdx index a5a995bbda..0c18043ec6 100644 --- a/website/docs/language/meta-arguments/lifecycle.mdx +++ b/website/docs/language/meta-arguments/lifecycle.mdx @@ -49,6 +49,13 @@ The arguments available within a `lifecycle` block are `create_before_destroy`, such features, so you must understand the constraints for each resource type before using `create_before_destroy` with it. + Note that Terraform propagates and applies `create_before_destroy` meta-attribute + behaviour to all resource dependencies. For example, if resource A with enabled + `create_before_destroy` depends on resource B with disabled `create_before_destroy` + (by default), then Terraform enables `create_before_destroy` for resource B + implicitly and stores it to the state file. You cannot override `create_before_destroy` + to `false` on resource B, because that would imply dependency cycles in the graph. + Destroy provisioners of this resource do not run if `create_before_destroy` is set to `true`. This [GitHub issue](https://github.com/hashicorp/terraform/issues/13549) contains more details. From 06c6532681e25b672b3ce4fa6788d19735ad6e60 Mon Sep 17 00:00:00 2001 From: Andrew Babichev Date: Tue, 25 Jul 2023 09:38:42 +0100 Subject: [PATCH 2/3] Update website/docs/language/meta-arguments/lifecycle.mdx Co-authored-by: trujillo-adam <47586768+trujillo-adam@users.noreply.github.com> --- website/docs/language/meta-arguments/lifecycle.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/language/meta-arguments/lifecycle.mdx b/website/docs/language/meta-arguments/lifecycle.mdx index 0c18043ec6..b08b40888a 100644 --- a/website/docs/language/meta-arguments/lifecycle.mdx +++ b/website/docs/language/meta-arguments/lifecycle.mdx @@ -49,7 +49,7 @@ The arguments available within a `lifecycle` block are `create_before_destroy`, such features, so you must understand the constraints for each resource type before using `create_before_destroy` with it. - Note that Terraform propagates and applies `create_before_destroy` meta-attribute + Note that Terraform propagates and applies the `create_before_destroy` meta-attribute behaviour to all resource dependencies. For example, if resource A with enabled `create_before_destroy` depends on resource B with disabled `create_before_destroy` (by default), then Terraform enables `create_before_destroy` for resource B From 91c7402baded3b65ba5033359294e6fed6d1ad14 Mon Sep 17 00:00:00 2001 From: Andrew Babichev Date: Tue, 25 Jul 2023 09:38:49 +0100 Subject: [PATCH 3/3] Update website/docs/language/meta-arguments/lifecycle.mdx Co-authored-by: trujillo-adam <47586768+trujillo-adam@users.noreply.github.com> --- website/docs/language/meta-arguments/lifecycle.mdx | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/website/docs/language/meta-arguments/lifecycle.mdx b/website/docs/language/meta-arguments/lifecycle.mdx index b08b40888a..74a6378ee8 100644 --- a/website/docs/language/meta-arguments/lifecycle.mdx +++ b/website/docs/language/meta-arguments/lifecycle.mdx @@ -50,11 +50,9 @@ The arguments available within a `lifecycle` block are `create_before_destroy`, type before using `create_before_destroy` with it. Note that Terraform propagates and applies the `create_before_destroy` meta-attribute - behaviour to all resource dependencies. For example, if resource A with enabled - `create_before_destroy` depends on resource B with disabled `create_before_destroy` - (by default), then Terraform enables `create_before_destroy` for resource B - implicitly and stores it to the state file. You cannot override `create_before_destroy` - to `false` on resource B, because that would imply dependency cycles in the graph. + behaviour to all resource dependencies. For example, if `create_before_destroy` is enabled on resource A but not on resource B, but resource A is dependent on resource B, then Terraform enables `create_before_destroy` for resource B + implicitly by default and stores it to the state file. You cannot override `create_before_destroy` + to `false` on resource B because that would imply dependency cycles in the graph. Destroy provisioners of this resource do not run if `create_before_destroy` is set to `true`. This [GitHub issue](https://github.com/hashicorp/terraform/issues/13549) contains more details.