SlideShare a Scribd company logo
Automa'ng  the    
Modern  Datacenter
@mitchellh
Mitchell  Hashimoto
Powering  the  so9ware-­‐managed  datacenter.
HashiCorp
hashicorp.com
TIAD : Automating the modern datacenter
TIAD : Automating the modern datacenter
The  Modern  Datacenter
Single  Server
Datacenter
Server
Mul'-­‐Server
Datacenter
Server Server
ServerServer
Virtualiza'on
Datacenter
Server Server
VM VM
VM VM
VM VM
VM VM
Containeriza'on
Datacenter
Server Server
VM
VMVM
VM
VM
VMVM
Service  Prolifera'on
Datacenter
Server Server Server
Server Server Server
Server Server Server
DNS
Database
CDN
Etc…
• Hybrid  cloud:  Physical  datacenter  vs.  Cloud  provider  
• Mul'-­‐paradigm:  Physical,  virtual,  container  
• IaaS,  PaaS,  SaaS  depending  on  the  app  
• Opera'ng  systems:  Windows,  Linux,  Mac,  Other  
• Realis'cally  a  mixture  of  everything  just  shown
But…  why?
Common  Goal:  Efficiently  deliver  and  
maintain  applica9ons.
Applica'on  Delivery
• Consistent  
• Shareable  
• Readily  Available  
• High  producCon  

