Terraform - Providers Within Modules
What provider configurations does a child module inherit from its parent?
A child module automatically inherits default provider configurations from its parent.
What is the compatibility of a module containing its own provider configurations with certain arguments?
A module containing its own provider configurations is not compatible with the for_each, count, and depends_on arguments.
How can a provider configuration be passed down to a module?
A provider configuration can be passed down implicitly through inheritance or explicitly via the providers argument within a module block.
Where can a provider configuration be defined?
A provider configuration can only be defined in a root Terraform module.
What happens to resources when a provider configuration block is removed?
All resources that belong to a particular provider configuration are destroyed before you can remove that provider configuration block from your code.
What must each module declare?
Each module must declare its own provider requirements.
What is the requirement for each resource in the configuration?
Each resource must be associated with one provider configuration.
What is the scope of a provider configuration?
Global to an entire Terraform configuration and can be shared across module boundaries.
Are `alias` configurations automatically inherited by child modules?
No, `alias` configurations are never inherited automatically by child modules.
Can a module callable by other modules contain provider blocks?
No, a module callable by other modules must not contain any provider blocks.
What happens when a `providers` argument is used in a [[module]] block?
Once a `providers` argument is used in a module block, it overrides all of the default inheritance behavior.
How can different configurations of a particular provider be used in child modules?
The `providers` argument within a module block can be used to explicitly define which provider configurations are available to the child module.
Why is the `providers` argument within a [[module]] block a map?
The `providers` argument within a module block is a map because a module may contain resources from many different providers.
What are the keys and values in the `providers` argument within a [[module]] block?
The keys are provider names as expected by the child module, and the values are the names of corresponding configurations in the `current` module.