SlideShare a Scribd company logo
Using Puppet, Foreman and Git
to Develop and Operate a Large
          Scale Internet Service
Agenda
•   Introduction and background
•   Puppet
•   Foreman
•   Demo: Deploy change to Development Cluster
•   Future plans
•   Questions and Answers
Introduction and background
Joost van de Wijgerd
                                  •   37
Chief Architect / VP Operations
                                  •   Dutch
                                  •   In IT Industry since 1999
                                  •   @ eBuddy since 2009
                                  •   Responsibilities
                                      – Overall Architecture
                                      – Datacenter Operations
About eBuddy
• Founded in 2003
• eBuddy Chat Platform peak at 35M MAU, 9M DAU, 17B
  Messages per month
• Started XMS Messaging Platform in 2010
• Currently managing 3 production sites and 2
  development sites
• About 500 instances (physical and virtual) total
DevOps!? – Some Quotes from the Web
•   “Developer and Operations collaboration”
•   “Infrastructure as code”
•   “Using Automation”
•   “Using Kanban”
DevOps at eBuddy
• Operations
   – Provide Infrastructure and Monitoring
   – Provisioning with Foreman, automating with Puppet
   – Providing a Puppet framework for Developers
   – Organized through Kanban
• Development (Backend Teams)
   – Deliver systems not compiled software (including puppet classes)
   – Manage Development environments
   – Deploy to Production Environments
   – Using Scrum
9     Pull artifact (Pro)
Process
                          3   upload


                                           4   scp puppetmaster
                                                      (Dev)                                      8    puppet run


           2   checkout
                                                                                   1
                                                                                         Read properties
                                                                                   0
                                                         6       post_commit


                                                                                             7       Puppet kick

  1   commit                           5   push properties
Puppet
What is Puppet?
• Centralized Configuration Management
• Automate repetitive tasks
• Deploy applications
How does it work?
Puppet Details
•   Puppet DSL built on top of Ruby
•   Puppet Classes defined in Puppet Modules
•   Use Modules to compose application stacks
•   Collection of Puppet Classes make an environment
•   Puppet environment(s) stored in Git and pulled by
    Puppet Masters
Module Example
• a module is simply a directory tree with a
  specific, predictable structure:
   – MODULE NAME
      •   manifests    contains init.pp file with module class
      •   files        served as static files to agent nodes
      •   templates    ERB (Ruby Templating) files evaluated at runtime
      •   lib          plugins (Ruby Code)
Using puppet, foreman and git to develop and operate a large scale internet service (eBuddy).
Foreman
What is Foreman?
•   External Node Classifier for Puppet
•   Add Nodes to Host Groups
•   Assign Puppet Classes per Host or Host Group
•   Define parameters per Host Group or per Host
•   Report Collector for Puppet runs
•   Kick Puppet agents
•   Access control
    – Let Developers deploy on Production with needing platform access
EBUDDY THEME
EBUDDY THEME
EBUDDY THEME
EBUDDY THEME
EBUDDY THEME
Demo
Future Plans
Future Plans
• Complete automatic provisioning with Foreman
    – Fill in MAC address and Host Group.. Et Voila!
• Refactor for Puppet 3.x and Hiera
    – Completely separate Data and Code
    – To support multiple environments from a single codebase
• Implement staged Git repo approach with Pull Requests
  and Code Reviews
• Unsupervised application deployment
Q&A
We’re Hiring! 
• We’re a Super.Cool.Company©
• Visit jobs.ebuddy.com

More Related Content

ODP
Foreman in your datacenter
PDF
Apache Provisionr (incubating) - Bucharest JUG 10
PDF
Connecting AWS and Katello/The Foreman
PPTX
Foreman-and-Puppet-for-Openstack-Audo-Deployment
PDF
Openstack il2014 staypuft- your friendly foreman openstack installer
PDF
Configuration and lifecycle in Mixed environments
ODP
SaltStack Integration with Foreman (2016)
ODP
Managing your SaltStack Minions with Foreman
Foreman in your datacenter
Apache Provisionr (incubating) - Bucharest JUG 10
Connecting AWS and Katello/The Foreman
Foreman-and-Puppet-for-Openstack-Audo-Deployment
Openstack il2014 staypuft- your friendly foreman openstack installer
Configuration and lifecycle in Mixed environments
SaltStack Integration with Foreman (2016)
Managing your SaltStack Minions with Foreman

What's hot (20)