parity.
• Start  and  configure  
servers  /  services  
• Deploy  and  run  
applicaCon
• Update  servers  or  
applicaCons  
• Reconfigure,  feature  
flag  
• Monitor  health  
• Orchestrate  
complex  changes
Development Deployment Maintenance
HashiCorp’s  Open  Source  Tools
Development Deployment Maintenance
Taming  the  Datacenter
Deployment  +  Maintenance
Deployment  +  Maintenance
1. Acquisi'on  
2. Provision  
3. Update  
4. Destroy
Historically
• Servers:  Days,  weeks  
• Provisioning:  Hours,  days  
• SaaS:  <didn’t  exist>
Today
• Servers:  Minutes  
• Provisioning:  Minutes  
• SaaS:  Minutes
Historically
• Rela'vely  fixed  set  of  servers  
• Fewer  applica'ons  to  deploy  
• Fewer  SaaS  
• Less  demanding  web  traffic
Today
• Poten'ally  elas'c  set  of  servers  of  varying  sizes  
• Push  towards  SoA  
• SaaS  for  everything  
• More  internet  connected  devices  than  ever  before  =>  higher  traffic  
What  do  we  need?
• Zero  to  deployed  in  one  command  
• Resiliency  through  distributed  systems  
• Autoscaling,  autohealing  
• Beder  teamwork  through  codified  knowledge
But  how?  Automa6on.
HashiCorp’s  Open  Source  Tools
Development Deployment Maintenance
Automa9ng  the  Datacenter
Deployment  +  Maintenance
terraform.io
Build,  combine,  and  launch  
infrastructure  safely  and  efficiently.
terraform.io
What  If  I  asked  you  to…  
• create  a  completely  isolated  second  environment  to  run  an  applica'on  
(staging,  QA,  dev,  etc.)?  
• deploy  a  complex  new  applica'on?    
• update  an  exis'ng  complex  applica'on?    
• document  how  our  infrastructure  is  architected?    
• delegate  some  ops  to  smaller  teams?  (Core  IT  vs.  App  IT)
What  If  I  asked  you  to…  
• create  a  completely  isolated  second  environment  to  run  an  applica'on  
(staging,  QA,  dev,  etc.)?  One  command.  
• deploy  a  complex  new  applica'on?  Code  it,  diff  it,  pull  request.  
• update  an  exis'ng  complex  applica'on?  Code  it,  diff  it,  pull  request.  
• document  how  our  infrastructure  is  architected?  Read  the  code.  
• delegate  some  ops  to  smaller  teams?  (Core  IT  vs.  App  IT)  Modules,  
code  reviews.
But  how?
Terraform
• Create  infrastructure  with  code:  servers,  load  balancers,  databases,  email  
providers,  etc.    
• One  command  to  create,  update  infrastructure.  
• Preview  changes  to  infrastructure,  save  diffs.    
• Use  code  +  diffs  to  treat  infrastructure  change  just  like  code  change:  
make  a  pull  request,  show  the  differences,  review  it,  and  accept.    
• Break  infrastructure  into  modules  to  encourage/allow  teamwork  without  
risking  stability.  
Infrastructure  as  Code
DigitalOcean  Droplet  with  DNS  in  DNSimple
resource "digitalocean_droplet" "web" {
name = "tf-web"
size = "512mb"
image = "centos-5-8-x32"
region = "sfo1"
}
resource "dnsimple_record" "hello" {
domain = "example.com"
name = "test"
value = "${digitalocean_droplet.web.ipv4_address}"
type = "A"
}
Infrastructure  as  Code
DigitalOcean  Droplet  with  DNS  in  DNSimple
resource "digitalocean_droplet" "web" {
name = "tf-web"
size = "512mb"
image = "centos-5-8-x32"
region = "sfo1"
}
resource "dnsimple_record" "hello" {
domain = "example.com"
name = "test"
value = "${digitalocean_droplet.web.ipv4_address}"
type = "A"
}
Infrastructure  as  Code
DigitalOcean  Droplet  with  DNS  in  DNSimple
resource "digitalocean_droplet" "web" {
name = "tf-web"
size = "512mb"
image = "centos-5-8-x32"
region = "sfo1"
}
resource "dnsimple_record" "hello" {
domain = "example.com"
name = "test"
value = "${digitalocean_droplet.web.ipv4_address}"
type = "A"
}
Infrastructure  as  Code
DigitalOcean  Droplet  with  DNS  in  DNSimple
resource "digitalocean_droplet" "web" {
name = "tf-web"
size = "512mb"
image = "centos-5-8-x32"
region = "sfo1"
}
resource "dnsimple_record" "hello" {
domain = "example.com"
name = "test"
value = "${digitalocean_droplet.web.ipv4_address}"
type = "A"
}
Infrastructure  as  Code
• Human  friendly  config,  JSON  compa'ble  
• Text  format  makes  it  version-­‐able,  VCS-­‐friendly  
• Declara've  
• Infrastructure  as  code  on  a  level  not  before  possible
Zero  to  Done  in  One  Command
Terraform  Apply
$ terraform apply
digitalocean_droplet.web: Creating…
dnsimple_record.hello: Creating…
Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
Zero  to  Done  in  One  Command
• Idempotent  
• Highly  parallelized  
• Will  only  do  what  the  plan  says
Safely  Change/Iterate
Terraform  Plan
+ digitalocean_droplet.web
backups: "" => "<computed>"
image: "" => "centos-5-8-x32"
ipv4_address: "" => "<computed>"
ipv4_address_private: "" => "<computed>"
name: "" => "tf-web"
private_networking: "" => "<computed>"
region: "" => "sfo1"
size: "" => "512mb"
status: "" => "<computed>"
+ dnsimple_record.hello
domain: "" => "example.com"
domain_id: "" => "<computed>"
hostname: "" => "<computed>"
name: "" => "test"
priority: "" => "<computed>"
ttl: "" => "<computed>"
type: "" => "A"
value: "" => "${digitalocean_droplet.web.ipv4_address}"
Safely  Change/Iterate
Terraform  Plan
+ digitalocean_droplet.web
backups: "" => "<computed>"
image: "" => "centos-5-8-x32"
ipv4_address: "" => "<computed>"
ipv4_address_private: "" => "<computed>"
name: "" => "tf-web"
private_networking: "" => "<computed>"
region: "" => "sfo1"
size: "" => "512mb"
status: "" => "<computed>"
+ dnsimple_record.hello
domain: "" => "example.com"
domain_id: "" => "<computed>"
hostname: "" => "<computed>"
name: "" => "test"
priority: "" => "<computed>"
ttl: "" => "<computed>"
type: "" => "A"
value: "" => "${digitalocean_droplet.web.ipv4_address}"
Safely  Change/Iterate
Terraform  Plan
+ digitalocean_droplet.web
backups: "" => "<computed>"
image: "" => "centos-5-8-x32"
ipv4_address: "" => "<computed>"
ipv4_address_private: "" => "<computed>"
name: "" => "tf-web"
private_networking: "" => "<computed>"
region: "" => "sfo1"
size: "" => "512mb"
status: "" => "<computed>"
+ dnsimple_record.hello
domain: "" => "example.com"
domain_id: "" => "<computed>"
hostname: "" => "<computed>"
name: "" => "test"
priority: "" => "<computed>"
ttl: "" => "<computed>"
type: "" => "A"
value: "" => "${digitalocean_droplet.web.ipv4_address}"
Safely  Change/Iterate
• Plan  shows  you  what  will  happen  
• Save  plans  to  guarantee  what  will  happen  
• Plans  show  reasons  for  certain  ac'ons  (such  as  re-­‐create)  
• Prior  to  Terraform:  Operators  had  to  “divine”  change  ordering,  
paralleliza'on,  rollout  effect.
Workflow
• Make  code  changes  
• `terraform  plan`  
• Pull  request  with  code  changes  +  plan  to  make  changes  
• Review  and  merge  
• `terraform  apply  pr1234.pplan`
Knowledge  Sharing:  Modules
Terraform  Plan
module “consul” {
source = “github.com/hashicorp/consul/terraform/aws”
servers = 3
}
resource "dnsimple_record" "hello" {
domain = "example.com"
name = "test"
value = “${module.consul.server_address}”
type = "A"
}
Knowledge  Sharing:  Modules
Terraform  Plan
module “consul” {
source = “github.com/hashicorp/consul/terraform/aws”
servers = 3
}
resource "dnsimple_record" "hello" {
domain = "example.com"
name = "test"
value = “${module.consul.server_address}”
type = "A"
}
Knowledge  Sharing:  Modules
• Self-­‐contained  infrastructure  components  
• Allows  delega'on  of  responsibility  to  mul'ple  teams  
• Some  teams  create  modules,  other  teams  consume  modules
Terraform
• Zero  to  fully  deployed  in  one  command  
• Change/maintain  infrastructure  predictably  
• Teamwork-­‐oriented  workflow  to  infrastructure  
• Goal:  Sta'c  deploy/provisioning  of  infrastructure.  Real'me  monitoring,  
discovery,  configura'on  provided  by  Consul  (discussed  next).
consul.io
Service  discovery,  configura9on,  and  
orchestra9on  made  easy.  Distributed,  
highly  available,  and  datacenter-­‐aware.
Ques'ons  that  Consul  Answers
• Where  is  the  service  foo?  (ex.  Where  is  the  database?)  
• What  is  the  health  status  of  service  foo?  
• What  is  the  health  status  of  the  machine/node  foo?  
• What  is  the  list  of  all  currently  running  machines?  
• What  is  the  configura'on  of  service  foo?  
• Is  anyone  else  currently  performing  opera'on  foo?  
Service  Discovery  
Where  is  service  foo?
Service  Discovery
Service  Discovery  via  DNS  or  HTTP
$ dig web-frontend.service.consul. +short
10.0.3.89
10.0.1.46
$ curl http://localhost:8500/v1/catalog/service/web-frontend
[{
“Node”: “node-e818f1”,
“Address”: “10.0.3.89”,
“ServiceID”: “web-frontend”,
…
}]
Service  Discovery
• DNS  is  legacy-­‐friendly.  No  applica'on  changes  required.  
• HTTP  returns  rich  metadata.  
• Discover  both  internal  and  external  services  

