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

Achieving Continuous Delivery with Puppet

  • Upload
    d2si

  • View
    860

  • Download
    0

Embed Size (px)

DESCRIPTION

Laurent Bernaille's presentation at the Puppet Camp Paris - 8 avril 2014.

Citation preview

Page 1: Achieving Continuous Delivery with Puppet

Achieving Continuous Delivery with puppet

Laurent Bernaille, D2SI

#PuppetCampParis

@D2SI @D2SI #PuppetCampParis

Page 2: Achieving Continuous Delivery with Puppet

Past (current?) situation

Why do we need continuous delivery ?

Page 3: Achieving Continuous Delivery with Puppet

Applications do not answer business needs well

Long development cycle

Difficult to get clear specifications

Market can shift quickly

June

Page 4: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery with Puppet

Development processes are inefficient

Bug are detected too late Code TEST Other work Fix

Page 8: Achieving Continuous Delivery with Puppet

Development processes are inefficient

Bug are detected too late

Integration Hell

Code TEST Other work Fix

Start integration

Page 9: Achieving Continuous Delivery 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: Achieving Continuous Delivery with Puppet

OPS view

Relationship with OPS can be “difficult”

Application deployment is a nightmare

Page 11: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery with Puppet

6+ months to setup a new environment

Infrastructure is not very agile

Server “hoarding”

Page 17: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery with Puppet

IT should be easier

Continuous Delivery

Page 24: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery with Puppet

What about puppet ?

Page 35: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery with Puppet

Configuration as a service

Profils Levels

Configuration Report

Tools

Page 44: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery with Puppet

Can we do that with puppet?

Sure, but tricky with classic DEV / OPS model

Page 47: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery with Puppet

Sure, we can tweak puppet

Page 58: Achieving Continuous Delivery with Puppet

Sure, we can tweak puppet

Is this this the way??

Page 59: Achieving Continuous Delivery with Puppet

Sure, we can tweak puppet

Maybe we should adapt processes and not just tools

Is this this the way??

Page 60: Achieving Continuous Delivery with Puppet

A NEW relationship between DEV & OPS

Page 61: Achieving Continuous Delivery with Puppet

• Provide application • Ask for env

From separation and control to shared responsiblities

Page 62: Achieving Continuous Delivery with Puppet

Storage / Network

Servers

• Provide application • Ask for env

• Provide env • Run production

From separation and control to shared responsiblities

Page 63: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery with Puppet

Final words

Page 77: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery 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: Achieving Continuous Delivery with Puppet

Thank you

Laurent Bernaille, D2SI

@lbernail

@D2SI #PuppetCampParis