SlideShare a Scribd company logo
From recipes to
    running systems
managing production servers as you write code
Goals
Centralise configuration changes
Formalise configuration
Minimise efforts of maintaining systems
Minimise risks and fear of changes
Test infrastructure changes
Principles
Version control recipes
Puppet, Chef to code standard recipes
Re-use recipes across environments
Deploy often and in smaller chunks
Test changes on testing environment
Tools
• Git, Github
• Puppet, Chef
• Cucumber-nagios, Cucumber-puppet,
  Rspec-puppet
• Jenkins,Vagrant, virtualisation, linux
  containers
• Puppet dashboard, Foreman
Puppet

• Configuration management utility
• Written in Ruby (^_^)
• Model driven
• Abstract OS layer
• Focus on high level details and relationships
General overview
   Modules               Puppet Master        Node configuration




               General infrastructure
 Monitoring
                        LDAP / Kerberos           SSH gateway
Nagios, Munin



          Applications infrastructure
Development                  Staging               Production
                                              app servers, web servers,
 httpd, mysqld, ...      VMs, httpd, mysqld
                                                    db servers, ...




                      Puppet clients
Anatomy of a
          puppet run
1. Requests a signed certificate (first run only)
2. Collects facts (hardware, OS, hostname, ...)
3. Obtains latest catalog from master
4. Apply changes
5. Sends report of changes and failure to master
Puppet organisation
  External node
                                        Nodes
    classifier


              Top level classes
              app_server, web_server,
                db_server, db_slave,
                  sphinx_server...



Modules      Apache              Ruby           Mysql
             Nagios               Git           Sphinx
             Munin          Memcached             ....
Structure of a module
                             define how the module
manifests/                           works
                                 static content
files/                          notonthehighstreet.cert
                                dynamic templates
templates/                         httpd.conf.erb
                               ruby based libraries
lib/                            package providers, ...

spec/, tests/, features/... tests for classes, definitions
Manifests
a collection of resources & relationships
Dynamic templates
Pre-defined resources
File        Host
Package     Mount
Service     Exec (commands)
User        SSH key
Group       SSH authorised key
Cron(job)
Resource collections
Classes, parameterised classes, defined resource types



  Classes:
• single inheritance
• singleton
• are typically used to group all the resources
  of a particular package, service, ...
Example of a class
Resource collections
Classes, parameterised classes, defined resource types




  Parameterised classes:
• similar to classes
• accept parameters to customise their
  behavior
Example of a parameterised class
Resource collections
Classes, parameterised classes, defined resource types



  Defined Resource Types:
• no inheritance
• reusable on same system
• cannot define same resources more than
  once
Example of a defined resource type
The Foreman

• Provides web interface to Puppet
• Client inventory
• Collects reports and failures
• External node classifier
• Provision new nodes
Web interface of Puppet system
Server and high-level configuration
            inventory
Collect reports from Puppet master
Log and report errors for immediate
              analysis
Provide nodes configuration
     to Puppet master
Provisioning new node from web
Present

• Most of our services managed by Puppet
• Most of our environments managed by
  Puppet
• Basic testing process in place on Jenkins
Future
•   Centralise host provisioning with Foreman
•   Complete testing cycle with production-like
    testing servers
•   Deploy fully working application servers from
    scratch with Puppet
•   Puppet 3.0 / Ruby 1.9
•   Provide development instance configurable
    with Puppet

More Related Content

PPTX
15 darwino script & command line
PDF
Practical maven-slides 2
PDF
Noit ocon-2010
PDF
Ansible for Configuration Management for Lohika DevOps training 2018 @ Lohika...
PDF
Puppet modules: A Holistic Approach - Geneva
PDF
Creating a Mesos python framework
PDF
JavaCro'14 - Using WildFly core to build high performance web server – Tomaž ...
ODP
DevOps and Chef improve your life
15 darwino script & command line
Practical maven-slides 2
Noit ocon-2010
Ansible for Configuration Management for Lohika DevOps training 2018 @ Lohika...
Puppet modules: A Holistic Approach - Geneva
Creating a Mesos python framework
JavaCro'14 - Using WildFly core to build high performance web server – Tomaž ...
DevOps and Chef improve your life

What's hot (20)