PDF
Full Stack Automation with Katello & The Foreman
ODP
Auto infra with_foreman_katello
ODP
Linux host orchestration with Foreman, Puppet and Gitlab
PDF
Deploying RDO OpenStack with a pair of plugins
ODP
Foreman in Your Data Center :OSDC 2015
ODP
CfgMgmtCamp 2015 - Managing the Content Lifecycle with Katello
PDF
Foreman presentation
PPTX
Deploying Foreman in Enterprise Environments
PDF
OpenNebula, the foreman and CentOS play nice, too
PDF
PuppetCamp Sydney 2012 - Building a Multimaster Environment
ODP
PXEless Discovery with Foreman
PDF
OSCamp 2019 | #3 Ansible: Foreman Discovery by Adam Ruzicka
PDF
Extending Foreman the easy way with foreman_hooks
PDF
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013
PDF
Cobbler - Fast and reliable multi-OS provisioning
PDF
OSDC 2015: Stephen Benjamin | Foreman in Your Data Center
PDF
Making your first contribution to Foreman
PPTX
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
PDF
A user's perspective on SaltStack and other configuration management tools
PPTX
High availability for puppet - 2016
Full Stack Automation with Katello & The Foreman
Auto infra with_foreman_katello
Linux host orchestration with Foreman, Puppet and Gitlab
Deploying RDO OpenStack with a pair of plugins
Foreman in Your Data Center :OSDC 2015
CfgMgmtCamp 2015 - Managing the Content Lifecycle with Katello
Foreman presentation
Deploying Foreman in Enterprise Environments
OpenNebula, the foreman and CentOS play nice, too
PuppetCamp Sydney 2012 - Building a Multimaster Environment
PXEless Discovery with Foreman
OSCamp 2019 | #3 Ansible: Foreman Discovery by Adam Ruzicka
Extending Foreman the easy way with foreman_hooks
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013
Cobbler - Fast and reliable multi-OS provisioning
OSDC 2015: Stephen Benjamin | Foreman in Your Data Center
Making your first contribution to Foreman
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
A user's perspective on SaltStack and other configuration management tools
High availability for puppet - 2016
Ad

Viewers also liked (18)

PDF
Mapping, Interlinking and Exposing MusicBrainz as Linked Data
PDF
Continuously-Integrated Puppet in a Dynamic Environment
PDF
JSON and the APInauts
PDF
Better encryption & security with MariaDB 10.1 & MySQL 5.7
PDF
PPT
Ruby application based on http
PDF
Dlsecyx pgroammr (Dyslexic Programmer - cool stuff for scaling)
PDF
vSphere APIs for performance monitoring
PDF
PostgreSQL Materialized Views with Active Record
PDF
The Complete MariaDB Server Tutorial - Percona Live 2015
PDF
Redis — The AK-47 of Post-relational Databases
PDF
Taking Control of Chaos with Docker and Puppet
PDF
Detecting headless browsers
ODP
Monitoring in an Infrastructure as Code Age
PDF
How to make keynote like presentation with markdown
PPTX
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
PDF
Lessons I Learned While Scaling to 5000 Puppet Agents
PDF
Orchestrating Docker containers at scale
Mapping, Interlinking and Exposing MusicBrainz as Linked Data
Continuously-Integrated Puppet in a Dynamic Environment
JSON and the APInauts
Better encryption & security with MariaDB 10.1 & MySQL 5.7
Ruby application based on http
Dlsecyx pgroammr (Dyslexic Programmer - cool stuff for scaling)
vSphere APIs for performance monitoring
PostgreSQL Materialized Views with Active Record
The Complete MariaDB Server Tutorial - Percona Live 2015
Redis — The AK-47 of Post-relational Databases
Taking Control of Chaos with Docker and Puppet
Detecting headless browsers
Monitoring in an Infrastructure as Code Age
How to make keynote like presentation with markdown
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Lessons I Learned While Scaling to 5000 Puppet Agents
Orchestrating Docker containers at scale
Ad

Similar to Using puppet, foreman and git to develop and operate a large scale internet service (eBuddy). (20)

