Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet
-
Upload
puppet-labs -
Category
Technology
-
view
444 -
download
2
description
Transcript of Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet
![Page 1: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/1.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/2.jpg)
Past (current?) situation
Why do we need continuous delivery ?
![Page 3: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/3.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/4.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/5.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/6.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/7.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/8.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/9.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/10.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/11.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/12.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/13.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/14.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/15.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/16.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/17.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/18.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/19.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/20.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/21.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/22.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/23.jpg)
IT should be easier
Continuous Delivery
![Page 24: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/24.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/25.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/26.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/27.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/28.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/29.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/30.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/31.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/32.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/33.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/34.jpg)
What about puppet ?
![Page 35: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/35.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/36.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/37.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/38.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/39.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/40.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/41.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/42.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/43.jpg)
Configuration as a service
Profils Levels
Configuration Report
Tools
![Page 44: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/44.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/45.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/46.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/47.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/48.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/49.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/50.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/51.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/52.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/53.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/54.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/55.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/56.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/57.jpg)
Sure, we can tweak puppet
![Page 58: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/58.jpg)
Sure, we can tweak puppet
Is this this the way??
![Page 59: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/59.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/60.jpg)
A NEW relationship between DEV & OPS
![Page 61: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/61.jpg)
• 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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/62.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/63.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/64.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/65.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/66.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/67.jpg)
“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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/68.jpg)
“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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/69.jpg)
“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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/70.jpg)
“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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/71.jpg)
“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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/72.jpg)
“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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/73.jpg)
“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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/74.jpg)
“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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/75.jpg)
“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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/76.jpg)
Final words
![Page 77: Puppet Camp Paris 2014: Achieving Continuous Delivery and DevOps with Puppet](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/77.jpg)
• 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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/78.jpg)
• 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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/79.jpg)
• 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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/80.jpg)
• 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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/81.jpg)
• 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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/82.jpg)
• 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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/83.jpg)
• 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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/84.jpg)
• 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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/85.jpg)
• 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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/86.jpg)
• 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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/87.jpg)
• 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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/88.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/89.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/90.jpg)
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](https://reader035.fdocuments.us/reader035/viewer/2022070303/54b760fb4a7959f71f8b4691/html5/thumbnails/91.jpg)
Thank you
Laurent Bernaille, D2SI
@lbernail
@D2SI #PuppetCampParis