91
Achieving Continuous Delivery with puppet Laurent Bernaille, D2SI #PuppetCampParis @D2SI @D2SI #PuppetCampParis

Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Embed Size (px)

DESCRIPTION

Puppet Camp Paris 2014: "Achieving Continuous Delivery and DevOps with Puppet" presented by Laurent Bernaille, D2SI

Citation preview

Page 1: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Achieving Continuous Delivery with puppet

Laurent Bernaille, D2SI

#PuppetCampParis

@D2SI @D2SI #PuppetCampParis

Page 2: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Past (current?) situation

Why do we need continuous delivery ?

Page 3: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Applications do not answer business needs well

Long development cycle

Difficult to get clear specifications

Market can shift quickly

June

Page 4: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Applications do not answer business needs well

Long development cycle

Difficult to get clear specifications

Market can shift quickly

June

What the end user say he needs in January

January

Page 5: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

What the dev team delivers in June

June

Applications do not answer business needs well

Long development cycle

Difficult to get clear specifications

Market can shift quickly

What the end user say he needs in January

January

Page 6: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

What the dev team delivers in June

June

What the end user needs in June

Applications do not answer business needs well

Long development cycle

Difficult to get clear specifications

Market can shift quickly

June

What the end user say he needs in January

January

Page 7: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Development processes are inefficient

Bug are detected too late Code TEST Other work Fix

Page 8: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Development processes are inefficient

Bug are detected too late

Integration Hell

Code TEST Other work Fix

Start integration

Page 9: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Development processes are inefficient

Bug are detected too late

Integration Hell

A lot of wasted time

Code TEST Other work Fix

Request Approve

& Prioritize

Technical Assessment

Code & Test

Verify & Fix

Deploy

20 min 2 min 15 min 2 h 4 h 3 min

½ week 2 weeks 2 weeks 1week ½ week

Processing Time = 6 h 40 min

Waiting Time = 6 weeks

Adapted from Implementing Lean Software Development: From Concept to Cash, Mary & Tom Poppendieck.

Start integration

Page 10: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

OPS view

Relationship with OPS can be “difficult”

Application deployment is a nightmare

Page 11: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

OPS view

Relationship with OPS can be “difficult”

Performance is not only related to hardware

« Make my website faster in Asia»

Application deployment is a nightmare

Page 12: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

OPS view

?

Relationship with OPS can be “difficult”

Performance is not only related to hardware

« Make my website faster in Asia»

Application deployment is a nightmare

« Our application is too slow because of your servers»

Page 13: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

OPS view

?

Relationship with OPS can be “difficult”

DEV view

Performance is not only related to hardware

« Make my website faster in Asia»

Application deployment is a nightmare

« Our application is too slow because of your servers»

Page 14: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

OPS view

?

Relationship with OPS can be “difficult”

DEV view

Performance is not only related to hardware

« Make my website faster in Asia»

Application deployment is a nightmare

« Our application is too slow because of your servers»

Identical servers are always “slightly” different

Page 15: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

OPS view

?

Relationship with OPS can be “difficult”

DEV view

Performance is not only related to hardware

« Make my website faster in Asia»

Application deployment is a nightmare

« Our application is too slow because of your servers»

Identical servers are always “slightly” different

OPS always say “no”

Standards do not evolve

10 deploys per day, Dev & ops cooperation at Flickr John Allspaw & Paul Hammond (Velocity 2009)

Page 16: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

6+ months to setup a new environment

Infrastructure is not very agile

Server “hoarding”

Page 17: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Infrastructure is not very agile

Server “hoarding”

Resources are heavily

shared

Most environments

are underutilized

6+ months to setup a new environment

Page 18: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Infrastructure is not very agile

Server “hoarding”

Resources are heavily

shared

Most environments

are underutilized

6+ months to setup a new environment

Page 19: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Production

Infra setup

Deploy Deploy Deploy Deploy

Utilization : 100%

Infrastructure is not very agile

Server “hoarding”

Resources are heavily

shared

Most environments

are underutilized

6+ months to setup a new environment

Page 20: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Production

Infra setup

Deploy Deploy Deploy Deploy

Utilization : 100%

Preproduction Utilization : 10%

Infrastructure is not very agile

Server “hoarding”

Resources are heavily

