68
Garrett Honeycutt [email protected] learnpuppet.com @learnpuppet Continuous Deployment Pipeline for Systems 2017-03-11 Cascadia IT Conf Seattle, WA

Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Embed Size (px)

Citation preview

Page 1: 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

Page 2: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

# whoami

7th year at CasitConf!

LearnPuppet.com

Automation consulting specializing in Puppet

Page 3: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

What is CD?

Continuous Delivery

Continuous Deployment

Page 4: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

"Continuous Delivery doesn't mean every change is

deployed to production ASAP. It means every change is

proven to bedeployable at any time"

@ccaum

Page 5: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Why?

Page 6: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Fail fast

Quick feedback leads to fixing the issue faster

Page 7: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Increasing Pain

Page 8: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Boring Deployments

Take the excitement out of making changes

Page 9: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Putting out fires

Reactive or Proactive?

Page 10: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

MTTR vs MTBF

Mean Time to Repair

Mean Time Between Failures

Page 11: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Agility

Response to business needs

Page 12: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Enablement

Enable your business

Page 13: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Debugging

Solve one problem at a time

Page 14: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Concepts

Page 15: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Pipeline

Series of steps that are tied together through automation

Page 16: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Jenkins

Page 17: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Determinism

Repeatable results

Page 18: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Artifact

All things necessary to configure a system.

Page 19: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Artifact

Immutable

Page 20: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Artifact

You need an artifact store

Page 21: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11
Page 22: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Artifact

Moves through the pipeline

Page 23: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Roles

Each system has exactly one

Page 24: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Profiles

Describe technical makeup for roles

Site specific data

Page 25: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Control repo

mod 'ssh', :git => 'https://github.com/ghoneycutt/puppet-module-ssh.git', :ref => 'v3.49.1'

Page 26: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Pipeline

Let's build a real pipeline.

Page 27: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Start small

Use manual triggers if needed

Page 28: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Pipeline

Cost and Time rises each step

Page 29: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Create an artifact

Page 30: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Static Analysis

Fast!

Page 31: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Save artifact

Upload to artifact store

Page 32: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Test config mgmt

Role based perspective

Page 33: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Functional testing per role

Build a system and verify its state

Page 34: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11
Page 35: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11
Page 36: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Functional testing per role

Build a system andverify its state

Page 37: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11
Page 38: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Functional testing multi-node

Test the entire stack

Page 39: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Function testing of systems

From point of view of consumer

Page 40: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Tools galore

Lot's of choices here

Page 41: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Monitoring

Run monitoring against environment

Page 42: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Performance Testing

Does your new feature provide worse service?

Page 43: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Security Testing

Find vulnerabilities before deployment

Page 44: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Compliance

Reporting that shows you are in compliance

Page 45: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

What to deploy?

Code and data to maintain state

Page 46: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

What to deploy?

Entire systems

Page 47: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Triggers

How does the pipeline start?

Page 48: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Module development

Individual modules

Page 49: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Module development

What to test?

Page 50: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Module development

How to test?

Page 51: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

TravisCI

Page 52: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

AppVeyor

Page 53: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Module testing

Matrix tests

Page 54: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11
Page 55: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Feedback in PR

Page 56: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Feedback in PR

Page 57: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

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'

Page 58: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Triggers

How does the pipeline start?

Page 59: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Where to put testing scripts?

Keep tests close to code

Page 60: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Information Radiator

Let people know what's happening

Page 61: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11
Page 62: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

ChatOps

Tell people when something breaks or is deployed

Page 63: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Culture

Breaking the build is OK

Page 64: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Failing in production

You are not done until you write a test

Page 65: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Rely on the Pipeline

Never touching Prod

Page 66: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Start small1. Add a different type of testing2. Write tests3. Repeat

Page 67: Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-03-11

Confidence

Page 68: 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