SlideShare ist ein Scribd-Unternehmen logo
1 von 72
Automa'ng  the    
Modern  Datacenter
@mitchellh
Mitchell  Hashimoto
Powering  the  so9ware-­‐managed  datacenter.
HashiCorp
hashicorp.com
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

Weitere ähnliche Inhalte

Was ist angesagt?

Infrastructure as code
Infrastructure as codeInfrastructure as code
Infrastructure as code
Axel Quack
 

Was ist angesagt? (20)

Masterless Puppet Using AWS S3 Buckets and IAM Roles
Masterless Puppet Using AWS S3 Buckets and IAM RolesMasterless Puppet Using AWS S3 Buckets and IAM Roles
Masterless Puppet Using AWS S3 Buckets and IAM Roles
 
Reusable, composable, battle-tested Terraform modules
Reusable, composable, battle-tested Terraform modulesReusable, composable, battle-tested Terraform modules
Reusable, composable, battle-tested Terraform modules
 
Infrastructure as code
Infrastructure as codeInfrastructure as code
Infrastructure as code
 
Ansible new paradigms for orchestration
Ansible new paradigms for orchestrationAnsible new paradigms for orchestration
Ansible new paradigms for orchestration
 
How to test infrastructure code: automated testing for Terraform, Kubernetes,...
How to test infrastructure code: automated testing for Terraform, Kubernetes,...How to test infrastructure code: automated testing for Terraform, Kubernetes,...
How to test infrastructure code: automated testing for Terraform, Kubernetes,...
 
Play Framework + Docker + CircleCI + AWS + EC2 Container Service
Play Framework + Docker + CircleCI + AWS + EC2 Container ServicePlay Framework + Docker + CircleCI + AWS + EC2 Container Service
Play Framework + Docker + CircleCI + AWS + EC2 Container Service
 
Container Days Boston - Kubernetes in production
Container Days Boston - Kubernetes in productionContainer Days Boston - Kubernetes in production
Container Days Boston - Kubernetes in production
 
Using Docker with Puppet - PuppetConf 2014
Using Docker with Puppet - PuppetConf 2014Using Docker with Puppet - PuppetConf 2014
Using Docker with Puppet - PuppetConf 2014
 
Achieving Continuous Delivery: An Automation Story
Achieving Continuous Delivery: An Automation StoryAchieving Continuous Delivery: An Automation Story
Achieving Continuous Delivery: An Automation Story
 
AWS DevOps - Terraform, Docker, HashiCorp Vault
AWS DevOps - Terraform, Docker, HashiCorp VaultAWS DevOps - Terraform, Docker, HashiCorp Vault
AWS DevOps - Terraform, Docker, HashiCorp Vault
 
Clocker - The Docker Cloud Maker
Clocker - The Docker Cloud MakerClocker - The Docker Cloud Maker
Clocker - The Docker Cloud Maker
 
