Terraform File Components - Providers, Resources, Variables
Terraform File Components - Providers, Resources, Variables
file
providers, resources
compo variables
nents
github.com/omerbsezer
Terraform file has different
terraform components to
init
define infrastructure for different purposes
linkedin.com/in/omerberatsezer
Providers
linkedin.com/in/omerberatsezer
Providers
for AWS
providers.tf
terraform {
required_providers {
aws = {
source = "hashicorp/aws" # <= AWS library
version = "~> 5.82.2" # <= AWS version
}
}
}
provider “aws” {
region = "us-east-1"
}
linkedin.com/in/omerberatsezer
Providers
for Azure
providers.tf
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm" # <= Azure library
version = "= 4.14.0" # <= version
}
}
}
provider “azurerm” {
features { }
}
linkedin.com/in/omerberatsezer
Providers
linkedin.com/in/omerberatsezer
Resources
linkedin.com/in/omerberatsezer
Resources
for AWS
resources.tf
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance
linkedin.com/in/omerberatsezer
Resources
for Azure
resources.tf
https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs
linkedin.com/in/omerberatsezer
Resources
https://registry.terraform.io/providers/hashicorp/google/latest/docs
linkedin.com/in/omerberatsezer
Variables
(string)
variable "instance_type" {
type = string # <= type string
description = "EC2 Instance Type"
}
output "instance_type_output" {
value = var.instance_type
}
linkedin.com/in/omerberatsezer
Variables
(number)
variables.tfvars
variable "instance_count" {
type = number # <= type number
default = 3
}
output "instance_count_output" {
value = var.instance_count
}
linkedin.com/in/omerberatsezer
Variables
(bool)
variables.tfvars
variable "enable_instance" {
type = bool
default = true
}
output "enable_instance_output" {
value = var.enable_instance
}
linkedin.com/in/omerberatsezer
Variables
(list)
variables.tfvars
variable "availability_zones" {
type = list(string)
default = ["us-east-1a", "us-east-1b", "us-east-1c" ]
}
output "availability_zones_output" {
value = var.availability_zones
}
linkedin.com/in/omerberatsezer
Variables
(tuple)
variables.tfvars
variable "instance_config" {
type = tuple([string, string])
default = ["t2.micro", "ami-0c55b159cbfafe1f0" ]
}
output "instance_config_output" {
value = var.instance_config
}
linkedin.com/in/omerberatsezer
Variables
(map)
variables.tfvars
variable "instance_config" {
type = map(string)
default = {
instance_type = "t2.micro"
ami_id = "ami-0c55b159cbfafe1f0"
}
}
resource "aws_instance" "example" {
ami = var.instance_config["ami_id"]
instance_type = var.instance_config["instance_type"]
}
linkedin.com/in/omerberatsezer
Variables
linkedin.com/in/omerberatsezer
linkedin.com/in/omerberatsezer
linkedin.com/in/omerberatsezer
user@terraform:$ ################################
https://github.com/omerbsezer
user@terraform:$ #################################
linkedin.com/in/omerberatsezer