Compare commits
No commits in common. "terraform-workshop" and "master" have entirely different histories.
terraform-
...
master
|
@ -1,92 +0,0 @@
|
||||||
# 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` and `terraform apply` in order to deploy the resource
|
|
||||||
|
|
||||||
* Remove the resource by updating your configuration file and using `terraform plan` and `terraform 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
|
|
||||||
|
|
||||||
* ...
|
|
||||||
|
|
Loading…
Reference in New Issue