Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11
-
Upload
garrett-honeycutt -
Category
Engineering
-
view
137 -
download
1
Transcript of Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11
Garrett [email protected]
learnpuppet.com@learnpuppet
Continuous Deployment Pipeline for Systems
2017-03-11Cascadia IT Conf
Seattle, WA
# whoami
7th year at CasitConf!
LearnPuppet.com
Automation consulting specializing in Puppet
What is CD?
Continuous Delivery
Continuous Deployment
"Continuous Delivery doesn't mean every change is
deployed to production ASAP. It means every change is
proven to bedeployable at any time"
@ccaum
Why?
Fail fast
Quick feedback leads to fixing the issue faster
Increasing Pain
Boring Deployments
Take the excitement out of making changes
Putting out fires
Reactive or Proactive?
MTTR vs MTBF
Mean Time to Repair
Mean Time Between Failures
Agility
Response to business needs
Enablement
Enable your business
Debugging
Solve one problem at a time
Concepts
Pipeline
Series of steps that are tied together through automation
Jenkins
Determinism
Repeatable results
Artifact
All things necessary to configure a system.
Artifact
Immutable
Artifact
You need an artifact store
Artifact
Moves through the pipeline
Roles
Each system has exactly one
Profiles
Describe technical makeup for roles
Site specific data
Control repo
mod 'ssh', :git => 'https://github.com/ghoneycutt/puppet-module-ssh.git', :ref => 'v3.49.1'
Pipeline
Let's build a real pipeline.
Start small
Use manual triggers if needed
Pipeline
Cost and Time rises each step
Create an artifact
Static Analysis
Fast!
Save artifact
Upload to artifact store
Test config mgmt
Role based perspective
Functional testing per role
Build a system and verify its state
Functional testing per role
Build a system andverify its state
Functional testing multi-node
Test the entire stack
Function testing of systems
From point of view of consumer
Tools galore
Lot's of choices here
Monitoring
Run monitoring against environment
Performance Testing
Does your new feature provide worse service?
Security Testing
Find vulnerabilities before deployment
Compliance
Reporting that shows you are in compliance
What to deploy?
Code and data to maintain state
What to deploy?
Entire systems
Triggers
How does the pipeline start?
Module development
Individual modules
Module development
What to test?
Module development
How to test?
TravisCI
AppVeyor
Module testing
Matrix tests
Feedback in PR
Feedback in PR
Control repo# upsteam repo mod 'ssh', :git => 'https://github.com/ghoneycutt/puppet-module-ssh.git', :ref => 'v3.49.1'
# private module mod 'myapp', :git => 'https://github.com/me/puppet-module-myapp.git', :ref => 'master'
Triggers
How does the pipeline start?
Where to put testing scripts?
Keep tests close to code
Information Radiator
Let people know what's happening
ChatOps
Tell people when something breaks or is deployed
Culture
Breaking the build is OK
Failing in production
You are not done until you write a test
Rely on the Pipeline
Never touching Prod
Start small1. Add a different type of testing2. Write tests3. Repeat
Confidence
Garrett [email protected]
learnpuppet.com@learnpuppet
Continuous Deployment Pipeline for Systems
2017-03-11Cascadia IT Conf
Seattle, WA