PDF
Puppet and Telefonica R&D
KEY
Keynote Puppet Camp San Francisco 2010
PDF
20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...
PPTX
Puppet camp amsterdam
PDF
Story of Puppet @eBay Global Classifieds Group (eCG)
PDF
Puppet buero20 presentation
KEY
From Dev to DevOps - FOSDEM 2012
KEY
Portable infrastructure with puppet
KEY
20100425 Configuration Management With Puppet Lfnw
ODP
Continuous Delivery of Puppet Manifests
PPT
Getting to push_button_deploys
PDF
Puppet modules: A Holistic Approach - Geneva
PDF
Using Puppet - Real World Configuration Management
KEY
Puppet
PDF
Puppet Camp Dublin - 06/2012
PDF
Creating a mature puppet system
PDF
Creating a Mature Puppet System
PDF
Developing IT infrastructures with Puppet
PDF
20090514 Introducing Puppet To Sasag
KEY
John Adams Puppet Camp 2010
Puppet and Telefonica R&D
Keynote Puppet Camp San Francisco 2010
20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...
Puppet camp amsterdam
Story of Puppet @eBay Global Classifieds Group (eCG)
Puppet buero20 presentation
From Dev to DevOps - FOSDEM 2012
Portable infrastructure with puppet
20100425 Configuration Management With Puppet Lfnw
Continuous Delivery of Puppet Manifests
Getting to push_button_deploys
Puppet modules: A Holistic Approach - Geneva
Using Puppet - Real World Configuration Management
Puppet
Puppet Camp Dublin - 06/2012
Creating a mature puppet system
Creating a Mature Puppet System
Developing IT infrastructures with Puppet
20090514 Introducing Puppet To Sasag
John Adams Puppet Camp 2010

Using puppet, foreman and git to develop and operate a large scale internet service (eBuddy).

  • 1. Using Puppet, Foreman and Git to Develop and Operate a Large Scale Internet Service
  • 2. Agenda • Introduction and background • Puppet • Foreman • Demo: Deploy change to Development Cluster • Future plans • Questions and Answers
  • 4. Joost van de Wijgerd • 37 Chief Architect / VP Operations • Dutch • In IT Industry since 1999 • @ eBuddy since 2009 • Responsibilities – Overall Architecture – Datacenter Operations
  • 5. About eBuddy • Founded in 2003 • eBuddy Chat Platform peak at 35M MAU, 9M DAU, 17B Messages per month • Started XMS Messaging Platform in 2010 • Currently managing 3 production sites and 2 development sites • About 500 instances (physical and virtual) total
  • 6. DevOps!? – Some Quotes from the Web • “Developer and Operations collaboration” • “Infrastructure as code” • “Using Automation” • “Using Kanban”
  • 7. DevOps at eBuddy • Operations – Provide Infrastructure and Monitoring – Provisioning with Foreman, automating with Puppet – Providing a Puppet framework for Developers – Organized through Kanban • Development (Backend Teams) – Deliver systems not compiled software (including puppet classes) – Manage Development environments – Deploy to Production Environments – Using Scrum
  • 8. 9 Pull artifact (Pro) Process 3 upload 4 scp puppetmaster (Dev) 8 puppet run 2 checkout 1 Read properties 0 6 post_commit 7 Puppet kick 1 commit 5 push properties
  • 10. What is Puppet? • Centralized Configuration Management • Automate repetitive tasks • Deploy applications
  • 11. How does it work?
  • 12. Puppet Details • Puppet DSL built on top of Ruby • Puppet Classes defined in Puppet Modules • Use Modules to compose application stacks • Collection of Puppet Classes make an environment • Puppet environment(s) stored in Git and pulled by Puppet Masters
  • 13. Module Example • a module is simply a directory tree with a specific, predictable structure: – MODULE NAME • manifests  contains init.pp file with module class • files  served as static files to agent nodes • templates  ERB (Ruby Templating) files evaluated at runtime • lib  plugins (Ruby Code)
  • 16. What is Foreman? • External Node Classifier for Puppet • Add Nodes to Host Groups • Assign Puppet Classes per Host or Host Group • Define parameters per Host Group or per Host • Report Collector for Puppet runs • Kick Puppet agents • Access control – Let Developers deploy on Production with needing platform access
  • 22. Demo
  • 24. Future Plans • Complete automatic provisioning with Foreman – Fill in MAC address and Host Group.. Et Voila! • Refactor for Puppet 3.x and Hiera – Completely separate Data and Code – To support multiple environments from a single codebase • Implement staged Git repo approach with Pull Requests and Code Reviews • Unsupervised application deployment
  • 25. Q&A
  • 26. We’re Hiring!  • We’re a Super.Cool.Company© • Visit jobs.ebuddy.com

Editor's Notes

  • #12: Facts Examples: installed application version, os version, memory size
  • #15: service, package and file are built-in resource typesResource-type handled by pluggable providers -> example aptAny changes to the ntp.conf will cause the service to restart (if running)
  • #20: Same parameters can be set on Host level (hierarchical)