A configuration uses resource "datadog_monitor" but has no required_providers entry for it. terraform init fails because it tries to install hashicorp/datadog, which does not exist. What fixes the installation?
Select an answer to reveal the explanation.
Short Explanation
A provider's source address is its full postal address: hostname, namespace and type. Leave it off and Terraform assumes the hashicorp neighbourhood, which is the wrong street for a partner provider. You fix it by writing the full address in required_providers, not by shouting louder with -upgrade.
Full Explanation
Every provider has a source address in the form hostname/namespace/type, with the hostname defaulting to the public Terraform Registry. When a module uses a provider without declaring it in required_providers, Terraform infers the source from the local name and assumes the hashicorp namespace, so datadog becomes hashicorp/datadog, which does not exist. Partner and community providers must therefore be declared explicitly, for example datadog = { source = "DataDog/datadog", version = "..." } inside terraform { required_providers { ... } }, after which init installs the correct package and records it in the lock file. -upgrade only lets init choose newer versions that satisfy existing constraints; it never searches other namespaces. Provider configuration blocks accept the provider's own settings and meta-arguments such as alias; there is no source argument there, because installation is decided by required_providers before any provider is configured. An alias names an additional configuration of an already-installed provider and has no role in locating the package. Exam caveat: every module that uses a non-hashicorp provider needs its own required_providers entry, including child modules. Operational check: run terraform providers to confirm the module's requirement shows the DataDog namespace, then run terraform init and check the lock file entry.