Is there a simpler way to understand them ? When I use a provider in my code and do a terraform init
- does it download a provider or plugin ?
Where are and what are the 3rd party plugins ? Is is same as 3rd party provider like that ?
Plugins is how you develop providers. For example, AWS
provider is implemented as a plugin in go
programming language into terraform.
The source code of the AWS
provider plugin is here:
The Terraform AWS provider is a plugin for Terraform that allows for the full lifecycle management of AWS resources.
So, as an end-user you are using AWS
provider. But if you want to contribute to the provider, and implement or fix bugs in it, you will be doing this in in a context of a plugin in go
language.
When I use a provider in my code and do a terraform init - does it download a provider or plugin ?
Technically it downloads a plugin that provides the AWS
(example) provider functionality. It will be stored in your project's directory in plugins folder:
.terraform/plugins/linux_amd64/terraform-provider-aws_v3.2.0_x5
3rd party provider
This is a provider not distributed by HashiCorp. Those third-party providers/plugins are "manually" installed in the plugins folder, whereas those by HashiCorp are installed using terraform init
.