shared

Most environments

are underutilized

6+ months to setup a new environment

Page 21: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Production

Infra setup

Deploy Deploy Deploy Deploy

Utilization : 100%

Preproduction Utilization : 10%

Test Utilization : 40%

Infrastructure is not very agile

Server “hoarding”

Resources are heavily

shared

Most environments

are underutilized

6+ months to setup a new environment

Page 22: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Business

Development

Operations

• Applications do not answer business needs well • Too long to get new features

• Integration and bug fixing is painful • A lot of wasted time

• Deployments are very painful • A lot of misunderstanding

• Environment setup is too slow • No on-demand resources

Summary of the issues

WHAT?

Page 23: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

IT should be easier

Continuous Delivery

Page 24: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Agile Manifesto, 2001 Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan

Agile Development

Business

Development

Operations

AG I L E

Page 25: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Test

Discover

Design

Develop

Waterfall method

Developing Incrementally and Iteratively

Long cycles

High-risk

Adaptation is very difficult

6-12 month

Page 26: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

2-4 weeks

Test

Discover

Design

Develop Discover

Design

Develop

Test

Discover

Design

Develop

Test

Discover

Design

Develop

Test

Waterfall method

Developing Incrementally and Iteratively

Agile method

Long cycles

High-risk

Adaptation is very difficult

6-12 month

Low-risk

Many short cycles

Adaptation is much easier

VS

Page 27: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Maintain a single source repository

Automate the build

Make your build self-testing

Every commit should build on an integration machine

Keep the build fast

Test in a clone of the production environment

Make it easy for anyone to get the latest executable

Everyone can see what’s happening

Detect problems early and solve them quickly

Continuous Integration

CI

Business

Development

Operations

Page 28: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Continuous Integration

Discover

Design

Develop

Test

Repository

Version Control System

Source Code

Continuous Integration

Feedback

Source Code

Build Analyze

Code Test

Continuous Integration

Agile

Page 29: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

DevOps : bring the wall down

Business

Development

Operations

DEVOPS

Measure, Analyze & Describe

Constraints (from DEV and OPS) Best practices, methods

Automation

Measure

Share

Culture Align objectives on business needs Innovate

Automate application delivery

Page 30: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Continuous Delivery

Discover

Design

Develop

Test

Repository

Version Control System

Source Code

Continuous Integration

Feedback

Source Code

Build Analyze

Code Test

Deploy

Env

Measure & analyze

Continuous Integration

Agile DevOps

Page 31: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Agi

le

infr

a Control resources

Configure resources

Deploy applications

Create, Delete, start, stop Servers (physical, virtual, in the cloud) Storage volumes, networks

Define system states, when possible Verify system states Reconfigure systems when necessary

Provide a service to deploy applications Automated, with rollbacks

Agile Infrastructure

Business

Development

Operations

Page 32: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Agi

le

infr

a Control resources

Configure resources

Deploy applications

Create, Delete, start, stop Servers (physical, virtual, in the cloud) Storage volumes, networks

Define system states, when possible Verify system states Reconfigure systems when necessary

Provide a service to deploy applications Automated, with rollbacks

Au

tom

atio

n

API

API

API

Agile Infrastructure

Business

Development

Operations

Page 33: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Continuous Delivery

Discover

Design

Develop

Test

Repository

Version Control System

Source Code

Continuous Integration

Feedback

Source Code

Build Analyze

Code Test

Deploy

Env

Measure & analyze

Continuous Integration

Agile DevOps

Configure Provision

Agile infrastructure

Page 34: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

What about puppet ?

Page 35: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Discover

Design

Develop

Test

Repository

Version Control System

Source Code

Continuous Integration

Feedback

Source Code

Build Analyze

Code Test

Deploy

Env

Measure & analyze

Continuous Integration

Agile DevOps

Configure Provision

Agile infrastructure

Puppet use cases

Page 36: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Puppet Master

• Resolvers, time servers, standard packages

• Authentication, security

• Monitoring,…

Use case 1 : core OS configuration

Hiera

Modules

Console

ENC / API

1:Create modules Define variables Assign classes to nodes

Server team uses puppet as a configuration tool

Page 37: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Puppet Master

• Resolvers, time servers, standard packages

• Authentication, security

• Monitoring,…

