Update providers block notes
This commit is contained in:
parent
65c4ba9c85
commit
608c17d518
|
@ -371,8 +371,8 @@ as defined for managed resources.
|
||||||
# my_buckets.tf
|
# my_buckets.tf
|
||||||
module "bucket" {
|
module "bucket" {
|
||||||
for_each = toset(["assets", "media"])
|
for_each = toset(["assets", "media"])
|
||||||
source = "./publish_bucket"
|
source = "./publish_bucket"
|
||||||
name = "${each.key}_bucket"
|
name = "${each.key}_bucket"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -418,9 +418,64 @@ as an entirely separate resource to the old. Always check the execution plan
|
||||||
after performing such actions to ensure that no resources are surprisingly
|
after performing such actions to ensure that no resources are surprisingly
|
||||||
deleted.
|
deleted.
|
||||||
|
|
||||||
Each instance of a module may optionally have different providers passed to it
|
### Limitations when using module expansion
|
||||||
|
|
||||||
|
Modules using `count` or `for_each` cannot pass different sets of providers to different instances.
|
||||||
|
This is because when a module instance is destroyed (such as a key-value being removed from the
|
||||||
|
`for_each` map), the provider must be available in order to perform the destroy. You can pass
|
||||||
|
different sets of providers by using multiple `module` blocks:
|
||||||
|
|
||||||
|
```
|
||||||
|
# my_buckets.tf
|
||||||
|
|
||||||
|
provider "aws" {
|
||||||
|
alias = "usw1"
|
||||||
|
region = "us-west-1"
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "aws" {
|
||||||
|
alias = "usw2"
|
||||||
|
region = "us-west-2"
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "google" {
|
||||||
|
alias = "usw1"
|
||||||
|
credentials = "${file("account.json")}"
|
||||||
|
project = "my-project-id"
|
||||||
|
region = "us-west1"
|
||||||
|
zone = "us-west1-a"
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "google" {
|
||||||
|
alias = "usw2"
|
||||||
|
credentials = "${file("account.json")}"
|
||||||
|
project = "my-project-id"
|
||||||
|
region = "us-west2"
|
||||||
|
zone = "us-west2-a"
|
||||||
|
}
|
||||||
|
|
||||||
|
module "bucket_w1" {
|
||||||
|
source = "./publish_bucket"
|
||||||
|
providers = {
|
||||||
|
aws.src = "aws.usw1"
|
||||||
|
google.src = "google.usw2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module "bucket_w2" {
|
||||||
|
source = "./publish_bucket"
|
||||||
|
providers = {
|
||||||
|
aws.src = "aws.usw2"
|
||||||
|
google.src = "google.usw2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Each module block may optionally have different providers passed to it
|
||||||
using the [`providers`](/docs/configuration/modules.html#passing-providers-explicitly)
|
using the [`providers`](/docs/configuration/modules.html#passing-providers-explicitly)
|
||||||
argument. This can be useful in situations where, for example, a duplicated set of resources must be created across several regions or datacenters.
|
argument. This can be useful in situations where, for example, a duplicated set of
|
||||||
|
resources must be created across several regions or datacenters.
|
||||||
|
|
||||||
|
|
||||||
## Tainting resources within a module
|
## Tainting resources within a module
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue