SlideShare a Scribd company logo
Peter Leschev 
@peterleschev 
Husband, Father of 3 & Atlassian 
Build Engineering
A Build Engineering 
Team’s Journey of 
Infrastructure as Code 
Nov-2014
Build Engineering today @ 
Atlassian 
• Build platform & services used internally within the company 
• 90k builds per month 
• 43k automated tests just for JIRA 
• Developers expect a reliable infrastructure & fast CI feedback
Build Engineering today @ 
Atlassian 
• 1000 build agents (own hardware + EC2 instances) 
• include SCM clients, JDKs, JVM build tools, databases, headless 
browser testing, python builds, NodeJS, installers & more 
• Maintain 20 AMIs of various build configurations 
• 8 Bamboo Servers 
• maven.atlassian.com / 6 Nexus instances 
• Monitoring - opsview / graphite / statsd
Build Engineering today @ 
Atlassian
Infrastructure as Code 
= Puppet + SCM ?
4 years ago... 
• Manually maintained snowflakes 
• Started using puppet
Production rollout 
puppetmaster 
build agents
Production rollout failure 
puppetmaster 
build agents
Confidence of Change 
HIGH 
NONE 
Lifecycle of an infra change 
confidence 
Dev Rollout Soak in Prod
atlassian.com/git
Style in Pull Requests
Puppet Lint https://github.com/rodjek/puppet-lint 
Tim Sharpe 
@rodjek 
• Automated style checking 
• Setup automated build that runs checks & posts results 
• Setup ratchet build to detect regressions
Confidence of Change 
HIGH 
NONE 
initial + Code review 
Lifecycle of an infra change 
confidence 
Dev Code review Rollout Soak in Prod
Using Staging for Development 
• Coding on Puppet Master 
• Culture of manually modifying 
production - Configuration Drift 
• Impact on Builds 
puppetmaster 
build agents 
staging puppet environment
Vagrant http://www.vagrantup.com/ 
Mitchell Hashimoto 
@mitchellh 
• Easily spin up Infrastructure locally on your laptop 
• Reproducible / disposable environments 
• Machine provisioning via Virtual Box / VMWare / AWS 
• Configuration applied via Shell Scripts / Puppet / Chef 
• Develop and test infrastructure changes locally
Vagrant 
Vagrantfile 
vagrant basebox 
http://www.vagrantup.com/ 
Mitchell Hashimoto 
@mitchellh
Vagrant 
Spins up a local VM to a known state 
Make some puppet changes and then run: 
Destroy the VM when done 
to apply your changes 
SSH into your VM using: 
to check your changes 
http://www.vagrantup.com/ 
Mitchell Hashimoto 
@mitchellh
Confidence of Change 
HIGH 
NONE 
initial + Code review + Vagrant 
Lifecycle of an infra change 
confidence 
Dev Code review Rollout Soak in Prod
Vagrant != Production 
• Vagrant basebox differences with production machines 
• Originally using publicly available vagrant baseboxes 
• Installed packages biggest differences 
• Generating a basebox manually was a painful process
Packer http://packer.io 
Mitchell Hashimoto 
@mitchellh 
Vagrant box 
for Virtualbox 
packer template 
JSON 
Vagrant box 
for AWS
Basebox generation via CI 
• Latest basebox generated in CI & published to fileshare 
• No need to generate baseboxes locally
Confidence in Change 
HIGH 
NONE 
initial + Code review + Vagrant + Packer 
Lifecycle of an infra change 
confidence 
Dev Code review Rollout Soak in Prod
Developing locally 
Rolling out to staging 
Rolling out to production 
Broken build agents!
Cucumber https://github.com/cucumber/aruba 
• Behaviour Driven Development
Cucumber & Vagrant 
Vagrant 
Custom Provisioner 
Virtual Box 
VM 
puppet apply 
cucumber *.features 
via ssh
Disadvantages 
• Requires cucumber dependencies to be installed on 
tested VM 
• Tests run within the VM making testing firewall rules 
harder
Confidence in Change 
HIGH 
NONE 
initial + Code review + Vagrant + Packer + Cukes 
Lifecycle of an infra change 
confidence 
Dev Code review Rollout Soak in Prod
But it works on my machine! 
“ – Every Developer”
Continuous Integration 
• ‘From scratch’ provisioning 
• Confidence that you can rebuild in disaster
The Pets: you give nice names, 
you stroke them, and when they get ill, 
you nurse them back to health, 
taking a long time over it 
The Cattle: you give them numbers. When 
they get ill, you shoot them 
– Tim Bell, CERN ” 
“
Confidence in Change 
HIGH 
NONE 
initial + Code review + Vagrant + Packer + Cukes + CI 
Lifecycle of an infra change 
confidence 
Dev Code review CI & Rollout Soak in Prod
Provisioning from scratch 
is slow
Spread out CI 
provision VM #1 
Moved from sequential 
to parallel provisioning 
provision VM #2 
provision VM #3 
provision VM #4 
provision VM #1 
provision VM #2 provision VM #3 
provision VM #4
There are so many 
MacPros you can steal
The ones 
I had my 
eye on....
Profiling Puppet Runs 
Add “--evaltrace” to puppet apply 
+ = 
Collect and show the 
longest occurrences of: 
“Evaluated in ([d.]+) seconds”
Profiling Cucumber runs 
http://itshouldbeuseful.wordpress.com/2010/11/10/find-your-slowest-running-cucumber-features/
Delta Provisioning 
• Provision locally & for CI 
• Faster & different class of problems found 
• Matches production state 
‘from scratch’ provision delta provision 
provision VM 
export VM fileshare 
import VM box 
provision VM 
on success
Confidence in Change 
HIGH 
NONE 
initial + Code review + Vagrant + Packer + Cukes + CI 
+ Delta CI 
Lifecycle of an infra change 
confidence 
Dev Code review CI & Rollout Soak in Prod
Broken builds 
master
Branch builds 
BUILDENG-5669 
master 
BUILDENG-5670
Confidence in Change 
HIGH 
NONE 
initial + Code review + Vagrant + Packer + Cukes 
+ CI + Delta CI + Branch CI 
Lifecycle of an infra change 
confidence 
Dev Branch CI Code review CI & Rollout Soak in Prod
Slow builds
Vagrant-AWS https://github.com/mitchellh/vagrant-aws
Vagrant-AWS https://github.com/mitchellh/vagrant-aws 
• MacPros no longer required 
• They were limited in supply & old 
• 2x speed improvement 
• Only limited by our credit card limit
Catalog Diff 
Step 1: Generate a hash of a node’s catalog 
puppet master --logdest console --compile HOSTNAME 
HOSTNAME.json 
- Sort elements 
- Remove timestamps 
- Generate shasum 
f50db91e6461f5bdcb56769a8f77da1fac26943d
Catalog Diff 
Step 2: Compare the hash of master versus your branch 
to avoid unnecessary provisioning 
Example 1: 
master branch 
f50db91e6461f5bdcb56769a8f77da1fac26943d = f50db91e6461f5bdcb56769a8f77da1fac26943d 
Hash is the same, no build required 
Example 2: 
master branch 
f50db91e6461f5bdcb56769a8f77da1fac26943d != 18033e4d21b78bab6deb3ae1ff3c147ade5a37ca 
Hash is different, build required
Catalog Diff 
Step 3: Profit! 
Reduction in 
feedback time 
+ 
$$$ saved 
Images: http://pixabay.com/p-30984/ https://www.flickr.com/photos/williamnyk/3598113750/
Infrequent Releases
Painful Puppet Rollouts 
• Puppet runs impacted running builds 
• Disabling all the build agents 
• Performing the roll out 
• git clone / librarian-puppet / symlink update on puppetmaster 
• Manually kick off puppet on all the build agents 
• Enabling all the build agents 
• Set of Puppet environments for every bamboo server
Graceful Service restarts 
+ 
Bamboo Agent JVM process watches 
for touch file & shutdowns when Idle 
(written as a Bamboo Plugin)
Puppet Environments 
• BEFORE - Multiple puppet envs for each Bamboo Server 
• jbac_staging 
• jbac_production 
• cbac_staging 
• cbac_production 
• etc 
• AFTER - Changed to use ‘staging’ & ‘production’ only
Updates on Puppetmaster 
• BEFORE: Manually on puppetmaster 
• git clone the puppet tree 
• run librarian-puppet to pull external modules 
• Update staging / production symlink 
• AFTER: Bamboo build which performs the above steps 
automatically
Bot automation - ‘open prs’
Less Human interaction 
+ 
More automation 
= 
Higher Confidence
Less Human Effort 
= 
Increased frequency 
of releases
Confidence in Change 
HIGH 
NONE 
initial + Code review + Vagrant + Packer 
+ Cukes + CI + Delta CI + Branch CI 
+ Frequent Releases 
Lifecycle of an infra change 
confidence 
Dev Branch CI Code review CI & Rollout Soak in Prod
I’m scared! 
“– Peter Leschev, 3.5” years ago 
Should I be scared? 
“ – Peter Leschev, 3 months a”go
Hipchat integration
Confidence in Change 
HIGH 
NONE 
initial + Code review + Vagrant + Packer 
+ Cukes + CI + Delta CI + Branch CI 
+ Frequent Releases + Notification 
Lifecycle of an infra change 
confidence 
Dev Branch CI Code review CI & Rollout Soak in Prod
Confidence in Change 
HIGH 
NONE 
before after 
Lifecycle of an infra change 
confidence 
Dev Branch CI Code review CI & Rollout Soak in Prod
Confidence in Change 
or 
Finding & fixing 
problems sooner rather 
than later
Snowflakes 
Pets 
Cattle 
Stateless Machines
We’re still on the Journey 
Come join us! 
atlassian.com/jobs
one more thing…
Puppet Module for 
Sonatype Nexus 
• https://forge.puppetlabs.com/atlassian/nexus_rest 
• Configure Nexus using Custom Puppet Provider Types 
rather than XML files
Thank you!
Questions?
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infrastructure as Code

More Related Content

What's hot

Spinnaker Microsrvices
Spinnaker MicrosrvicesSpinnaker Microsrvices
Spinnaker Microsrvices
Ambassador Labs
 
Release the Monkeys ! Testing in the Wild at Netflix
Release the Monkeys !  Testing in the Wild at NetflixRelease the Monkeys !  Testing in the Wild at Netflix
Release the Monkeys ! Testing in the Wild at Netflix
Gareth Bowles
 
Mock Servers - Fake All the Things!
Mock Servers - Fake All the Things!Mock Servers - Fake All the Things!
Mock Servers - Fake All the Things!
Atlassian
 
Atlassian Connect on Serverless Platforms: Low Cost Add-Ons
Atlassian Connect on Serverless Platforms: Low Cost Add-OnsAtlassian Connect on Serverless Platforms: Low Cost Add-Ons
Atlassian Connect on Serverless Platforms: Low Cost Add-Ons
Atlassian
 
Is Serverless The New Swiss Cheese? - AWS Seattle User Group
Is Serverless The New Swiss Cheese? - AWS Seattle User GroupIs Serverless The New Swiss Cheese? - AWS Seattle User Group
Is Serverless The New Swiss Cheese? - AWS Seattle User Group
Chase Douglas
 
Chef Actions: Delightful near real-time activity tracking!
Chef Actions: Delightful near real-time activity tracking!Chef Actions: Delightful near real-time activity tracking!
Chef Actions: Delightful near real-time activity tracking!
James Casey
 
Build a JIRA Server Add-on as a Microservice - You Can Do It!
Build a JIRA Server Add-on as a Microservice - You Can Do It!Build a JIRA Server Add-on as a Microservice - You Can Do It!
Build a JIRA Server Add-on as a Microservice - You Can Do It!
Atlassian
 
Ed Elliott - Practical DSC in Azure
Ed Elliott - Practical DSC in AzureEd Elliott - Practical DSC in Azure
Ed Elliott - Practical DSC in Azure
WinOps Conf
 
Bringing Server Add-ons to the Cloud and Back Again
Bringing Server Add-ons to the Cloud and Back AgainBringing Server Add-ons to the Cloud and Back Again
Bringing Server Add-ons to the Cloud and Back Again
Atlassian
 
Getting Started with Spring Boot
Getting Started with Spring BootGetting Started with Spring Boot
Getting Started with Spring Boot
David Kiss
 
Software Delivery at Warp Speed: Five Essential Techniques
Software Delivery at Warp Speed: Five Essential TechniquesSoftware Delivery at Warp Speed: Five Essential Techniques
Software Delivery at Warp Speed: Five Essential Techniques
Atlassian
 
Introduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefIntroduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to Chef
All Things Open
 
Continous integration and delivery for single page applications
Continous integration and delivery for single page applicationsContinous integration and delivery for single page applications
Continous integration and delivery for single page applications
Sunil Dalal
 
How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...
How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...
How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...
Peter Leschev
 
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
Amazon Web Services
 
Serverless Delivery
Serverless DeliveryServerless Delivery
Serverless Delivery
Casey Lee
 
How to Build a Better JIRA Add-on
How to Build a Better JIRA Add-onHow to Build a Better JIRA Add-on
How to Build a Better JIRA Add-on
Atlassian
 
WinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf 2016 - Michael Greene - Release PipelinesWinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf
 
Continuous Delivery using AWS CodePipeline, AWS Lambda & AWS ElasticBeanstalk
Continuous Delivery using AWS CodePipeline, AWS Lambda & AWS ElasticBeanstalkContinuous Delivery using AWS CodePipeline, AWS Lambda & AWS ElasticBeanstalk
Continuous Delivery using AWS CodePipeline, AWS Lambda & AWS ElasticBeanstalk
Thomas Shaw
 
Puppet Release Workflows at Jive Software
Puppet Release Workflows at Jive SoftwarePuppet Release Workflows at Jive Software
Puppet Release Workflows at Jive Software
Puppet
 

What's hot (20)

Spinnaker Microsrvices
Spinnaker MicrosrvicesSpinnaker Microsrvices
Spinnaker Microsrvices
 
Release the Monkeys ! Testing in the Wild at Netflix
Release the Monkeys !  Testing in the Wild at NetflixRelease the Monkeys !  Testing in the Wild at Netflix
Release the Monkeys ! Testing in the Wild at Netflix
 
Mock Servers - Fake All the Things!
Mock Servers - Fake All the Things!Mock Servers - Fake All the Things!
Mock Servers - Fake All the Things!
 
Atlassian Connect on Serverless Platforms: Low Cost Add-Ons
Atlassian Connect on Serverless Platforms: Low Cost Add-OnsAtlassian Connect on Serverless Platforms: Low Cost Add-Ons
Atlassian Connect on Serverless Platforms: Low Cost Add-Ons
 
Is Serverless The New Swiss Cheese? - AWS Seattle User Group
Is Serverless The New Swiss Cheese? - AWS Seattle User GroupIs Serverless The New Swiss Cheese? - AWS Seattle User Group
Is Serverless The New Swiss Cheese? - AWS Seattle User Group
 
Chef Actions: Delightful near real-time activity tracking!
Chef Actions: Delightful near real-time activity tracking!Chef Actions: Delightful near real-time activity tracking!
Chef Actions: Delightful near real-time activity tracking!
 
Build a JIRA Server Add-on as a Microservice - You Can Do It!
Build a JIRA Server Add-on as a Microservice - You Can Do It!Build a JIRA Server Add-on as a Microservice - You Can Do It!
Build a JIRA Server Add-on as a Microservice - You Can Do It!
 
Ed Elliott - Practical DSC in Azure
Ed Elliott - Practical DSC in AzureEd Elliott - Practical DSC in Azure
Ed Elliott - Practical DSC in Azure
 
Bringing Server Add-ons to the Cloud and Back Again
Bringing Server Add-ons to the Cloud and Back AgainBringing Server Add-ons to the Cloud and Back Again
Bringing Server Add-ons to the Cloud and Back Again
 
Getting Started with Spring Boot
Getting Started with Spring BootGetting Started with Spring Boot
Getting Started with Spring Boot
 
Software Delivery at Warp Speed: Five Essential Techniques
Software Delivery at Warp Speed: Five Essential TechniquesSoftware Delivery at Warp Speed: Five Essential Techniques
Software Delivery at Warp Speed: Five Essential Techniques
 
Introduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefIntroduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to Chef
 
Continous integration and delivery for single page applications
Continous integration and delivery for single page applicationsContinous integration and delivery for single page applications
Continous integration and delivery for single page applications
 
How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...
How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...
How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...
 
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
 
Serverless Delivery
Serverless DeliveryServerless Delivery
Serverless Delivery
 
How to Build a Better JIRA Add-on
How to Build a Better JIRA Add-onHow to Build a Better JIRA Add-on
How to Build a Better JIRA Add-on
 
WinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf 2016 - Michael Greene - Release PipelinesWinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf 2016 - Michael Greene - Release Pipelines
 
Continuous Delivery using AWS CodePipeline, AWS Lambda & AWS ElasticBeanstalk
Continuous Delivery using AWS CodePipeline, AWS Lambda & AWS ElasticBeanstalkContinuous Delivery using AWS CodePipeline, AWS Lambda & AWS ElasticBeanstalk
Continuous Delivery using AWS CodePipeline, AWS Lambda & AWS ElasticBeanstalk
 
Puppet Release Workflows at Jive Software
Puppet Release Workflows at Jive SoftwarePuppet Release Workflows at Jive Software
Puppet Release Workflows at Jive Software
 

Viewers also liked

Turning Human Capital into High Performance Organizational Capital
Turning Human Capital into High Performance Organizational CapitalTurning Human Capital into High Performance Organizational Capital
Turning Human Capital into High Performance Organizational Capital
John Willis
 
KANBAN FOR IT OPS (DRAGOS DUMITRIU) - LKCE13
KANBAN FOR IT OPS (DRAGOS DUMITRIU) - LKCE13KANBAN FOR IT OPS (DRAGOS DUMITRIU) - LKCE13
KANBAN FOR IT OPS (DRAGOS DUMITRIU) - LKCE13
Lean Kanban Central Europe
 
Providing CI / CD as a Service - AWS Summit Sydney April 2015
Providing CI / CD as a Service - AWS Summit Sydney April 2015Providing CI / CD as a Service - AWS Summit Sydney April 2015
Providing CI / CD as a Service - AWS Summit Sydney April 2015
Peter Leschev
 
All daydevops 2016 - Turning Human Capital into High Performance Organizati...
All daydevops   2016 - Turning Human Capital into High Performance Organizati...All daydevops   2016 - Turning Human Capital into High Performance Organizati...
All daydevops 2016 - Turning Human Capital into High Performance Organizati...
John Willis
 
Puppet Camp Sydney Feb 2014 - A Build Engineering Team’s Journey of Infrastru...
Puppet Camp Sydney Feb 2014 - A Build Engineering Team’s Journey of Infrastru...Puppet Camp Sydney Feb 2014 - A Build Engineering Team’s Journey of Infrastru...
Puppet Camp Sydney Feb 2014 - A Build Engineering Team’s Journey of Infrastru...
Peter Leschev
 
Infrastructure as Code Maturity Model v1
Infrastructure as Code Maturity Model v1Infrastructure as Code Maturity Model v1
Infrastructure as Code Maturity Model v1
Gary Stafford
 
Deming to devops - Devops DC June 2015
Deming to devops   - Devops DC June 2015 Deming to devops   - Devops DC June 2015
Deming to devops - Devops DC June 2015
John Willis
 
AWS re:Invent 2016: Chalk Talk: Succeeding at Infrastructure-as-Code (GPSCT312)
AWS re:Invent 2016: Chalk Talk: Succeeding at Infrastructure-as-Code (GPSCT312)AWS re:Invent 2016: Chalk Talk: Succeeding at Infrastructure-as-Code (GPSCT312)
AWS re:Invent 2016: Chalk Talk: Succeeding at Infrastructure-as-Code (GPSCT312)
Amazon Web Services
 
(ARC307) Infrastructure as Code
(ARC307) Infrastructure as Code(ARC307) Infrastructure as Code
(ARC307) Infrastructure as Code
Amazon Web Services
 
Dockerizing CS50: From Cluster to Cloud to Appliance to Container by David Ma...
Dockerizing CS50: From Cluster to Cloud to Appliance to Container by David Ma...Dockerizing CS50: From Cluster to Cloud to Appliance to Container by David Ma...
Dockerizing CS50: From Cluster to Cloud to Appliance to Container by David Ma...
Docker, Inc.
 
Immutable Awesomeness by John Willis and Josh Corman
Immutable Awesomeness by John Willis and Josh CormanImmutable Awesomeness by John Willis and Josh Corman
Immutable Awesomeness by John Willis and Josh Corman
Docker, Inc.
 
Infrastructure as code: running microservices on AWS using Docker, Terraform,...
Infrastructure as code: running microservices on AWS using Docker, Terraform,...Infrastructure as code: running microservices on AWS using Docker, Terraform,...
Infrastructure as code: running microservices on AWS using Docker, Terraform,...
Yevgeniy Brikman
 

Viewers also liked (12)

Turning Human Capital into High Performance Organizational Capital
Turning Human Capital into High Performance Organizational CapitalTurning Human Capital into High Performance Organizational Capital
Turning Human Capital into High Performance Organizational Capital
 
KANBAN FOR IT OPS (DRAGOS DUMITRIU) - LKCE13
KANBAN FOR IT OPS (DRAGOS DUMITRIU) - LKCE13KANBAN FOR IT OPS (DRAGOS DUMITRIU) - LKCE13
KANBAN FOR IT OPS (DRAGOS DUMITRIU) - LKCE13
 
Providing CI / CD as a Service - AWS Summit Sydney April 2015
Providing CI / CD as a Service - AWS Summit Sydney April 2015Providing CI / CD as a Service - AWS Summit Sydney April 2015
Providing CI / CD as a Service - AWS Summit Sydney April 2015
 
All daydevops 2016 - Turning Human Capital into High Performance Organizati...
All daydevops   2016 - Turning Human Capital into High Performance Organizati...All daydevops   2016 - Turning Human Capital into High Performance Organizati...
All daydevops 2016 - Turning Human Capital into High Performance Organizati...
 
Puppet Camp Sydney Feb 2014 - A Build Engineering Team’s Journey of Infrastru...
Puppet Camp Sydney Feb 2014 - A Build Engineering Team’s Journey of Infrastru...Puppet Camp Sydney Feb 2014 - A Build Engineering Team’s Journey of Infrastru...
Puppet Camp Sydney Feb 2014 - A Build Engineering Team’s Journey of Infrastru...
 
Infrastructure as Code Maturity Model v1
Infrastructure as Code Maturity Model v1Infrastructure as Code Maturity Model v1
Infrastructure as Code Maturity Model v1
 
Deming to devops - Devops DC June 2015
Deming to devops   - Devops DC June 2015 Deming to devops   - Devops DC June 2015
Deming to devops - Devops DC June 2015
 
AWS re:Invent 2016: Chalk Talk: Succeeding at Infrastructure-as-Code (GPSCT312)
AWS re:Invent 2016: Chalk Talk: Succeeding at Infrastructure-as-Code (GPSCT312)AWS re:Invent 2016: Chalk Talk: Succeeding at Infrastructure-as-Code (GPSCT312)
AWS re:Invent 2016: Chalk Talk: Succeeding at Infrastructure-as-Code (GPSCT312)
 
(ARC307) Infrastructure as Code
(ARC307) Infrastructure as Code(ARC307) Infrastructure as Code
(ARC307) Infrastructure as Code
 
Dockerizing CS50: From Cluster to Cloud to Appliance to Container by David Ma...
Dockerizing CS50: From Cluster to Cloud to Appliance to Container by David Ma...Dockerizing CS50: From Cluster to Cloud to Appliance to Container by David Ma...
Dockerizing CS50: From Cluster to Cloud to Appliance to Container by David Ma...
 
Immutable Awesomeness by John Willis and Josh Corman
Immutable Awesomeness by John Willis and Josh CormanImmutable Awesomeness by John Willis and Josh Corman
Immutable Awesomeness by John Willis and Josh Corman
 
Infrastructure as code: running microservices on AWS using Docker, Terraform,...
Infrastructure as code: running microservices on AWS using Docker, Terraform,...Infrastructure as code: running microservices on AWS using Docker, Terraform,...
Infrastructure as code: running microservices on AWS using Docker, Terraform,...
 

Similar to Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infrastructure as Code

How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...
How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...
How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...
Peter Leschev
 
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Lean IT Consulting
 
Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration
Amazon Web Services
 
Trusting the Unknown
Trusting the UnknownTrusting the Unknown
Trusting the Unknown
Jesse Houwing
 
Trusting the Unknown
Trusting the UnknownTrusting the Unknown
Trusting the Unknown
ssuser37f369
 
DCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development PipelineDCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development Pipeline
Docker, Inc.
 
Docker and Puppet for Continuous Integration
Docker and Puppet for Continuous IntegrationDocker and Puppet for Continuous Integration
Docker and Puppet for Continuous Integration
Giacomo Vacca
 
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
Amazon Web Services
 
Steamlining your puppet development workflow
Steamlining your puppet development workflowSteamlining your puppet development workflow
Steamlining your puppet development workflow
Tomas Doran
 
Puppet Camp New York 2014: Streamlining Puppet Development Workflow
Puppet Camp New York 2014: Streamlining Puppet Development Workflow Puppet Camp New York 2014: Streamlining Puppet Development Workflow
Puppet Camp New York 2014: Streamlining Puppet Development Workflow
Puppet
 
Developing in the Cloud
Developing in the CloudDeveloping in the Cloud
Developing in the Cloud
Ryan Cuprak
 
Containerising bootiful microservices javaeeconf
Containerising bootiful microservices javaeeconfContainerising bootiful microservices javaeeconf
Containerising bootiful microservices javaeeconf
Ivan Vasyliev
 
Cloud-Native Builds & Deployments in Bitbucket Pipelines
Cloud-Native Builds & Deployments in Bitbucket PipelinesCloud-Native Builds & Deployments in Bitbucket Pipelines
Cloud-Native Builds & Deployments in Bitbucket Pipelines
Atlassian
 
Continous Delivering a PHP application
Continous Delivering a PHP applicationContinous Delivering a PHP application
Continous Delivering a PHP application
Javier López
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
Amazon Web Services
 
InSpec at DevOps ATL Meetup January 22, 2020
InSpec at DevOps ATL Meetup January 22, 2020InSpec at DevOps ATL Meetup January 22, 2020
InSpec at DevOps ATL Meetup January 22, 2020
Mandi Walls
 
Practical Cloud & Workflow Orchestration
Practical Cloud & Workflow OrchestrationPractical Cloud & Workflow Orchestration
Practical Cloud & Workflow Orchestration
Chris Dagdigian
 
Creating Scalable JVM/Java Apps on Heroku
Creating Scalable JVM/Java Apps on HerokuCreating Scalable JVM/Java Apps on Heroku
Creating Scalable JVM/Java Apps on HerokuJoe Kutner
 
Continuous Delivery the hard way with Kubernetes
Continuous Delivery the hard way with KubernetesContinuous Delivery the hard way with Kubernetes
Continuous Delivery the hard way with Kubernetes
Luke Marsden
 
Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes
Weaveworks
 

Similar to Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infrastructure as Code (20)

How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...
How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...
How Atlassian's Build Engineering Team Has Scaled to 150k Builds Per Month an...
 
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
 
Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration
 
Trusting the Unknown
Trusting the UnknownTrusting the Unknown
Trusting the Unknown
 
Trusting the Unknown
Trusting the UnknownTrusting the Unknown
Trusting the Unknown
 
DCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development PipelineDCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development Pipeline
 
Docker and Puppet for Continuous Integration
Docker and Puppet for Continuous IntegrationDocker and Puppet for Continuous Integration
Docker and Puppet for Continuous Integration
 
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
 
Steamlining your puppet development workflow
Steamlining your puppet development workflowSteamlining your puppet development workflow
Steamlining your puppet development workflow
 
Puppet Camp New York 2014: Streamlining Puppet Development Workflow
Puppet Camp New York 2014: Streamlining Puppet Development Workflow Puppet Camp New York 2014: Streamlining Puppet Development Workflow
Puppet Camp New York 2014: Streamlining Puppet Development Workflow
 
Developing in the Cloud
Developing in the CloudDeveloping in the Cloud
Developing in the Cloud
 
Containerising bootiful microservices javaeeconf
Containerising bootiful microservices javaeeconfContainerising bootiful microservices javaeeconf
Containerising bootiful microservices javaeeconf
 
Cloud-Native Builds & Deployments in Bitbucket Pipelines
Cloud-Native Builds & Deployments in Bitbucket PipelinesCloud-Native Builds & Deployments in Bitbucket Pipelines
Cloud-Native Builds & Deployments in Bitbucket Pipelines
 
Continous Delivering a PHP application
Continous Delivering a PHP applicationContinous Delivering a PHP application
Continous Delivering a PHP application
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
 
InSpec at DevOps ATL Meetup January 22, 2020
InSpec at DevOps ATL Meetup January 22, 2020InSpec at DevOps ATL Meetup January 22, 2020
InSpec at DevOps ATL Meetup January 22, 2020
 