PDF
Continuous Deployment with Jenkins and Salt
PPTX
Osgi based cloud system architecture - Open Cloud Engine
ODP
Devops madrid: successful case in AWS
PDF
Configuration Management - Finding the tool to fit your needs
PPTX
Apache Curator: Past, Present and Future
ODP
nginx: writing your first module
PPTX
Ansible module development 101
PPTX
Introduction to Ansible - Jan 28 - Austin MeetUp
PPTX
Go Faster with Ansible (AWS meetup)
PDF
Ansible - A 'crowd' introduction
PPTX
AVA - a futuristic test runner
KEY
20100425 Configuration Management With Puppet Lfnw
PDF
Amazon EC2 Container Service in Action
PPTX
Configuration Management in the Cloud - Cloud Phoenix Meetup Feb 2014
PPTX
Deploy meteor in production
PPTX
PPTX
Sim a Microsoft Utiliza OpenSource em DevOps!
PPTX
Learning of docker storage driver (container file system)
PDF
Java ScriptingJava Scripting: One VM, Many Languages
Continuous Deployment with Jenkins and Salt
Osgi based cloud system architecture - Open Cloud Engine
Devops madrid: successful case in AWS
Configuration Management - Finding the tool to fit your needs
Apache Curator: Past, Present and Future
nginx: writing your first module
Ansible module development 101
Introduction to Ansible - Jan 28 - Austin MeetUp
Go Faster with Ansible (AWS meetup)
Ansible - A 'crowd' introduction
AVA - a futuristic test runner
20100425 Configuration Management With Puppet Lfnw
Amazon EC2 Container Service in Action
Configuration Management in the Cloud - Cloud Phoenix Meetup Feb 2014
Deploy meteor in production
Sim a Microsoft Utiliza OpenSource em DevOps!
Learning of docker storage driver (container file system)
Java ScriptingJava Scripting: One VM, Many Languages
Ad

Similar to Puppet (20)

PDF
Ricardo Sanchez - Ruby projects of interest for devops
PDF
Ruby projects of interest for DevOps
PPTX
Infrastructure testing with Molecule and TestInfra
PPTX
Go Faster with Ansible (PHP meetup)
PDF
2 Day Bootcamp for OpenStack--Cloud Training by Mirantis (Preview)
PPTX
Oscon London 2016 - Docker from Development to Production
PPTX
Nagios Conference 2014 - Mike Merideth - The Art and Zen of Managing Nagios w...
PPTX
What's new in Docker - InfraKit - Docker Meetup Berlin 2016
PPTX
How maven makes your development group look like a bunch of professionals.
PPTX
Version Control and Continuous Integration
PPTX
Fluo CICD OpenStack Summit
PPTX
Apache maven 2 overview
PDF
SCALE 2011 Deploying OpenStack with Chef
PDF
Priming Your Teams For Microservice Deployment to the Cloud
PPTX
Building a production ready meteor app
PPTX
ServerTemplates - The Next Generation
PPT
Planning for-high-performance-web-application
PPT
Planning For High Performance Web Application
PPTX
Using puppet
PDF
Our Puppet Story (GUUG FFG 2015)
Ricardo Sanchez - Ruby projects of interest for devops
Ruby projects of interest for DevOps
Infrastructure testing with Molecule and TestInfra
Go Faster with Ansible (PHP meetup)
2 Day Bootcamp for OpenStack--Cloud Training by Mirantis (Preview)
Oscon London 2016 - Docker from Development to Production
Nagios Conference 2014 - Mike Merideth - The Art and Zen of Managing Nagios w...
What's new in Docker - InfraKit - Docker Meetup Berlin 2016
How maven makes your development group look like a bunch of professionals.
Version Control and Continuous Integration
Fluo CICD OpenStack Summit
Apache maven 2 overview
SCALE 2011 Deploying OpenStack with Chef
Priming Your Teams For Microservice Deployment to the Cloud
Building a production ready meteor app
ServerTemplates - The Next Generation
Planning for-high-performance-web-application
Planning For High Performance Web Application
Using puppet
Our Puppet Story (GUUG FFG 2015)
Ad

Recently uploaded (20)