(such  as  service  providers)
Failure  Detection  
Is  service  foo  healthy/available?
Failure  Detec'on
Failure  Detec'on
• DNS  won’t  return  non-­‐healthy  services  or  nodes.  
• HTTP  has  endpoints  to  list  health  state  of  catalog.
Key/Value  Storage  
What  is  the  config  of  service  foo?
Key/Value  Storage
Serng  and  Gerng  a  Key
$ curl –X PUT –d ‘bar’ http://localhost:8500/v1/kv/foo
true
$ curl http://localhost:8500/v1/kv/foo?raw
bar
Key/Value  Storage
• Highly  available  storage  of  configura'on.  
• Turn  knobs  without  big  configura'on  management  process.  
• Watch  keys  (long  poll)  for  changes  
• ACLs  on  key/value  to  protect  sensi've  informa'on
Multi-­‐Datacenter
Mul'-­‐Datacenter
Service  Discovery
$ dig web-frontend.singapore.service.consul. +short
10.3.3.33
10.3.1.18
$ dig web-frontend.germany.service.consul. +short
10.7.3.41
10.7.1.76
Mul'-­‐Datacenter
Serng  and  Gerng  a  Key
$ curl http://localhost:8500/v1/kv/foo?raw&dc=asia
true
$ curl http://localhost:8500/v1/kv/foo?raw&dc=eu
false
Mul'-­‐Datacenter
• Local  by  default  
• Can  query  other  datacenters  however  you  may  need  to  
• Can  view  all  datacenters  within  one  UI
Orchestration  
Events,  Exec,  Watches
Events,  Exec,  Watches
Dispatching  Custom  Events
$ consul event deploy 6DF7FE
…
$ consul watch -type event -name deploy /usr/bin/deploy.sh
…
$ consul exec -service web /usr/bin/deploy.sh
…
Events,  Exec,  Watches
• Powerful  orchestra'on  tools  
• Pros/cons  to  each  approach,  use  the  right  tool  for  the  job  
• All  approaches  proven  to  scale  to  thousands  of  agents
Easiest  Distributed  System  Deploy
Deploy  Consul  to  AWS
$ terraform apply github.com/hashicorp/consul/terraform/aws
var.servers
The number of Consul servers to launch.
Default: 3
Enter a value: 3
…
Easiest  Distributed  System  Deploy
Deploy  Consul  to  AWS  (manually)
$ consul agent -atlas-join 
-atlas=USERNAME/NAME 
-atlas-token=API_TOKEN
Workflow
• Server  is  started  (via  Terraform,  etc.)  
• Consul  agent  is  started,  joins  cluster  
• Star'ng  services  (ex.  web  app)  query  Consul  for  configura'on  
• Once  healthy,  services  are  discovered  via  DNS!
Opera'onal  Bullet  Points
• Leader  elec'on  via  Ra9  
• Gossip  protocol  for  aliveness  
• Three  consistency  models:  default,  consistent,  and  stale  
• Encryp'on,  ACLs  available  
• Real  world  usage  to  thousands  of  agents  per  datacenter
Thanks!
hashicorp.com

More Related Content

PDF
TIAD - DYI: A simple orchestrator built step by step
The Incredible Automation Day
 
PDF
Carlos Conde : AWS Game Days - TIAD Paris
The Incredible Automation Day
 
PDF
TIAD : Automating the aplication lifecycle
The Incredible Automation Day
 
PDF
BlaBlaCar and infrastructure automation
sinfomicien
 
PDF
Docker: automation for the rest of us
Jérôme Petazzoni
 
PPTX
Automated Deployments with Ansible
Martin Etmajer
 
PDF
Mitchell Hashimoto, HashiCorp
Ontico
 
PPTX
Scaling Your App With Docker Swarm using Terraform, Packer on Openstack
Bobby DeVeaux, DevOps Consultant
 
TIAD - DYI: A simple orchestrator built step by step
The Incredible Automation Day
 
Carlos Conde : AWS Game Days - TIAD Paris
The Incredible Automation Day
 
TIAD : Automating the aplication lifecycle
The Incredible Automation Day
 
BlaBlaCar and infrastructure automation
sinfomicien
 
Docker: automation for the rest of us
Jérôme Petazzoni
 
Automated Deployments with Ansible
Martin Etmajer
 
Mitchell Hashimoto, HashiCorp
Ontico
 
Scaling Your App With Docker Swarm using Terraform, Packer on Openstack
Bobby DeVeaux, DevOps Consultant
 

What's hot (20)

PDF
Masterless Puppet Using AWS S3 Buckets and IAM Roles
Malcolm Duncanson, CISSP
 
PPTX
Reusable, composable, battle-tested Terraform modules
Yevgeniy Brikman
 
PDF
Infrastructure as code
Axel Quack
 
PDF
Ansible new paradigms for orchestration
Paolo Tonin
 
PDF
How to test infrastructure code: automated testing for Terraform, Kubernetes,...
Yevgeniy Brikman
 
PDF
Play Framework + Docker + CircleCI + AWS + EC2 Container Service
Josh Padnick
 
PDF
Container Days Boston - Kubernetes in production
Mike Splain
 
PDF
Using Docker with Puppet - PuppetConf 2014
Puppet
 
PDF
Achieving Continuous Delivery: An Automation Story
jimi-c
 
PDF
AWS DevOps - Terraform, Docker, HashiCorp Vault
Grzegorz Adamowicz
 
PDF
Clocker - The Docker Cloud Maker
Andrew Kennedy
 