Practical Cloud & Workflow Orchestration
Practical Cloud & Workflow OrchestrationPractical Cloud & Workflow Orchestration
Practical Cloud & Workflow Orchestration
 
Creating Scalable JVM/Java Apps on Heroku
Creating Scalable JVM/Java Apps on HerokuCreating Scalable JVM/Java Apps on Heroku
Creating Scalable JVM/Java Apps on Heroku
 
Continuous Delivery the hard way with Kubernetes
Continuous Delivery the hard way with KubernetesContinuous Delivery the hard way with Kubernetes
Continuous Delivery the hard way with Kubernetes
 
Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes
 

Recently uploaded

FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
g2nightmarescribd
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 

Recently uploaded (20)

FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 

Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infrastructure as Code

  • 1.
  • 2. Peter Leschev @peterleschev Husband, Father of 3 & Atlassian Build Engineering
  • 3. A Build Engineering Team’s Journey of Infrastructure as Code Nov-2014
  • 4. Build Engineering today @ Atlassian • Build platform & services used internally within the company • 90k builds per month • 43k automated tests just for JIRA • Developers expect a reliable infrastructure & fast CI feedback
  • 5. Build Engineering today @ Atlassian • 1000 build agents (own hardware + EC2 instances) • include SCM clients, JDKs, JVM build tools, databases, headless browser testing, python builds, NodeJS, installers & more • Maintain 20 AMIs of various build configurations • 8 Bamboo Servers • maven.atlassian.com / 6 Nexus instances • Monitoring - opsview / graphite / statsd
  • 7. Infrastructure as Code = Puppet + SCM ?
  • 8. 4 years ago... • Manually maintained snowflakes • Started using puppet
  • 10. Production rollout failure puppetmaster build agents
  • 11. Confidence of Change HIGH NONE Lifecycle of an infra change confidence Dev Rollout Soak in Prod
  • 12.
  • 14. Style in Pull Requests
  • 15. Puppet Lint https://github.com/rodjek/puppet-lint Tim Sharpe @rodjek • Automated style checking • Setup automated build that runs checks & posts results • Setup ratchet build to detect regressions
  • 16. Confidence of Change HIGH NONE initial + Code review Lifecycle of an infra change confidence Dev Code review Rollout Soak in Prod
  • 17. Using Staging for Development • Coding on Puppet Master • Culture of manually modifying production - Configuration Drift • Impact on Builds puppetmaster build agents staging puppet environment
  • 18. Vagrant http://www.vagrantup.com/ Mitchell Hashimoto @mitchellh • Easily spin up Infrastructure locally on your laptop • Reproducible / disposable environments • Machine provisioning via Virtual Box / VMWare / AWS • Configuration applied via Shell Scripts / Puppet / Chef • Develop and test infrastructure changes locally
  • 19. Vagrant Vagrantfile vagrant basebox http://www.vagrantup.com/ Mitchell Hashimoto @mitchellh
  • 20. Vagrant Spins up a local VM to a known state Make some puppet changes and then run: Destroy the VM when done to apply your changes SSH into your VM using: to check your changes http://www.vagrantup.com/ Mitchell Hashimoto @mitchellh
  • 21. Confidence of Change HIGH NONE initial + Code review + Vagrant Lifecycle of an infra change confidence Dev Code review Rollout Soak in Prod
  • 22. Vagrant != Production • Vagrant basebox differences with production machines • Originally using publicly available vagrant baseboxes • Installed packages biggest differences • Generating a basebox manually was a painful process
  • 23. Packer http://packer.io Mitchell Hashimoto @mitchellh Vagrant box for Virtualbox packer template JSON Vagrant box for AWS
  • 24. Basebox generation via CI • Latest basebox generated in CI & published to fileshare • No need to generate baseboxes locally
  • 25. Confidence in Change HIGH NONE initial + Code review + Vagrant + Packer Lifecycle of an infra change confidence Dev Code review Rollout Soak in Prod
  • 26. Developing locally Rolling out to staging Rolling out to production Broken build agents!
  • 27. Cucumber https://github.com/cucumber/aruba • Behaviour Driven Development
  • 28. Cucumber & Vagrant Vagrant Custom Provisioner Virtual Box VM puppet apply cucumber *.features via ssh
  • 29. Disadvantages • Requires cucumber dependencies to be installed on tested VM • Tests run within the VM making testing firewall rules harder
  • 30. Confidence in Change HIGH NONE initial + Code review + Vagrant + Packer + Cukes Lifecycle of an infra change confidence Dev Code review Rollout Soak in Prod
  • 31. But it works on my machine! “ – Every Developer”
  • 32. Continuous Integration • ‘From scratch’ provisioning • Confidence that you can rebuild in disaster
  • 33. The Pets: you give nice names, you stroke them, and when they get ill, you nurse them back to health, taking a long time over it The Cattle: you give them numbers. When they get ill, you shoot them – Tim Bell, CERN ” “
  • 34. Confidence in Change HIGH NONE initial + Code review + Vagrant + Packer + Cukes + CI Lifecycle of an infra change confidence Dev Code review CI & Rollout Soak in Prod
  • 36. Spread out CI provision VM #1 Moved from sequential to parallel provisioning provision VM #2 provision VM #3 provision VM #4 provision VM #1 provision VM #2 provision VM #3 provision VM #4
  • 37. There are so many MacPros you can steal
  • 38. The ones I had my eye on....
  • 39. Profiling Puppet Runs Add “--evaltrace” to puppet apply + = Collect and show the longest occurrences of: “Evaluated in ([d.]+) seconds”
  • 40. Profiling Cucumber runs http://itshouldbeuseful.wordpress.com/2010/11/10/find-your-slowest-running-cucumber-features/
  • 41. Delta Provisioning • Provision locally & for CI • Faster & different class of problems found • Matches production state ‘from scratch’ provision delta provision provision VM export VM fileshare import VM box provision VM on success
  • 42. Confidence in Change HIGH NONE initial + Code review + Vagrant + Packer + Cukes + CI + Delta CI Lifecycle of an infra change confidence Dev Code review CI & Rollout Soak in Prod
  • 44. Branch builds BUILDENG-5669 master BUILDENG-5670
  • 45. Confidence in Change HIGH NONE initial + Code review + Vagrant + Packer + Cukes + CI + Delta CI + Branch CI Lifecycle of an infra change confidence Dev Branch CI Code review CI & Rollout Soak in Prod
  • 48. Vagrant-AWS https://github.com/mitchellh/vagrant-aws • MacPros no longer required • They were limited in supply & old • 2x speed improvement • Only limited by our credit card limit
  • 49. Catalog Diff Step 1: Generate a hash of a node’s catalog puppet master --logdest console --compile HOSTNAME HOSTNAME.json - Sort elements - Remove timestamps - Generate shasum f50db91e6461f5bdcb56769a8f77da1fac26943d
  • 50. Catalog Diff Step 2: Compare the hash of master versus your branch to avoid unnecessary provisioning Example 1: master branch f50db91e6461f5bdcb56769a8f77da1fac26943d = f50db91e6461f5bdcb56769a8f77da1fac26943d Hash is the same, no build required Example 2: master branch f50db91e6461f5bdcb56769a8f77da1fac26943d != 18033e4d21b78bab6deb3ae1ff3c147ade5a37ca Hash is different, build required
  • 51. Catalog Diff Step 3: Profit! Reduction in feedback time + $$$ saved Images: http://pixabay.com/p-30984/ https://www.flickr.com/photos/williamnyk/3598113750/
  • 52.
  • 54. Painful Puppet Rollouts • Puppet runs impacted running builds • Disabling all the build agents • Performing the roll out • git clone / librarian-puppet / symlink update on puppetmaster • Manually kick off puppet on all the build agents • Enabling all the build agents • Set of Puppet environments for every bamboo server
  • 55. Graceful Service restarts + Bamboo Agent JVM process watches for touch file & shutdowns when Idle (written as a Bamboo Plugin)
  • 56. Puppet Environments • BEFORE - Multiple puppet envs for each Bamboo Server • jbac_staging • jbac_production • cbac_staging • cbac_production • etc • AFTER - Changed to use ‘staging’ & ‘production’ only
  • 57. Updates on Puppetmaster • BEFORE: Manually on puppetmaster • git clone the puppet tree • run librarian-puppet to pull external modules • Update staging / production symlink • AFTER: Bamboo build which performs the above steps automatically
  • 58. Bot automation - ‘open prs’
  • 59. Less Human interaction + More automation = Higher Confidence
  • 60. Less Human Effort = Increased frequency of releases
  • 61. Confidence in Change HIGH NONE initial + Code review + Vagrant + Packer + Cukes + CI + Delta CI + Branch CI + Frequent Releases Lifecycle of an infra change confidence Dev Branch CI Code review CI & Rollout Soak in Prod
  • 62. I’m scared! “– Peter Leschev, 3.5” years ago Should I be scared? “ – Peter Leschev, 3 months a”go
  • 64. Confidence in Change HIGH NONE initial + Code review + Vagrant + Packer + Cukes + CI + Delta CI + Branch CI + Frequent Releases + Notification Lifecycle of an infra change confidence Dev Branch CI Code review CI & Rollout Soak in Prod
  • 65. Confidence in Change HIGH NONE before after Lifecycle of an infra change confidence Dev Branch CI Code review CI & Rollout Soak in Prod
  • 66. Confidence in Change or Finding & fixing problems sooner rather than later
  • 67. Snowflakes Pets Cattle Stateless Machines
  • 68. We’re still on the Journey Come join us! atlassian.com/jobs
  • 70. Puppet Module for Sonatype Nexus • https://forge.puppetlabs.com/atlassian/nexus_rest • Configure Nexus using Custom Puppet Provider Types rather than XML files