Docker Terraform Amazon ECS: A Quick Intro To
Docker Terraform Amazon ECS: A Quick Intro To
Docker,
Terraform, and TERRAFORM
Amazon ECS
Amazon ECS
In this talk, we’ll show how to
deploy two apps:
A Rails Frontend and a
Sinatra Backend
Slides and code from this talk:
ybrikman.com/speaking
require 'sinatra'
get "/" do
"Hello, World!"
end
ybrikman.com
Co-founder of
Gruntwork
gruntwork.io
We offer DevOps
as a Service
gruntwork.io
And DevOps
as a Library
gruntwork.io
PAST LIVES
Author of
Hello,
Startup
hello-startup.net
And
Terraform:
Up & Running
terraformupandrunning.com
Outline
1. Docker
2. Terraform
3. ECS
4. Recap
Outline
1. Docker
2. Terraform
3. ECS
4. Recap
Docker allows you to build and
run code in containers
Containers are like lightweight
Virtual Machines (VMs)
Like an isolated process that
happens to be an entire OS
> docker run –it ubuntu bash
real 0m0.183s
user 0m0.009s
sys 0m0.014s
EXPOSE 4567
CMD ["ruby", "app.rb"]
EXPOSE 4567
CMD ["ruby", "app.rb"]
(...)
(...)
EXPOSE 3000
CMD ["rails", "start"]
sinatra_backend:
image: gruntwork/sinatra-backend
ports:
- "4567:4567"
sinatra_backend:
image: gruntwork/sinatra-backend
ports:
- "4567:4567"
ECS Tasks
ECS Cluster
ECS Overview
EC2 Instance
ECS Cluster
EC2 Instance
ECS Cluster
ECS Cluster
ECS Cluster
ECS Tasks
ECS Cluster
ECS Tasks
ECS Cluster
ECS Tasks
ECS Cluster
ECS Tasks
ECS Cluster
ECS Cluster
EC2 Instance
ECS Cluster
ECS Cluster
ECS Cluster
ECS Tasks
ECS Cluster
(...)
load_balancer {
elb_name = "${aws_elb.rails_frontend.id}"
container_name = "rails-frontend"
container_port = 3000
}
}
(...)
load_balancer {
elb_name = "${aws_elb.sinatra_backend.id}"
container_name = "sinatra-backend"
container_port = 4567
}
}
ECS Tasks
ECS Cluster
ECS Tasks
ECS Cluster
terraformupandrunning.com
For DevOps help, see
Gruntwork
gruntwork.io
Questions?