1.8 KiB
Terraform Workshop
What is Terraform
IaC (Infrastructure as Code) framework which enables programatic definition, deployment and management of infrastructure resources for cloud and on-premises in a declarative manner. It targets all major cloud platforms (GCP, AWS, Azure, DO etc.)
Why do We Need it
-
Standardization of deployment to ensure a consistent state
- Version control
- Deploying an additional clone env for testing
-
Easier auditability to improve quality and security
- Modular - reuse & ease of understanding
- Resource Graph (dependency graph + parallel execution when possible)
- Version control
-
Enables use of hardened deployment pipelines
-
Enables immutable infrastructure
Human-Readible Configuration Language
- HashiCorp Configuration Language (HCL) or JSON
provider "aws" {
region = "us-west-2"
}
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0" # Amazon Linux 2 AMI ID
instance_type = "t2.micro"
tags = {
Name = "HelloWorldEC2Instance"
}
}
output "instance_public_ip" {
value = aws_instance.example.public_ip
}
Workflow
-
Write your configuration file
-
Use the the
terraform plan
action to simulate deployment of resources and assess the outcome -
Use
terraform apply
to actually deploy resources
Exercise
-
Set up local credentials for your cloud platform of choice
-
Write a file that deploys an EC2 instance
-
Use
terraform plan
andterraform apply
in order to deploy the resource -
Remove the resource by updating your configuration file and using
terraform plan
andterraform apply
Extend Configuration
-
Add a VPC
-
Define security group that limits ingress and egress to port 22
-
Add SSH key(s) which may connect to the instance
Next Steps
- ...