london community summit - chef at skybet
TRANSCRIPT
Chef at Sky Betting and Gaming
Tooling for our developers to get apps in front of customers+ supporting services
Chef toolchain is central
Platform ServicesGavin Harris - Engineering Manager
Platform ServicesGavin Harris - Engineering Manager
Started as a project team, “fixing disaster recovery”
• Introduced Chef configuration management
• Created Chef configuration for all the things
• Focused on providing tools and patterns
Scaling Agile at Spotify - Oct 2012
Richard Dinesh Nelson Gilfoyle Carla
Meet the Team!
Russ
Application Code (PHP, NodeJS,
React, Java)
Publish
Application Code (PHP, NodeJS,
React, Java)
Publish
Applications
Application Code (PHP, NodeJS,
React, Java)
Release
Application Code (PHP, NodeJS,
React, Java)
Publish
Applications
Infrastructure Code (Chef, Ruby,
ServerSpec)
Release
Publish
Applications
Infrastructure Code (Chef, Ruby,
ServerSpec)
Publish
Application Code (PHP, NodeJS,
React, Java)
Release
Publish
Applications
Infrastructure Code (Chef, Ruby,
ServerSpec)
Publish
Application Code (PHP, NodeJS,
React, Java)
Release
Configuration
Orchestra
tio
n
(Usually) In “Test”
Publish
Applications
Infrastructure Code (Chef, Ruby,
ServerSpec)
Publish
Application Code (PHP, NodeJS,
React, Java)
Release
Configuration
Orchestra
tio
n
Integration/Test
Publish
Applications
Infrastructure Code (Chef, Ruby,
ServerSpec)
Publish
Application Code (PHP, NodeJS,
React, Java)
Release
Configuration
Orchestra
tio
n
Integration/Test
Publish
Applications
Infrastructure Code (Chef, Ruby,
ServerSpec)
Publish
Application Code (PHP, NodeJS,
React, Java)
Release
Configuration
Orchestra
tio
n
Long cycle time!
Integration/Test
Dev Ops
Publish
Applications
Infrastructure Code (Chef, Ruby,
ServerSpec)
Publish
Application Code (PHP, NodeJS,
React, Java)
Release
Configuration
Orchestra
tio
n
Integration/Test
Orchestra
tion
Application + Config
Build
JenkinsPublis
h
Cookbook (sbg_myapp)
• Infrastructure Code (Chef, Inspec, Custom Resources)•Application Code (PHP, NodeJS, Java)•CI Pipeline (Jenkins Pipeline, Chef)• Integration Tests (Kitchen, Chef)
sbg_myapp::build
Build JenkinsfileRelease Jenkinsfile
.kitchen.yml kitchen-docker
pscliThe ‘Glue’
• Internal Tool• Written in Go• Uses Docker• Pulls in images containing tools• Executes tools in these containers
• ChefDK• Terraform• Packer• AWS Authentication• Hashicorp Vault• Code Generation
pscli kitchen converge
Git--volumes-from /git
{command runner}
Kitchen Suite A
Kitchen Suite B
/opt/chefdk
ChefDK--volumes-from
Docker Registry
pscli generate cookbook myapp
Git--volumes-from /git
/opt/chefdk
ChefDK--volumes-from
Docker Registry
Code Generator--volumes-from /generator
{command runner} ~/workspace/myapp
pscli terraform apply
/opt/terraform
Terraform--volumes-from
Docker Registry
{command runner}
Questions?
http://engineering.skybettingandgaming.com