Docker at Shopify: From This-Looks-Fun to Production by Simon Eskildsen (Shop...
Docker at Shopify: From This-Looks-Fun to Production by Simon Eskildsen (Shop...Docker at Shopify: From This-Looks-Fun to Production by Simon Eskildsen (Shop...
Docker at Shopify: From This-Looks-Fun to Production by Simon Eskildsen (Shop...
 
Ninja, Choose Your Weapon!
Ninja, Choose Your Weapon!Ninja, Choose Your Weapon!
Ninja, Choose Your Weapon!
 
An intro to Docker, Terraform, and Amazon ECS
An intro to Docker, Terraform, and Amazon ECSAn intro to Docker, Terraform, and Amazon ECS
An intro to Docker, Terraform, and Amazon ECS
 
Puppet and Apache CloudStack
Puppet and Apache CloudStackPuppet and Apache CloudStack
Puppet and Apache CloudStack
 
Kubernetes Boston — Custom High Availability of Kubernetes
Kubernetes Boston — Custom High Availability of KubernetesKubernetes Boston — Custom High Availability of Kubernetes
Kubernetes Boston — Custom High Availability of Kubernetes
 
Scaling Development Environments with Docker
Scaling Development Environments with DockerScaling Development Environments with Docker
Scaling Development Environments with Docker
 
Extend and build on Kubernetes
Extend and build on KubernetesExtend and build on Kubernetes
Extend and build on Kubernetes
 
Ansible Introduction
Ansible Introduction Ansible Introduction
Ansible Introduction
 
Zero Code Multi-Cloud Automation with Ansible and Terraform
Zero Code Multi-Cloud Automation with Ansible and TerraformZero Code Multi-Cloud Automation with Ansible and Terraform
Zero Code Multi-Cloud Automation with Ansible and Terraform
 

Andere mochten auch

Concurrency presents Modern Datacenter
Concurrency presents Modern DatacenterConcurrency presents Modern Datacenter
Concurrency presents Modern Datacenter
Jake Borzym
 

Andere mochten auch (9)

Concurrency presents Modern Datacenter
Concurrency presents Modern DatacenterConcurrency presents Modern Datacenter
Concurrency presents Modern Datacenter
 
Tiad - Docker: Automation for the rest of us
Tiad - Docker: Automation for the rest of usTiad - Docker: Automation for the rest of us
Tiad - Docker: Automation for the rest of us
 
Modern Elastic Datacenter Architecture
Modern Elastic Datacenter ArchitectureModern Elastic Datacenter Architecture
Modern Elastic Datacenter Architecture
 
The Cloud for Modern Business
The Cloud for Modern BusinessThe Cloud for Modern Business
The Cloud for Modern Business
 
Cloud: From Unmanned Data Center to Algorithmic Economy using Openstack
Cloud: From Unmanned Data Center to Algorithmic Economy using OpenstackCloud: From Unmanned Data Center to Algorithmic Economy using Openstack
Cloud: From Unmanned Data Center to Algorithmic Economy using Openstack
 
The Evolution of the Datacenter
The Evolution of the DatacenterThe Evolution of the Datacenter
The Evolution of the Datacenter
 
PaaS를 이용한 No Ops 개발
PaaS를 이용한 No Ops 개발PaaS를 이용한 No Ops 개발
PaaS를 이용한 No Ops 개발
 
openstack, devops and people
openstack, devops and peopleopenstack, devops and people
openstack, devops and people
 
[OpenStack Day in Korea 2015] Keynote 2 - Leveraging OpenStack to Realize the...
[OpenStack Day in Korea 2015] Keynote 2 - Leveraging OpenStack to Realize the...[OpenStack Day in Korea 2015] Keynote 2 - Leveraging OpenStack to Realize the...
[OpenStack Day in Korea 2015] Keynote 2 - Leveraging OpenStack to Realize the...
 

Ähnlich wie TIAD : Automating the modern datacenter

Puppetpreso
PuppetpresoPuppetpreso
Puppetpreso
ke4qqq
 
Infrastructure as code with Puppet and Apache CloudStack
Infrastructure as code with Puppet and Apache CloudStackInfrastructure as code with Puppet and Apache CloudStack
Infrastructure as code with Puppet and Apache CloudStack
ke4qqq
 

Ähnlich wie TIAD : Automating the modern datacenter (20)

OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...
OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...
OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...
 
Orchestrating Docker with Terraform and Consul by Mitchell Hashimoto
Orchestrating Docker with Terraform and Consul by Mitchell Hashimoto Orchestrating Docker with Terraform and Consul by Mitchell Hashimoto
Orchestrating Docker with Terraform and Consul by Mitchell Hashimoto
 
London HUG 12/4
London HUG 12/4London HUG 12/4
London HUG 12/4
 
Aprovisionamiento multi-proveedor con Terraform - Plain Concepts DevOps day
Aprovisionamiento multi-proveedor con Terraform  - Plain Concepts DevOps dayAprovisionamiento multi-proveedor con Terraform  - Plain Concepts DevOps day
Aprovisionamiento multi-proveedor con Terraform - Plain Concepts DevOps day
 
Infrastructure as code, using Terraform
Infrastructure as code, using TerraformInfrastructure as code, using Terraform
Infrastructure as code, using Terraform
 
Managing Infrastructure as Code
Managing Infrastructure as CodeManaging Infrastructure as Code
Managing Infrastructure as Code
 
Atmosphere Conference 2015: Taming the Modern Datacenter
Atmosphere Conference 2015: Taming the Modern DatacenterAtmosphere Conference 2015: Taming the Modern Datacenter
Atmosphere Conference 2015: Taming the Modern Datacenter
 
Declarative & workflow based infrastructure with Terraform
Declarative & workflow based infrastructure with TerraformDeclarative & workflow based infrastructure with Terraform
Declarative & workflow based infrastructure with Terraform
 
Puppetpreso
PuppetpresoPuppetpreso
Puppetpreso
 
Declarative Infrastructure Tools
Declarative Infrastructure Tools Declarative Infrastructure Tools
Declarative Infrastructure Tools
 
AWS re:Invent 2016: Service Integration Delivery and Automation Using Amazon ...
AWS re:Invent 2016: Service Integration Delivery and Automation Using Amazon ...AWS re:Invent 2016: Service Integration Delivery and Automation Using Amazon ...
AWS re:Invent 2016: Service Integration Delivery and Automation Using Amazon ...
 
Infrastructure-as-code: bridging the gap between Devs and Ops
Infrastructure-as-code: bridging the gap between Devs and OpsInfrastructure-as-code: bridging the gap between Devs and Ops
Infrastructure-as-code: bridging the gap between Devs and Ops
 
Immutable Deployments with AWS CloudFormation and AWS Lambda
Immutable Deployments with AWS CloudFormation and AWS LambdaImmutable Deployments with AWS CloudFormation and AWS Lambda
Immutable Deployments with AWS CloudFormation and AWS Lambda
 
Effective terraform
Effective terraformEffective terraform
Effective terraform
 
Puppet and Apache CloudStack
Puppet and Apache CloudStackPuppet and Apache CloudStack
Puppet and Apache CloudStack
 
Infrastructure as code with Puppet and Apache CloudStack
Infrastructure as code with Puppet and Apache CloudStackInfrastructure as code with Puppet and Apache CloudStack
Infrastructure as code with Puppet and Apache CloudStack
 
Dive into DevOps | March, Building with Terraform, Volodymyr Tsap
Dive into DevOps | March, Building with Terraform, Volodymyr TsapDive into DevOps | March, Building with Terraform, Volodymyr Tsap
Dive into DevOps | March, Building with Terraform, Volodymyr Tsap
 
DevOps Enabling Your Team
DevOps Enabling Your TeamDevOps Enabling Your Team
DevOps Enabling Your Team
 
Terraform in deployment pipeline
Terraform in deployment pipelineTerraform in deployment pipeline
Terraform in deployment pipeline
 
Agiles Peru 2019 - Infrastructure As Code
Agiles Peru 2019 - Infrastructure As CodeAgiles Peru 2019 - Infrastructure As Code
Agiles Peru 2019 - Infrastructure As Code
 

Mehr von The Incredible Automation Day

Mehr von The Incredible Automation Day (20)

A smooth migration to Docker focusing on build pipelines - TIAD Camp Docker
A smooth migration to Docker focusing on build pipelines - TIAD Camp DockerA smooth migration to Docker focusing on build pipelines - TIAD Camp Docker
A smooth migration to Docker focusing on build pipelines - TIAD Camp Docker
 
Docker in real life and in the Cloud - TIAD Camp Docker
Docker in real life and in the Cloud - TIAD Camp DockerDocker in real life and in the Cloud - TIAD Camp Docker
Docker in real life and in the Cloud - TIAD Camp Docker
 
Orchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp DockerOrchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp Docker
 
Monitoring in 2017 - TIAD Camp Docker
Monitoring in 2017 - TIAD Camp DockerMonitoring in 2017 - TIAD Camp Docker
Monitoring in 2017 - TIAD Camp Docker
 
Strategy, planning and governance for enterprise deployments of containers - ...
Strategy, planning and governance for enterprise deployments of containers - ...Strategy, planning and governance for enterprise deployments of containers - ...
Strategy, planning and governance for enterprise deployments of containers - ...
 
Cluster SQL - TIAD Camp Microsoft Cloud Readiness
Cluster SQL - TIAD Camp Microsoft Cloud ReadinessCluster SQL - TIAD Camp Microsoft Cloud Readiness
Cluster SQL - TIAD Camp Microsoft Cloud Readiness
 
Build the VPC - TIAD Camp Microsoft Cloud Readiness
Build the VPC - TIAD Camp Microsoft Cloud ReadinessBuild the VPC - TIAD Camp Microsoft Cloud Readiness
Build the VPC - TIAD Camp Microsoft Cloud Readiness
 
Opening Keynote - TIAD Camp Microsoft Cloud Readiness
Opening Keynote - TIAD Camp Microsoft Cloud ReadinessOpening Keynote - TIAD Camp Microsoft Cloud Readiness
Opening Keynote - TIAD Camp Microsoft Cloud Readiness
 
Replatforming - TIAD Camp Microsoft Cloud Readiness
Replatforming - TIAD Camp Microsoft Cloud ReadinessReplatforming - TIAD Camp Microsoft Cloud Readiness
Replatforming - TIAD Camp Microsoft Cloud Readiness
 
GitLab CI Packer - TIAD Camp Microsoft Cloud Readiness
GitLab CI Packer - TIAD Camp Microsoft Cloud ReadinessGitLab CI Packer - TIAD Camp Microsoft Cloud Readiness
GitLab CI Packer - TIAD Camp Microsoft Cloud Readiness
 
Active Directory - TIAD Camp Microsoft Cloud Readiness
Active Directory - TIAD Camp Microsoft Cloud ReadinessActive Directory - TIAD Camp Microsoft Cloud Readiness
Active Directory - TIAD Camp Microsoft Cloud Readiness
 
Application Stack - TIAD Camp Microsoft Cloud Readiness
Application Stack - TIAD Camp Microsoft Cloud ReadinessApplication Stack - TIAD Camp Microsoft Cloud Readiness
Application Stack - TIAD Camp Microsoft Cloud Readiness
 
Keynote TIAD Camp Serverless
Keynote TIAD Camp ServerlessKeynote TIAD Camp Serverless
Keynote TIAD Camp Serverless
 
From AIX to Zero-ops by Pierre Baillet
From AIX to Zero-ops by Pierre BailletFrom AIX to Zero-ops by Pierre Baillet
From AIX to Zero-ops by Pierre Baillet
 
Serverless low cost analytics by Adways y Audric Guigon
Serverless low cost analytics by Adways y Audric GuigonServerless low cost analytics by Adways y Audric Guigon
Serverless low cost analytics by Adways y Audric Guigon
 
Operationnal challenges behind Serverless architectures by Laurent Bernaille
Operationnal challenges behind Serverless architectures by Laurent BernailleOperationnal challenges behind Serverless architectures by Laurent Bernaille
Operationnal challenges behind Serverless architectures by Laurent Bernaille
 
Build chatbots with api.ai and Google cloud functions
Build chatbots with api.ai and Google cloud functionsBuild chatbots with api.ai and Google cloud functions
Build chatbots with api.ai and Google cloud functions
 
Real time serverless data pipelines on AWS
Real time serverless data pipelines on AWSReal time serverless data pipelines on AWS
Real time serverless data pipelines on AWS
 
Azure functions
Azure functionsAzure functions
Azure functions
 
TIAD 2016 - Beyond windowsautomation
TIAD 2016 - Beyond windowsautomation TIAD 2016 - Beyond windowsautomation
TIAD 2016 - Beyond windowsautomation
 

Kürzlich hochgeladen

No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...
No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...
No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...
Sheetaleventcompany
 
If this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New NigeriaIf this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New Nigeria
Kayode Fayemi
 
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptxChiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptx
raffaeleoman
 
Uncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoUncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac Folorunso
Kayode Fayemi
 

Kürzlich hochgeladen (20)

No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...
No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...
No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...
 
If this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New NigeriaIf this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New Nigeria
 
lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.
 
BDSM⚡Call Girls in Sector 97 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 97 Noida Escorts >༒8448380779 Escort ServiceBDSM⚡Call Girls in Sector 97 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 97 Noida Escorts >༒8448380779 Escort Service
 
Dreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video TreatmentDreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video Treatment
 
Causes of poverty in France presentation.pptx
Causes of poverty in France presentation.pptxCauses of poverty in France presentation.pptx
Causes of poverty in France presentation.pptx
 
ICT role in 21st century education and it's challenges.pdf
ICT role in 21st century education and it's challenges.pdfICT role in 21st century education and it's challenges.pdf
ICT role in 21st century education and it's challenges.pdf
 
Report Writing Webinar Training
Report Writing Webinar TrainingReport Writing Webinar Training
Report Writing Webinar Training
 
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdfAWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
 
Dreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio IIIDreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio III
 
My Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle BaileyMy Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle Bailey
 
ANCHORING SCRIPT FOR A CULTURAL EVENT.docx
ANCHORING SCRIPT FOR A CULTURAL EVENT.docxANCHORING SCRIPT FOR A CULTURAL EVENT.docx
ANCHORING SCRIPT FOR A CULTURAL EVENT.docx
 
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptxChiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptx
 
Air breathing and respiratory adaptations in diver animals
Air breathing and respiratory adaptations in diver animalsAir breathing and respiratory adaptations in diver animals
Air breathing and respiratory adaptations in diver animals
 
Busty Desi⚡Call Girls in Sector 51 Noida Escorts >༒8448380779 Escort Service-...
Busty Desi⚡Call Girls in Sector 51 Noida Escorts >༒8448380779 Escort Service-...Busty Desi⚡Call Girls in Sector 51 Noida Escorts >༒8448380779 Escort Service-...
Busty Desi⚡Call Girls in Sector 51 Noida Escorts >༒8448380779 Escort Service-...
 
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdf
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdfThe workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdf
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdf
 
Uncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoUncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac Folorunso
 
Introduction to Prompt Engineering (Focusing on ChatGPT)
Introduction to Prompt Engineering (Focusing on ChatGPT)Introduction to Prompt Engineering (Focusing on ChatGPT)
Introduction to Prompt Engineering (Focusing on ChatGPT)
 
BDSM⚡Call Girls in Sector 93 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 93 Noida Escorts >༒8448380779 Escort ServiceBDSM⚡Call Girls in Sector 93 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 93 Noida Escorts >༒8448380779 Escort Service
 
SaaStr Workshop Wednesday w/ Lucas Price, Yardstick
SaaStr Workshop Wednesday w/ Lucas Price, YardstickSaaStr Workshop Wednesday w/ Lucas Price, Yardstick
SaaStr Workshop Wednesday w/ Lucas Price, Yardstick
 

TIAD : Automating the modern datacenter

  • 1. Automa'ng  the     Modern  Datacenter
  • 3. Powering  the  so9ware-­‐managed  datacenter. HashiCorp hashicorp.com
  • 4.
  • 5.
  • 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