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

Post on 21-Mar-2017

137 views 1 download

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

Garrett Honeycuttgh@learnpuppet.com

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 Honeycuttgh@learnpuppet.com

learnpuppet.com@learnpuppet

Continuous Deployment Pipeline for Systems

2017-03-11Cascadia IT Conf

Seattle, WA