Use case 1 : core OS configuration

Hiera

Modules

Console

ENC / API

1:Create modules Define variables Assign classes to nodes

4: apply/test catalog

Puppet agent Puppet agent Puppet agent

Server team uses puppet as a configuration tool

Page 38: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Puppet Master

• Resolvers, time servers, standard packages

• Authentication, security

• Monitoring,…

Use case 1 : core OS configuration

Hiera

Modules

Console

ENC / API

1:Create modules Define variables Assign classes to nodes

4: apply/test catalog

Mcollective Get info on nodes

Run agent on subset of nodes

Puppet agent Puppet agent Puppet agent

Server team uses puppet as a configuration tool

Page 39: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Puppet Master

• Resolvers, time servers, standard packages

• Authentication, security

• Monitoring,…

Use case 1 : core OS configuration

Hiera

Modules

Console

ENC / API

1:Create modules Define variables Assign classes to nodes

4: apply/test catalog

Mcollective Get info on nodes

Run agent on subset of nodes

Puppet agent Puppet agent Puppet agent

Most common puppet usage.

Proven for large scale deployment.

Very “Infra oriented”: not opened to applications.

Server team uses puppet as a configuration tool

Page 40: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Binaries of the application

• Puppet manifests and modules describing deployments

Repository

Binaries

Manifest Modules

1: put

Use case 2 : deploy applications

Developers supply :

Page 41: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Binaries of the application

• Puppet manifests and modules describing deployments

Dev servers

Test servers

Dev servers Other env

Repository

Binaries

Manifest Modules

1: put 2: get

4: run

Use case 2 : deploy applications

• Chooses servers (env) where the deployment should happen • Runs puppet and gathers reports; if run fails, forwards to DEV

Developers supply :

OPS team :

Page 42: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Binaries of the application

• Puppet manifests and modules describing deployments

Dev servers

Test servers

Dev servers Other env

Repository

Binaries

Manifest Modules

1: put 2: get

4: run

Use case 2 : deploy applications

• Chooses servers (env) where the deployment should happen • Runs puppet and gathers reports; if run fails, forwards to DEV

Much more efficient than written deployment processes.

Much easier to understand what fails.

Developers supply :

OPS team :

Page 43: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Configuration as a service

Profils Levels

Configuration Report

Tools

Page 44: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Using a “configuration service”

Env

Configuration service

Deploy

API

GUI

• Associate “profiles” to nodes, define variables • Run configuration and get reports

Give application teams the possibility to configure servers 1

Page 45: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Using a “configuration service”

Env

Configuration service

Deploy

API

GUI

• Associate “profiles” to nodes, define variables • Run configuration and get reports

Give application teams the possibility to configure servers 1

Different levels of configuration, different responsibilities 2

Base OS configuration

Standard middlewares

Application middlewares

Application

Page 46: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Can we do that with puppet?

Sure, but tricky with classic DEV / OPS model

Page 47: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Can we do that with puppet?

Sure, but tricky with classic DEV / OPS model

DEV cannot execute anything as root

SURE, but tricky with classic DEV / OPS model

Page 48: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Base OS configuration

Standard middlewares

Application middlewares

Application 2

1

Can we do that with puppet?

Some options :

Sure, but tricky with classic DEV / OPS model

• Second puppet master, or puppet apply (non root) • Other tool

Tool separation 1

DEV cannot execute anything as root

SURE, but tricky with classic DEV / OPS model

Page 49: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Base OS configuration

Standard middlewares

Application middlewares

Application 2

1

Can we do that with puppet?

Some options :

Sure, but tricky with classic DEV / OPS model

• Second puppet master, or puppet apply (non root) • Other tool

Tool separation 1

Ok to run as root but under full control 2

• Custom “profile” facts (facts.d) and hiera • Run with mcollective (limit to some tags) • Read-only console access

DEV cannot execute anything as root

SURE, but tricky with classic DEV / OPS model

Page 50: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Base OS configuration

Standard middlewares

Application middlewares

Application 2

1

Can we do that with puppet?

Some options :

Sure, but tricky with classic DEV / OPS model

• Second puppet master, or puppet apply (non root) • Other tool

Tool separation 1

Ok to run as root but under full control 2

