puppetconf 2016: testing and delivering puppet – michael stahnke, puppet
TRANSCRIPT
@stahnma
Testing and Delivering PuppetMichael Stahnke | Director of Engineering | @stahnma
@stahnma
Drawn Title Slide
Michael StahnkePuppet, Inc
Director of Engineering
@stahnma
@stahnma
Building and Testing PuppetWhat are we doing and Why are we doing it?
@stahnma
@stahnma
We have a CI system
@stahnma
@stahnma@stahnma
@stahnma
@stahnma
@stahnma
@stahnma
Definition of history
@stahnma
@stahnma
@stahnma
How is Pe formed?
@stahnma
@stahnma@stahnma
@stahnma@stahnma
@stahnma
We were excited about 500 builds a week
shipping 3 times a week new platforms
@stahnma
@stahnma
Composition
@stahnma
@stahnma
Growing jenkins
@stahnma
@stahnma
30-40% failure rate
@stahnma
@stahnma
Digging into failures
@stahnma
@stahnma
v
@stahnma
Failures are still valid
@stahnma
@stahnma
Errors are not
@stahnma
@stahnma
@stahnma@stahnma
@stahnma@stahnma
@stahnma@stahnma
@stahnma
Build our own tools
@stahnma
@stahnma
List of tools we’ve built
@stahnma
@stahnma
Dont’ forget JJB
@stahnma
@stahnma
@stahnma
Study through observation and experiment
What are we doing?
@stahnma
@stahnma
The scientific method
@stahnma
@stahnma
The hypothesis
@stahnma
@stahnma
The experiment
@stahnma
@stahnma
@stahnma
The GoalDeveloper must be able to make a small change and
measure it without intervention
@stahnma
A commit
@stahnma
@stahnma
What’s the required path?
@stahnma
@stahnma@stahnma
@stahnma
Review a change
@stahnma
@stahnma
@stahnma
The build Process
@stahnma
@stahnma
Fetch Sources
@stahnma
@stahnma
Patch thing if applicable
@stahnma
@stahnma
Build all components
@stahnma
@stahnma
Place components into an All in One Package
@stahnma
@stahnma
@stahnma
@stahnma
@stahnma@stahnma
@stahnma@stahnma
@stahnma@stahnma
@stahnma
@stahnma
The Component Process
@stahnma
@stahnma
The Composite Process
@stahnma@stahnma
@stahnma
The Control
@stahnma
@stahnma
The variables
@stahnma
@stahnma
Small variable illustration
@stahnma
@stahnma@stahnma
@stahnma
Challenges of on premise deliveryCost of being wrong
user’s ability to update multiple stream upgrade matrix
@stahnma
Error rate vs Failure
@stahnma
@stahnma
Today’s constraints
@stahnma
@stahnma
2% error rate story
@stahnma
@stahnma
Capacity problems
@stahnma
@stahnma
Entry point onto the system
@stahnma@stahnma
@stahnma@stahnma
@stahnma
What’s next
@stahnma
@stahnma
Mesos
@stahnma
@stahnma
ABS
@stahnma
Run me maybe
@stahnma
@stahnma
Dont’ forget JJB
@stahnma
@stahnma
Job DSL
@stahnma
@stahnma
People organization
@stahnma
@stahnma
Goals for our Team
@stahnma
@stahnma
Sidebar
@stahnma
@stahnma
Tools and Sources Slide
@stahnma
@stahnma
New platform
@stahnma
Start building
@stahnma
@stahnma
Facter/ T&P
@stahnma
@stahnma
Workflow for shipment
@stahnma
@stahnma
https://gist.github.com/stahnma/5d07b2a61387ab81e1f66e8ea4a32ab4
Final Thoughts
● Puppet is difficult to build and test, but that’s what makes it fun
● We’ve learned a ton along the way, we’re still going
● New mistakes and lessons are indications of forward progress
● We build our own tools when we see fit, but prefer not to
● The system is our factory floor
● The system performs science
● The people make the system
@stahnma
`