PDF
1 - Historical Antecedents, Social Consideration.pdf
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
Getting started with AI Agents and Multi-Agent Systems
PDF
Hindi spoken digit analysis for native and non-native speakers
PPTX
OMC Textile Division Presentation 2021.pptx
PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PPT
What is a Computer? Input Devices /output devices
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Developing a website for English-speaking practice to English as a foreign la...
PDF
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
PPTX
observCloud-Native Containerability and monitoring.pptx
PPTX
Tartificialntelligence_presentation.pptx
PDF
WOOl fibre morphology and structure.pdf for textiles
PDF
2021 HotChips TSMC Packaging Technologies for Chiplets and 3D_0819 publish_pu...
PDF
Enhancing emotion recognition model for a student engagement use case through...
PPTX
TLE Review Electricity (Electricity).pptx
PDF
NewMind AI Weekly Chronicles – August ’25 Week III
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PPTX
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
1 - Historical Antecedents, Social Consideration.pdf
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Assigned Numbers - 2025 - Bluetooth® Document
Getting started with AI Agents and Multi-Agent Systems
Hindi spoken digit analysis for native and non-native speakers
OMC Textile Division Presentation 2021.pptx
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
What is a Computer? Input Devices /output devices
Programs and apps: productivity, graphics, security and other tools
Developing a website for English-speaking practice to English as a foreign la...
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
observCloud-Native Containerability and monitoring.pptx
Tartificialntelligence_presentation.pptx
WOOl fibre morphology and structure.pdf for textiles
2021 HotChips TSMC Packaging Technologies for Chiplets and 3D_0819 publish_pu...
Enhancing emotion recognition model for a student engagement use case through...
TLE Review Electricity (Electricity).pptx
NewMind AI Weekly Chronicles – August ’25 Week III
NewMind AI Weekly Chronicles - August'25-Week II
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...

Puppet

  • 1. From recipes to running systems managing production servers as you write code
  • 2. Goals Centralise configuration changes Formalise configuration Minimise efforts of maintaining systems Minimise risks and fear of changes Test infrastructure changes
  • 3. Principles Version control recipes Puppet, Chef to code standard recipes Re-use recipes across environments Deploy often and in smaller chunks Test changes on testing environment
  • 4. Tools • Git, Github • Puppet, Chef • Cucumber-nagios, Cucumber-puppet, Rspec-puppet • Jenkins,Vagrant, virtualisation, linux containers • Puppet dashboard, Foreman
  • 5. Puppet • Configuration management utility • Written in Ruby (^_^) • Model driven • Abstract OS layer • Focus on high level details and relationships
  • 6. General overview Modules Puppet Master Node configuration General infrastructure Monitoring LDAP / Kerberos SSH gateway Nagios, Munin Applications infrastructure Development Staging Production app servers, web servers, httpd, mysqld, ... VMs, httpd, mysqld db servers, ... Puppet clients
  • 7. Anatomy of a puppet run 1. Requests a signed certificate (first run only) 2. Collects facts (hardware, OS, hostname, ...) 3. Obtains latest catalog from master 4. Apply changes 5. Sends report of changes and failure to master
  • 8. Puppet organisation External node Nodes classifier Top level classes app_server, web_server, db_server, db_slave, sphinx_server... Modules Apache Ruby Mysql Nagios Git Sphinx Munin Memcached ....
  • 9. Structure of a module define how the module manifests/ works static content files/ notonthehighstreet.cert dynamic templates templates/ httpd.conf.erb ruby based libraries lib/ package providers, ... spec/, tests/, features/... tests for classes, definitions
  • 10. Manifests a collection of resources & relationships
  • 12. Pre-defined resources File Host Package Mount Service Exec (commands) User SSH key Group SSH authorised key Cron(job)
  • 13. Resource collections Classes, parameterised classes, defined resource types Classes: • single inheritance • singleton • are typically used to group all the resources of a particular package, service, ...
  • 14. Example of a class
  • 15. Resource collections Classes, parameterised classes, defined resource types Parameterised classes: • similar to classes • accept parameters to customise their behavior
  • 16. Example of a parameterised class
  • 17. Resource collections Classes, parameterised classes, defined resource types Defined Resource Types: • no inheritance • reusable on same system • cannot define same resources more than once
  • 18. Example of a defined resource type
  • 19. The Foreman • Provides web interface to Puppet • Client inventory • Collects reports and failures • External node classifier • Provision new nodes
  • 20. Web interface of Puppet system
  • 21. Server and high-level configuration inventory
  • 22. Collect reports from Puppet master
  • 23. Log and report errors for immediate analysis
  • 24. Provide nodes configuration to Puppet master
  • 26. Present • Most of our services managed by Puppet • Most of our environments managed by Puppet • Basic testing process in place on Jenkins
  • 27. Future • Centralise host provisioning with Foreman • Complete testing cycle with production-like testing servers • Deploy fully working application servers from scratch with Puppet • Puppet 3.0 / Ruby 1.9 • Provide development instance configurable with Puppet

Editor's Notes