• Custom “profile” facts (facts.d) and hiera • Run with mcollective (limit to some tags) • Read-only console access

Many other ways 3

DEV cannot execute anything as root

SURE, but tricky with classic DEV / OPS model

Page 51: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Approach 1 : OPS write all modules

Version Control System

I need a mongodb module CI Puppet

master

mongodb module

What if DEV need custom modules (they will)

Page 52: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Approach 1 : OPS write all modules

Impossible to scale Not efficient

Version Control System

I need a mongodb module CI Puppet

master

mongodb module

What if DEV need custom modules (they will)

Page 53: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Approach 1 : OPS write all modules

Impossible to scale Not efficient

Version Control System

I need a mongodb module CI Puppet

master

mongodb module

What if DEV need custom modules (they will)

Approach 2 : Pull request

mongodb module

Version Control System

CI Puppet master

Pull request

Version Control System

validated module

Page 54: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Approach 1 : OPS write all modules

Impossible to scale Not efficient

Version Control System

I need a mongodb module CI Puppet

master

mongodb module

Very limited scalabity

What if DEV need custom modules (they will)

Approach 2 : Pull request

mongodb module

Version Control System

CI Puppet master

Pull request

Version Control System

validated module

Page 55: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Approach 1 : OPS write all modules

Impossible to scale Not efficient

Version Control System

I need a mongodb module CI Puppet

master

mongodb module

Very limited scalabity

What if DEV need custom modules (they will)

Approach 2 : Pull request

Approach 3: DEV can push to some repositories

mongodb module

Version Control System

CI Puppet master

mongodb module

Version Control System

CI Puppet master

Pull request

Version Control System

validated module

Page 56: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Approach 1 : OPS write all modules

Impossible to scale Not efficient

Version Control System

I need a mongodb module CI Puppet

master

mongodb module

Very limited scalabity

Complex permissions DEV are still basically root

What if DEV need custom modules (they will)

Approach 2 : Pull request

Approach 3: DEV can push to some repositories

mongodb module

Version Control System

CI Puppet master

mongodb module

Version Control System

CI Puppet master

Pull request

Version Control System

validated module

Page 57: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Sure, we can tweak puppet

Page 58: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Sure, we can tweak puppet

Is this this the way??

Page 59: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Sure, we can tweak puppet

Maybe we should adapt processes and not just tools

Is this this the way??

Page 60: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

A NEW relationship between DEV & OPS

Page 61: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

• Provide application • Ask for env

From separation and control to shared responsiblities

Page 62: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Storage / Network

Servers

• Provide application • Ask for env

• Provide env • Run production

From separation and control to shared responsiblities

Page 63: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Strict separation of roles

Storage / Network

Servers

• Provide application • Ask for env

• Provide env • Run production

From separation and control to shared responsiblities

Page 64: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Strict separation of roles

Storage / Network

Servers

• Provide application • Ask for env

• Provide env • Run production

• Provide programmable resources • Provide advice • Delegate some Prod responsability

Storage

Servers

Servers Network

From separation and control to shared responsiblities

Page 65: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Strict separation of roles

Storage / Network

Servers

• Provide application • Ask for env

• Provide env • Run production

• Provide programmable resources • Provide advice • Delegate some Prod responsability

Storage

Servers

Servers Network

• Provide application • Consume environments • Share responsibility

From separation and control to shared responsiblities

Page 66: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Strict separation of roles

Storage / Network

Servers

• Provide application • Ask for env

• Provide env • Run production

• Provide programmable resources • Provide advice • Delegate some Prod responsability

Storage

Servers

Servers Network

• Provide application • Consume environments • Share responsibility

Shared responsibilities

From separation and control to shared responsiblities

Page 67: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

“Designing Puppet: Roles / Profiles Design Pattern Puppet Camp Stockholm, Feb 2013 (Craig Dunn Puppet Labs)

Resources

What it could look like with the profile/role pattern

Page 68: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

“Designing Puppet: Roles / Profiles Design Pattern Puppet Camp Stockholm, Feb 2013 (Craig Dunn Puppet Labs)

Resources

ssh ntp

dns ldap

Modules

OPS provide core OS modules

What it could look like with the profile/role pattern

Page 69: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

“Designing Puppet: Roles / Profiles Design Pattern Puppet Camp Stockholm, Feb 2013 (Craig Dunn Puppet Labs)