PDF
Docker at Shopify: From This-Looks-Fun to Production by Simon Eskildsen (Shop...
Docker, Inc.
 
PDF
Ninja, Choose Your Weapon!
Anton Weiss
 
PPTX
An intro to Docker, Terraform, and Amazon ECS
Yevgeniy Brikman
 
ODP
Puppet and Apache CloudStack
Puppet
 
PDF
Kubernetes Boston — Custom High Availability of Kubernetes
Mike Splain
 
PPTX
Scaling Development Environments with Docker
Docker, Inc.
 
PDF
Extend and build on Kubernetes
Stefan Schimanski
 
PDF
Ansible Introduction
Robert Reiz
 
PPTX
Zero Code Multi-Cloud Automation with Ansible and Terraform
Avi Networks
 
Masterless Puppet Using AWS S3 Buckets and IAM Roles
Malcolm Duncanson, CISSP
 
Reusable, composable, battle-tested Terraform modules
Yevgeniy Brikman
 
Infrastructure as code
Axel Quack
 
Ansible new paradigms for orchestration
Paolo Tonin
 
How to test infrastructure code: automated testing for Terraform, Kubernetes,...
Yevgeniy Brikman
 
Play Framework + Docker + CircleCI + AWS + EC2 Container Service
Josh Padnick
 
Container Days Boston - Kubernetes in production
Mike Splain
 
Using Docker with Puppet - PuppetConf 2014
Puppet
 
Achieving Continuous Delivery: An Automation Story
jimi-c
 
AWS DevOps - Terraform, Docker, HashiCorp Vault
Grzegorz Adamowicz
 
Clocker - The Docker Cloud Maker
Andrew Kennedy
 
Docker at Shopify: From This-Looks-Fun to Production by Simon Eskildsen (Shop...
Docker, Inc.
 
Ninja, Choose Your Weapon!
Anton Weiss
 
An intro to Docker, Terraform, and Amazon ECS
Yevgeniy Brikman
 
Puppet and Apache CloudStack
Puppet
 
Kubernetes Boston — Custom High Availability of Kubernetes
Mike Splain
 
Scaling Development Environments with Docker
Docker, Inc.
 
Extend and build on Kubernetes
Stefan Schimanski
 
Ansible Introduction
Robert Reiz
 
Zero Code Multi-Cloud Automation with Ansible and Terraform
Avi Networks
 
Ad

Viewers also liked (9)

PPTX
Concurrency presents Modern Datacenter
Jake Borzym
 
PDF
Tiad - Docker: Automation for the rest of us
The Incredible Automation Day
 
PDF
Modern Elastic Datacenter Architecture
Weston Bassler
 
PDF
The Cloud for Modern Business
BizTalk360
 
PDF
Cloud: From Unmanned Data Center to Algorithmic Economy using Openstack
Andrew Yongjoon Kong
 
PDF
The Evolution of the Datacenter
StackIQ
 
PDF
PaaS를 이용한 No Ops 개발
Chiung Choi
 
PDF
openstack, devops and people
Andrew Yongjoon Kong
 
PDF
[OpenStack Day in Korea 2015] Keynote 2 - Leveraging OpenStack to Realize the...
OpenStack Korea Community
 
Concurrency presents Modern Datacenter
Jake Borzym
 
Tiad - Docker: Automation for the rest of us
The Incredible Automation Day
 
Modern Elastic Datacenter Architecture
Weston Bassler
 
The Cloud for Modern Business
BizTalk360
 
Cloud: From Unmanned Data Center to Algorithmic Economy using Openstack
Andrew Yongjoon Kong
 
The Evolution of the Datacenter
StackIQ
 
PaaS를 이용한 No Ops 개발
Chiung Choi
 
openstack, devops and people
Andrew Yongjoon Kong
 
[OpenStack Day in Korea 2015] Keynote 2 - Leveraging OpenStack to Realize the...
OpenStack Korea Community
 
Ad

Similar to TIAD : Automating the modern datacenter (20)

PDF
OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...
NETWAYS
 
PPTX
Orchestrating Docker with Terraform and Consul by Mitchell Hashimoto
Docker, Inc.
 
PDF
Atmosphere Conference 2015: Taming the Modern Datacenter
PROIDEA
 
PDF
Terraform In Action Meap V10 Meap Scott Winkler
heyenpardis0
 
PDF
Oracle Cloud - Infrastruktura jako kód
MarketingArrowECS_CZ
 
PDF
OSDC 2017 | Taming the Modern Data Center by Seth Vargo
NETWAYS
 
PDF
OSDC 2017 | Modern Secrets Management with Vault by Seth Vargo
NETWAYS
 
PDF
OSDC 2017 - Seth Vargo - Taming the modern data center
NETWAYS
 
PDF
A case study why Zoominfo uses Terraform Cloud in high-scale environment.
Tal Hibner
 
PDF
Best Practices of Infrastructure as Code with Terraform
DevOps.com
 
PDF
Infrastructure as Code with Terraform
Pedro J. Molina
 
PDF
Infrastructure as Code with Terraform
Tim Berry
 
PPTX
Infrastructure as Code with Terraform.pptx
Samuel862293
 
PPTX
Demystifying Terraform 012
Stenio Ferreira
 
PPTX
Infrastructure as Code Presentation v5.pptx
YASHSRIVASTAVA811639
 
PDF
Building infrastructure with Terraform (Google)
Radek Simko
 
PDF
Introduce to Terraform
Samsung Electronics
 
PDF
Terraform Definition, Working and Challenges it Overcomes
Eyeglass Repair USA
 
PDF
What Is Terraform
AMELIAOLIVIA2
 
PDF
What is Terraform?
BelleHenry
 
OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...
NETWAYS
 
Orchestrating Docker with Terraform and Consul by Mitchell Hashimoto
Docker, Inc.
 
Atmosphere Conference 2015: Taming the Modern Datacenter
PROIDEA
 
Terraform In Action Meap V10 Meap Scott Winkler
heyenpardis0
 
Oracle Cloud - Infrastruktura jako kód
MarketingArrowECS_CZ
 
OSDC 2017 | Taming the Modern Data Center by Seth Vargo
NETWAYS
 
OSDC 2017 | Modern Secrets Management with Vault by Seth Vargo
NETWAYS
 
OSDC 2017 - Seth Vargo - Taming the modern data center
NETWAYS
 
A case study why Zoominfo uses Terraform Cloud in high-scale environment.
Tal Hibner
 
Best Practices of Infrastructure as Code with Terraform
DevOps.com
 
Infrastructure as Code with Terraform
Pedro J. Molina
 
Infrastructure as Code with Terraform
Tim Berry
 
Infrastructure as Code with Terraform.pptx
Samuel862293
 
Demystifying Terraform 012
Stenio Ferreira
 
Infrastructure as Code Presentation v5.pptx
YASHSRIVASTAVA811639
 
Building infrastructure with Terraform (Google)
Radek Simko
 
Introduce to Terraform
Samsung Electronics
 
Terraform Definition, Working and Challenges it Overcomes
Eyeglass Repair USA
 
What Is Terraform
AMELIAOLIVIA2
 
What is Terraform?
BelleHenry
 

More from The Incredible Automation Day (20)

PDF
A smooth migration to Docker focusing on build pipelines - TIAD Camp Docker
The Incredible Automation Day
 
PDF
Docker in real life and in the Cloud - TIAD Camp Docker
The Incredible Automation Day
 
PDF
Orchestrating Docker in production - TIAD Camp Docker
The Incredible Automation Day
 
PDF
Monitoring in 2017 - TIAD Camp Docker
The Incredible Automation Day
 
PDF
Strategy, planning and governance for enterprise deployments of containers - ...
The Incredible Automation Day
 
PPTX
Cluster SQL - TIAD Camp Microsoft Cloud Readiness
The Incredible Automation Day
 
PPTX
Build the VPC - TIAD Camp Microsoft Cloud Readiness
The Incredible Automation Day
 
PPTX
Opening Keynote - TIAD Camp Microsoft Cloud Readiness
The Incredible Automation Day
 
PPTX
Replatforming - TIAD Camp Microsoft Cloud Readiness
The Incredible Automation Day
 
PPTX
GitLab CI Packer - TIAD Camp Microsoft Cloud Readiness
The Incredible Automation Day
 
PPTX
Active Directory - TIAD Camp Microsoft Cloud Readiness
The Incredible Automation Day
 
PPTX
Application Stack - TIAD Camp Microsoft Cloud Readiness
The Incredible Automation Day
 
PPTX
Keynote TIAD Camp Serverless
The Incredible Automation Day
 
PPTX
From AIX to Zero-ops by Pierre Baillet
The Incredible Automation Day
 
PDF
Serverless low cost analytics by Adways y Audric Guigon
The Incredible Automation Day
 
PPTX
Operationnal challenges behind Serverless architectures by Laurent Bernaille
The Incredible Automation Day
 
PDF
Build chatbots with api.ai and Google cloud functions
The Incredible Automation Day
 
PDF
Real time serverless data pipelines on AWS
The Incredible Automation Day
 
PPTX
Azure functions
The Incredible Automation Day
 
PPTX
TIAD 2016 - Beyond windowsautomation
The Incredible Automation Day
 
A smooth migration to Docker focusing on build pipelines - TIAD Camp Docker
The Incredible Automation Day
 
Docker in real life and in the Cloud - TIAD Camp Docker
The Incredible Automation Day
 
Orchestrating Docker in production - TIAD Camp Docker
The Incredible Automation Day
 
Monitoring in 2017 - TIAD Camp Docker
The Incredible Automation Day
 
Strategy, planning and governance for enterprise deployments of containers - ...
The Incredible Automation Day
 
Cluster SQL - TIAD Camp Microsoft Cloud Readiness
The Incredible Automation Day
 
Build the VPC - TIAD Camp Microsoft Cloud Readiness
The Incredible Automation Day
 
Opening Keynote - TIAD Camp Microsoft Cloud Readiness
The Incredible Automation Day
 
Replatforming - TIAD Camp Microsoft Cloud Readiness
The Incredible Automation Day
 
GitLab CI Packer - TIAD Camp Microsoft Cloud Readiness
The Incredible Automation Day
 
Active Directory - TIAD Camp Microsoft Cloud Readiness
The Incredible Automation Day
 
Application Stack - TIAD Camp Microsoft Cloud Readiness
The Incredible Automation Day
 
Keynote TIAD Camp Serverless
The Incredible Automation Day
 
From AIX to Zero-ops by Pierre Baillet
The Incredible Automation Day
 
Serverless low cost analytics by Adways y Audric Guigon
The Incredible Automation Day
 
Operationnal challenges behind Serverless architectures by Laurent Bernaille
The Incredible Automation Day
 
Build chatbots with api.ai and Google cloud functions
The Incredible Automation Day
 
Real time serverless data pipelines on AWS
The Incredible Automation Day
 
TIAD 2016 - Beyond windowsautomation
The Incredible Automation Day
 

Recently uploaded (20)

PDF
Mathematics Grade 11 Term 1 Week 1_2021.pdf
MalepyaneMokgatle
 
PPTX
GAMABA AWARDEES GINAW BILOG AND SALINTA MONON BY REYMART
purezagambala458
 
PPT
strucure of protein geomics for new .ppt
RakeshKumar508211
 
PPTX
milgram study as level psychology core study (social approach)
dinhminhthu1405
 
PDF
Pesticides | Natural Pesticides | Methods of control | Types of pesticides | ...
Home
 
PPTX
A Power Point Presentaion of 2 test match
katarapiyush21
 
PPTX
PHILIPPINE LITERATURE DURING SPANISH ERA
AllizaJoyMendigoria
 
PPTX
DPIC Assingment_1.pptx.pptx for presentation
yashwork2607
 
PDF
Helpful but Terrifying: Older Adults' Perspectives of AI in Remote Healthcare...
Daniela Napoli
 
PPTX
AMFI - Investor Awareness Presentation.pptx
ssuser89d308
 
PPTX
“Mastering Digital Professionalism: Your Online Image Matters”
ramjankhalyani
 
PPTX
THE school_exposure_presentation[1].pptx
sayanmondal3500
 
PPTX
Introductions to artificial intelligence
rakshjain77
 
PPTX
Ocean_and_Freshwater_Awareness_Presentation.pptx
Suhaira9
 
PPTX
Building a Strong and Ethical Digital Professional Identity
khalyaniramjan49
 
PDF
Something I m waiting to tell you By Shravya Bhinder
patelprushti2007
 
PPTX
Influencing Factors of Business Environment of Vegetables Selling Business
auntorkhastagirpujan
 
PPTX
Remote Healthcare Technology Use Cases and the Contextual Integrity of Olde...
Daniela Napoli
 
PDF
Media Training for Authors: Producing Videos & Nailing Interviews
Paula Rizzo
 
PPTX
Working-with-HTML-CSS-and-JavaScript.pptx
badalsenma5
 
Mathematics Grade 11 Term 1 Week 1_2021.pdf
MalepyaneMokgatle
 
GAMABA AWARDEES GINAW BILOG AND SALINTA MONON BY REYMART
purezagambala458
 
strucure of protein geomics for new .ppt
RakeshKumar508211
 
milgram study as level psychology core study (social approach)
dinhminhthu1405
 
Pesticides | Natural Pesticides | Methods of control | Types of pesticides | ...
Home
 
A Power Point Presentaion of 2 test match
katarapiyush21
 
PHILIPPINE LITERATURE DURING SPANISH ERA
AllizaJoyMendigoria
 
DPIC Assingment_1.pptx.pptx for presentation
yashwork2607
 
Helpful but Terrifying: Older Adults' Perspectives of AI in Remote Healthcare...
Daniela Napoli
 
AMFI - Investor Awareness Presentation.pptx
ssuser89d308
 
“Mastering Digital Professionalism: Your Online Image Matters”
ramjankhalyani
 
THE school_exposure_presentation[1].pptx
sayanmondal3500
 
Introductions to artificial intelligence
rakshjain77
 
Ocean_and_Freshwater_Awareness_Presentation.pptx
Suhaira9
 
Building a Strong and Ethical Digital Professional Identity
khalyaniramjan49
 
Something I m waiting to tell you By Shravya Bhinder
patelprushti2007
 
Influencing Factors of Business Environment of Vegetables Selling Business
auntorkhastagirpujan
 
Remote Healthcare Technology Use Cases and the Contextual Integrity of Olde...
Daniela Napoli
 
Media Training for Authors: Producing Videos & Nailing Interviews
Paula Rizzo
 
Working-with-HTML-CSS-and-JavaScript.pptx
badalsenma5
 

TIAD : Automating the modern datacenter

  • 1. Automa'ng  the     Modern  Datacenter
  • 3. Powering  the  so9ware-­‐managed  datacenter. HashiCorp hashicorp.com
  • 11. Service  Prolifera'on Datacenter Server Server Server Server Server Server Server Server Server DNS Database CDN
  • 12. Etc… • Hybrid  cloud:  Physical  datacenter  vs.  Cloud  provider   • Mul'-­‐paradigm:  Physical,  virtual,  container   • IaaS,  PaaS,  SaaS  depending  on  the  app   • Opera'ng  systems:  Windows,  Linux,  Mac,  Other   • Realis'cally  a  mixture  of  everything  just  shown
  • 14. Common  Goal:  Efficiently  deliver  and   maintain  applica9ons.
  • 15. Applica'on  Delivery • Consistent   • Shareable   • Readily  Available   • High  producCon  
 parity. • Start  and  configure   servers  /  services   • Deploy  and  run   applicaCon • Update  servers  or   applicaCons   • Reconfigure,  feature   flag   • Monitor  health   • Orchestrate   complex  changes Development Deployment Maintenance
  • 16. HashiCorp’s  Open  Source  Tools Development Deployment Maintenance
  • 18. Deployment  +  Maintenance 1. Acquisi'on   2. Provision   3. Update   4. Destroy
  • 19. Historically • Servers:  Days,  weeks   • Provisioning:  Hours,  days   • SaaS:  <didn’t  exist>
  • 20. Today • Servers:  Minutes   • Provisioning:  Minutes   • SaaS:  Minutes
  • 21. Historically • Rela'vely  fixed  set  of  servers   • Fewer  applica'ons  to  deploy   • Fewer  SaaS   • Less  demanding  web  traffic
  • 22. Today • Poten'ally  elas'c  set  of  servers  of  varying  sizes   • Push  towards  SoA   • SaaS  for  everything   • More  internet  connected  devices  than  ever  before  =>  higher  traffic  
  • 23. What  do  we  need? • Zero  to  deployed  in  one  command   • Resiliency  through  distributed  systems   • Autoscaling,  autohealing   • Beder  teamwork  through  codified  knowledge
  • 25. HashiCorp’s  Open  Source  Tools Development Deployment Maintenance
  • 28. Build,  combine,  and  launch   infrastructure  safely  and  efficiently. terraform.io
  • 29. What  If  I  asked  you  to…   • create  a  completely  isolated  second  environment  to  run  an  applica'on   (staging,  QA,  dev,  etc.)?   • deploy  a  complex  new  applica'on?     • update  an  exis'ng  complex  applica'on?     • document  how  our  infrastructure  is  architected?     • delegate  some  ops  to  smaller  teams?  (Core  IT  vs.  App  IT)
  • 30. What  If  I  asked  you  to…   • create  a  completely  isolated  second  environment  to  run  an  applica'on   (staging,  QA,  dev,  etc.)?  One  command.   • deploy  a  complex  new  applica'on?  Code  it,  diff  it,  pull  request.   • update  an  exis'ng  complex  applica'on?  Code  it,  diff  it,  pull  request.   • document  how  our  infrastructure  is  architected?  Read  the  code.   • delegate  some  ops  to  smaller  teams?  (Core  IT  vs.  App  IT)  Modules,   code  reviews.
  • 32. Terraform • Create  infrastructure  with  code:  servers,  load  balancers,  databases,  email   providers,  etc.     • One  command  to  create,  update  infrastructure.   • Preview  changes  to  infrastructure,  save  diffs.     • Use  code  +  diffs  to  treat  infrastructure  change  just  like  code  change:   make  a  pull  request,  show  the  differences,  review  it,  and  accept.     • Break  infrastructure  into  modules  to  encourage/allow  teamwork  without   risking  stability.  
  • 33. Infrastructure  as  Code DigitalOcean  Droplet  with  DNS  in  DNSimple resource "digitalocean_droplet" "web" { name = "tf-web" size = "512mb" image = "centos-5-8-x32" region = "sfo1" } resource "dnsimple_record" "hello" { domain = "example.com" name = "test" value = "${digitalocean_droplet.web.ipv4_address}" type = "A" }
  • 34. Infrastructure  as  Code DigitalOcean  Droplet  with  DNS  in  DNSimple resource "digitalocean_droplet" "web" { name = "tf-web" size = "512mb" image = "centos-5-8-x32" region = "sfo1" } resource "dnsimple_record" "hello" { domain = "example.com" name = "test" value = "${digitalocean_droplet.web.ipv4_address}" type = "A" }
  • 35. Infrastructure  as  Code DigitalOcean  Droplet  with  DNS  in  DNSimple resource "digitalocean_droplet" "web" { name = "tf-web" size = "512mb" image = "centos-5-8-x32" region = "sfo1" } resource "dnsimple_record" "hello" { domain = "example.com" name = "test" value = "${digitalocean_droplet.web.ipv4_address}" type = "A" }
  • 36. Infrastructure  as  Code DigitalOcean  Droplet  with  DNS  in  DNSimple resource "digitalocean_droplet" "web" { name = "tf-web" size = "512mb" image = "centos-5-8-x32" region = "sfo1" } resource "dnsimple_record" "hello" { domain = "example.com" name = "test" value = "${digitalocean_droplet.web.ipv4_address}" type = "A" }
  • 37. Infrastructure  as  Code • Human  friendly  config,  JSON  compa'ble   • Text  format  makes  it  version-­‐able,  VCS-­‐friendly   • Declara've   • Infrastructure  as  code  on  a  level  not  before  possible
  • 38. Zero  to  Done  in  One  Command Terraform  Apply $ terraform apply digitalocean_droplet.web: Creating… dnsimple_record.hello: Creating… Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
  • 39. Zero  to  Done  in  One  Command • Idempotent   • Highly  parallelized   • Will  only  do  what  the  plan  says
  • 40. Safely  Change/Iterate Terraform  Plan + digitalocean_droplet.web backups: "" => "<computed>" image: "" => "centos-5-8-x32" ipv4_address: "" => "<computed>" ipv4_address_private: "" => "<computed>" name: "" => "tf-web" private_networking: "" => "<computed>" region: "" => "sfo1" size: "" => "512mb" status: "" => "<computed>" + dnsimple_record.hello domain: "" => "example.com" domain_id: "" => "<computed>" hostname: "" => "<computed>" name: "" => "test" priority: "" => "<computed>" ttl: "" => "<computed>" type: "" => "A" value: "" => "${digitalocean_droplet.web.ipv4_address}"
  • 41. Safely  Change/Iterate Terraform  Plan + digitalocean_droplet.web backups: "" => "<computed>" image: "" => "centos-5-8-x32" ipv4_address: "" => "<computed>" ipv4_address_private: "" => "<computed>" name: "" => "tf-web" private_networking: "" => "<computed>" region: "" => "sfo1" size: "" => "512mb" status: "" => "<computed>" + dnsimple_record.hello domain: "" => "example.com" domain_id: "" => "<computed>" hostname: "" => "<computed>" name: "" => "test" priority: "" => "<computed>" ttl: "" => "<computed>" type: "" => "A" value: "" => "${digitalocean_droplet.web.ipv4_address}"
  • 42. Safely  Change/Iterate Terraform  Plan + digitalocean_droplet.web backups: "" => "<computed>" image: "" => "centos-5-8-x32" ipv4_address: "" => "<computed>" ipv4_address_private: "" => "<computed>" name: "" => "tf-web" private_networking: "" => "<computed>" region: "" => "sfo1" size: "" => "512mb" status: "" => "<computed>" + dnsimple_record.hello domain: "" => "example.com" domain_id: "" => "<computed>" hostname: "" => "<computed>" name: "" => "test" priority: "" => "<computed>" ttl: "" => "<computed>" type: "" => "A" value: "" => "${digitalocean_droplet.web.ipv4_address}"
  • 43. Safely  Change/Iterate • Plan  shows  you  what  will  happen   • Save  plans  to  guarantee  what  will  happen   • Plans  show  reasons  for  certain  ac'ons  (such  as  re-­‐create)   • Prior  to  Terraform:  Operators  had  to  “divine”  change  ordering,   paralleliza'on,  rollout  effect.
  • 44. Workflow • Make  code  changes   • `terraform  plan`   • Pull  request  with  code  changes  +  plan  to  make  changes   • Review  and  merge   • `terraform  apply  pr1234.pplan`
  • 45. Knowledge  Sharing:  Modules Terraform  Plan module “consul” { source = “github.com/hashicorp/consul/terraform/aws” servers = 3 } resource "dnsimple_record" "hello" { domain = "example.com" name = "test" value = “${module.consul.server_address}” type = "A" }
  • 46. Knowledge  Sharing:  Modules Terraform  Plan module “consul” { source = “github.com/hashicorp/consul/terraform/aws” servers = 3 } resource "dnsimple_record" "hello" { domain = "example.com" name = "test" value = “${module.consul.server_address}” type = "A" }
  • 47. Knowledge  Sharing:  Modules • Self-­‐contained  infrastructure  components   • Allows  delega'on  of  responsibility  to  mul'ple  teams   • Some  teams  create  modules,  other  teams  consume  modules
  • 48. Terraform • Zero  to  fully  deployed  in  one  command   • Change/maintain  infrastructure  predictably   • Teamwork-­‐oriented  workflow  to  infrastructure   • Goal:  Sta'c  deploy/provisioning  of  infrastructure.  Real'me  monitoring,   discovery,  configura'on  provided  by  Consul  (discussed  next).
  • 50. Service  discovery,  configura9on,  and   orchestra9on  made  easy.  Distributed,   highly  available,  and  datacenter-­‐aware.
  • 51. Ques'ons  that  Consul  Answers • Where  is  the  service  foo?  (ex.  Where  is  the  database?)   • What  is  the  health  status  of  service  foo?   • What  is  the  health  status  of  the  machine/node  foo?   • What  is  the  list  of  all  currently  running  machines?   • What  is  the  configura'on  of  service  foo?   • Is  anyone  else  currently  performing  opera'on  foo?  
  • 52. Service  Discovery   Where  is  service  foo?
  • 53. Service  Discovery Service  Discovery  via  DNS  or  HTTP $ dig web-frontend.service.consul. +short 10.0.3.89 10.0.1.46 $ curl http://localhost:8500/v1/catalog/service/web-frontend [{ “Node”: “node-e818f1”, “Address”: “10.0.3.89”, “ServiceID”: “web-frontend”, … }]
  • 54. Service  Discovery • DNS  is  legacy-­‐friendly.  No  applica'on  changes  required.   • HTTP  returns  rich  metadata.   • Discover  both  internal  and  external  services  
 (such  as  service  providers)
  • 55. Failure  Detection   Is  service  foo  healthy/available?
  • 57. Failure  Detec'on • DNS  won’t  return  non-­‐healthy  services  or  nodes.   • HTTP  has  endpoints  to  list  health  state  of  catalog.
  • 58. Key/Value  Storage   What  is  the  config  of  service  foo?
  • 59. Key/Value  Storage Serng  and  Gerng  a  Key $ curl –X PUT –d ‘bar’ http://localhost:8500/v1/kv/foo true $ curl http://localhost:8500/v1/kv/foo?raw bar
  • 60. Key/Value  Storage • Highly  available  storage  of  configura'on.   • Turn  knobs  without  big  configura'on  management  process.   • Watch  keys  (long  poll)  for  changes   • ACLs  on  key/value  to  protect  sensi've  informa'on
  • 62. Mul'-­‐Datacenter Service  Discovery $ dig web-frontend.singapore.service.consul. +short 10.3.3.33 10.3.1.18 $ dig web-frontend.germany.service.consul. +short 10.7.3.41 10.7.1.76
  • 63. Mul'-­‐Datacenter Serng  and  Gerng  a  Key $ curl http://localhost:8500/v1/kv/foo?raw&dc=asia true $ curl http://localhost:8500/v1/kv/foo?raw&dc=eu false
  • 64. Mul'-­‐Datacenter • Local  by  default   • Can  query  other  datacenters  however  you  may  need  to   • Can  view  all  datacenters  within  one  UI
  • 66. Events,  Exec,  Watches Dispatching  Custom  Events $ consul event deploy 6DF7FE … $ consul watch -type event -name deploy /usr/bin/deploy.sh … $ consul exec -service web /usr/bin/deploy.sh …
  • 67. Events,  Exec,  Watches • Powerful  orchestra'on  tools   • Pros/cons  to  each  approach,  use  the  right  tool  for  the  job   • All  approaches  proven  to  scale  to  thousands  of  agents
  • 68. Easiest  Distributed  System  Deploy Deploy  Consul  to  AWS $ terraform apply github.com/hashicorp/consul/terraform/aws var.servers The number of Consul servers to launch. Default: 3 Enter a value: 3 …
  • 69. Easiest  Distributed  System  Deploy Deploy  Consul  to  AWS  (manually) $ consul agent -atlas-join -atlas=USERNAME/NAME -atlas-token=API_TOKEN
  • 70. Workflow • Server  is  started  (via  Terraform,  etc.)   • Consul  agent  is  started,  joins  cluster   • Star'ng  services  (ex.  web  app)  query  Consul  for  configura'on   • Once  healthy,  services  are  discovered  via  DNS!
  • 71. Opera'onal  Bullet  Points • Leader  elec'on  via  Ra9   • Gossip  protocol  for  aliveness   • Three  consistency  models:  default,  consistent,  and  stale   • Encryp'on,  ACLs  available   • Real  world  usage  to  thousands  of  agents  per  datacenter