2.1. Providers: Terraform's Plugins
💡 First Principle: Terraform's core engine knows nothing about any specific platform — all platform knowledge lives in downloadable provider plugins, which is exactly what lets one tool manage AWS, GitHub, and a database server without the core ever changing.
Why care: Almost every configuration begins by declaring providers, and terraform init fails loudly if you get the declaration wrong. Provider versioning is also a frequent source of "it worked yesterday" surprises, and the exam tests the lock file specifically.
The mental model: Think of Terraform core as a universal remote and providers as the device-specific codes you program into it. The remote's buttons (create, read, update, delete) never change; loading a new code just teaches it to speak to a new device.
⚠️ Common Misconception: Many learners assume providers ship inside the Terraform binary. They don't — providers are separate plugins downloaded on demand during terraform init, based on what your configuration requires. This separation is why provider releases and Terraform CLI releases have independent version numbers.