Resources

ssh ntp

dns ldap

Modules

mysql

apache

OPS provide core OS modules

OPS provide middleware modules

What it could look like with the profile/role pattern

Page 70: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

“Designing Puppet: Roles / Profiles Design Pattern Puppet Camp Stockholm, Feb 2013 (Craig Dunn Puppet Labs)

Resources

ssh ntp

dns ldap

Modules

mysql

apache

OS Base Profiles

OPS provide core OS modules

OPS provide middleware modules

OPS provide Base profile

What it could look like with the profile/role pattern

Page 71: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

“Designing Puppet: Roles / Profiles Design Pattern Puppet Camp Stockholm, Feb 2013 (Craig Dunn Puppet Labs)

Resources

ssh ntp

dns ldap

Modules

mysql

apache

OS Base Profiles Wordpress

OPS provide core OS modules

OPS provide middleware modules

OPS provide Base profile

DEV create profiles using modules

What it could look like with the profile/role pattern

Page 72: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

“Designing Puppet: Roles / Profiles Design Pattern Puppet Camp Stockholm, Feb 2013 (Craig Dunn Puppet Labs)

Resources

word press

ssh ntp

dns ldap

Modules

mysql

apache

OS Base Profiles Wordpress

OPS provide core OS modules

OPS provide middleware modules

OPS provide Base profile

DEV create profiles using modules

DEV create some custom modules

What it could look like with the profile/role pattern

Page 73: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

“Designing Puppet: Roles / Profiles Design Pattern Puppet Camp Stockholm, Feb 2013 (Craig Dunn Puppet Labs)

Resources

word press

ssh ntp

dns ldap

Modules

mysql

apache

OS Base Profiles Wordpress

Roles Roles Wordpress-server OPS provide core OS modules

OPS provide middleware modules

OPS provide Base profile

DEV create profiles using modules

DEV create some custom modules

DEV & OPS define roles

What it could look like with the profile/role pattern

Page 74: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

“Designing Puppet: Roles / Profiles Design Pattern Puppet Camp Stockholm, Feb 2013 (Craig Dunn Puppet Labs)

Resources

word press

ssh ntp

dns ldap

Modules

mysql

apache

OS Base Profiles Wordpress

Roles Roles Wordpress-server OPS provide core OS modules

OPS provide middleware modules

OPS provide Base profile

DEV create profiles using modules

DEV create some custom modules

DEV & OPS define roles

DEV & OPS define variables

Hiera

What it could look like with the profile/role pattern

Page 75: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

“Designing Puppet: Roles / Profiles Design Pattern Puppet Camp Stockholm, Feb 2013 (Craig Dunn Puppet Labs)

Resources

word press

ssh ntp

dns ldap

Modules

mysql

apache

OS Base Profiles Wordpress

Roles Roles Wordpress-server OPS provide core OS modules

OPS provide middleware modules

OPS provide Base profile

DEV create profiles using modules

DEV create some custom modules

DEV & OPS define roles

DEV & OPS associate roles to nodes

DEV & OPS define variables

Hiera

Classifier

What it could look like with the profile/role pattern

Page 76: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Final words

Page 77: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

• Automate configuration

• Declare state, keep configuration on track

• Puppet syntax is very expressive

• Variable management with hiera is very efficient

Our feedback on puppet

Puppet is an amazing tool

Page 78: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

• Automate configuration

• Declare state, keep configuration on track

• Puppet syntax is very expressive

• Variable management with hiera is very efficient

Time

Exp

ecta

tio

ns

Our feedback on puppet

Puppet is an amazing tool

Page 79: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

• Automate configuration

• Declare state, keep configuration on track

• Puppet syntax is very expressive

• Variable management with hiera is very efficient

Time

Exp

ecta

tio

ns

Puppet???

Our feedback on puppet

Puppet is an amazing tool

Page 80: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

• Automate configuration

• Declare state, keep configuration on track

• Puppet syntax is very expressive

• Variable management with hiera is very efficient

Time

Exp

ecta

tio

ns

Puppet???

OK, looks interesting First puppet apply

Our feedback on puppet

Puppet is an amazing tool

Page 81: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

• Automate configuration

• Declare state, keep configuration on track

