forked from iam-veeramalla/terraform-zero-to-hero
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
8c98fee
commit d38d818
Showing
6 changed files
with
96 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
# Providers | ||
|
||
A provider in Terraform is a plugin that enables interaction with an API. | ||
This includes cloud providers, SaaS providers, and other APIs. The providers are specified in the Terraform configuration code. They tell Terraform which services it needs to interact with. | ||
|
||
For example, if you want to use Terraform to create a virtual machine on AWS, you would need to use the aws provider. The aws provider provides a set of resources that Terraform can use to create, manage, and destroy virtual machines on AWS. | ||
|
||
Here is an example of how to use the aws provider in a Terraform configuration: | ||
|
||
```hcl | ||
provider "aws" { | ||
region = "us-east-1" | ||
} | ||
resource "aws_instance" "example" { | ||
ami = "ami-0123456789abcdef0" # Change the AMI | ||
instance_type = "t2.micro" | ||
} | ||
``` | ||
|
||
In this example, we are first defining the aws provider. We are specifying the region as us-east-1. Then, we are defining the `aws_instance` resource. We are specifying the `AMI ID` and the `instance type`. | ||
|
||
When Terraform runs, it will first install the aws provider. Then, it will use the aws provider to create the virtual machine. | ||
|
||
Here are some other examples of providers: | ||
|
||
- `azure` - for Azure | ||
- `google` - for Google Cloud Platform | ||
- `kubernetes` - for Kubernetes | ||
- `openstack` - for OpenStack | ||
- `vsphere` - for VMware vSphere | ||
|
||
There are many other providers available, and new ones are being added all the time. | ||
|
||
Providers are an essential part of Terraform. They allow Terraform to interact with a wide variety of cloud providers and other APIs. This makes Terraform a very versatile tool that can be used to manage a wide variety of infrastructure. | ||
|
||
|
||
## Different ways to configure providers in terraform | ||
|
||
There are three main ways to configure providers in Terraform: | ||
|
||
### In the root module | ||
|
||
This is the most common way to configure providers. The provider configuration block is placed in the root module of the Terraform configuration. This makes the provider configuration available to all the resources in the configuration. | ||
|
||
```hcl | ||
provider "aws" { | ||
region = "us-east-1" | ||
} | ||
resource "aws_instance" "example" { | ||
ami = "ami-0123456789abcdef0" | ||
instance_type = "t2.micro" | ||
} | ||
``` | ||
|
||
### In a child module | ||
|
||
You can also configure providers in a child module. This is useful if you want to reuse the same provider configuration in multiple resources. | ||
|
||
```hcl | ||
module "aws_vpc" { | ||
source = "./aws_vpc" | ||
providers = { | ||
aws = aws.us-west-2 | ||
} | ||
} | ||
resource "aws_instance" "example" { | ||
ami = "ami-0123456789abcdef0" | ||
instance_type = "t2.micro" | ||
depends_on = [module.aws_vpc] | ||
} | ||
``` | ||
|
||
### In the required_providers block | ||
|
||
You can also configure providers in the required_providers block. This is useful if you want to make sure that a specific provider version is used. | ||
|
||
```hcl | ||
terraform { | ||
required_providers { | ||
aws = { | ||
source = "hashicorp/aws" | ||
version = "~> 3.79" | ||
} | ||
} | ||
} | ||
resource "aws_instance" "example" { | ||
ami = "ami-0123456789abcdef0" | ||
instance_type = "t2.micro" | ||
} | ||
``` | ||
|
||
The best way to configure providers depends on your specific needs. If you are only using a single provider, then configuring it in the root module is the simplest option. If you are using multiple providers, or if you want to reuse the same provider configuration in multiple resources, then configuring it in a child module is a good option. And if you want to make sure that a specific provider version is used, then configuring it in the required_providers block is the best option. |
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.