• Puppet syntax is very expressive

• Variable management with hiera is very efficient

Time

Exp

ecta

tio

ns

Puppet???

OK, looks interesting First puppet apply

What the hell are: * Modules (and classes) * Hiera * erb * spaceships??

Our feedback on puppet

Puppet is an amazing tool

Page 82: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

• Automate configuration

• Declare state, keep configuration on track

• Puppet syntax is very expressive

• Variable management with hiera is very efficient

Time

Exp

ecta

tio

ns

Puppet???

OK, looks interesting First puppet apply

What the hell are: * Modules (and classes) * Hiera * erb * spaceships??

First modules

Our feedback on puppet

Puppet is an amazing tool

Page 83: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

• Automate configuration

• Declare state, keep configuration on track

• Puppet syntax is very expressive

• Variable management with hiera is very efficient

Time

Exp

ecta

tio

ns

Puppet???

OK, looks interesting First puppet apply

What the hell are: * Modules (and classes) * Hiera * erb * spaceships??

First modules

Wow this is big

Our feedback on puppet

Puppet is an amazing tool

Page 84: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

• Automate configuration

• Declare state, keep configuration on track

• Puppet syntax is very expressive

• Variable management with hiera is very efficient

Time

Exp

ecta

tio

ns

Puppet???

OK, looks interesting First puppet apply

What the hell are: * Modules (and classes) * Hiera * erb * spaceships??

First modules

Wow this is big

Ok not that simple

Our feedback on puppet

Puppet is an amazing tool

Page 85: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

• Automate configuration

• Declare state, keep configuration on track

• Puppet syntax is very expressive

• Variable management with hiera is very efficient

Time

Exp

ecta

tio

ns

Puppet???

OK, looks interesting First puppet apply

What the hell are: * Modules (and classes) * Hiera * erb * spaceships??

First modules

Wow this is big

Ok not that simple

Too big! We are lost * Variables? * Classification * Module conflicts

Our feedback on puppet

Puppet is an amazing tool

Page 86: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

• Automate configuration

• Declare state, keep configuration on track

• Puppet syntax is very expressive

• Variable management with hiera is very efficient

Time

Exp

ecta

tio

ns

Puppet???

OK, looks interesting First puppet apply

What the hell are: * Modules (and classes) * Hiera * erb * spaceships??

First modules

Wow this is big

Ok not that simple

Too big! We are lost * Variables? * Classification * Module conflicts

Best practices * Roles / Profiles * Variable location

Our feedback on puppet

Puppet is an amazing tool

Page 87: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

• Automate configuration

• Declare state, keep configuration on track

• Puppet syntax is very expressive

• Variable management with hiera is very efficient

Time

Exp

ecta

tio

ns

Puppet???

OK, looks interesting First puppet apply

What the hell are: * Modules (and classes) * Hiera * erb * spaceships??

First modules

Wow this is big

Ok not that simple

Too big! We are lost * Variables? * Classification * Module conflicts

Best practices * Roles / Profiles * Variable location

Our feedback on puppet

• Setups can be complex

• Many solutions to a problem

• Use it for what it does best

Try adapting processes first

• Look for best practices

Puppet is an amazing tool

You can do (almost) anything with puppet, but

Page 88: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

The pace of innovation in IT is accelerating

New time-to-market challenges will require continuous delivery

We will not get continuous delivery without DEVOPS

Puppet is an amazing DEVOPS tool and will help you

Conclusion

Page 89: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

The pace of innovation in IT is accelerating

New time-to-market challenges will require continuous delivery

We will not get continuous delivery without DEVOPS

Puppet is an amazing DEVOPS tool and will help you

Conclusion

But tools cannot do everything: puppet is not a magic solution

Page 90: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

The pace of innovation in IT is accelerating

New time-to-market challenges will require continuous delivery

We will not get continuous delivery without DEVOPS

Puppet is an amazing DEVOPS tool and will help you

Conclusion

• Finding the best way to use puppet for you will take time

• Providing a configuration service will be a challenge

• Processes will need to change

DEV and OPS roles are evolving and Organizations will need to adapt

But tools cannot do everything: puppet is not a magic solution

Page 91: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet

Thank you

Laurent Bernaille, D2SI

@lbernail

@D2SI #PuppetCampParis