SlideShare ist ein Scribd-Unternehmen logo
1 von 26
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)
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

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Full Stack Automation with Katello & The Foreman
Full Stack Automation with Katello & The ForemanFull Stack Automation with Katello & The Foreman
Full Stack Automation with Katello & The Foreman
 
Auto infra with_foreman_katello
Auto infra with_foreman_katelloAuto infra with_foreman_katello
Auto infra with_foreman_katello
 
Linux host orchestration with Foreman, Puppet and Gitlab
Linux host orchestration with Foreman, Puppet and GitlabLinux host orchestration with Foreman, Puppet and Gitlab
Linux host orchestration with Foreman, Puppet and Gitlab
 
Deploying RDO OpenStack with a pair of plugins
Deploying RDO OpenStack with a pair of pluginsDeploying RDO OpenStack with a pair of plugins
Deploying RDO OpenStack with a pair of plugins
 
Foreman in Your Data Center :OSDC 2015
Foreman in Your Data Center :OSDC 2015Foreman in Your Data Center :OSDC 2015
Foreman in Your Data Center :OSDC 2015
 
CfgMgmtCamp 2015 - Managing the Content Lifecycle with Katello
CfgMgmtCamp 2015 - Managing the Content Lifecycle with KatelloCfgMgmtCamp 2015 - Managing the Content Lifecycle with Katello
CfgMgmtCamp 2015 - Managing the Content Lifecycle with Katello
 
Foreman presentation
Foreman presentationForeman presentation
Foreman presentation
 
Lifecycle Management with Foreman
Lifecycle Management with ForemanLifecycle Management with Foreman
Lifecycle Management with Foreman
 
Deploying Foreman in Enterprise Environments
Deploying Foreman in Enterprise EnvironmentsDeploying Foreman in Enterprise Environments
Deploying Foreman in Enterprise Environments
 
OpenNebula, the foreman and CentOS play nice, too
OpenNebula, the foreman and CentOS play nice, tooOpenNebula, the foreman and CentOS play nice, too
OpenNebula, the foreman and CentOS play nice, too
 
PuppetCamp Sydney 2012 - Building a Multimaster Environment
PuppetCamp Sydney 2012 - Building a Multimaster EnvironmentPuppetCamp Sydney 2012 - Building a Multimaster Environment
PuppetCamp Sydney 2012 - Building a Multimaster Environment
 
PXEless Discovery with Foreman
PXEless Discovery with ForemanPXEless Discovery with Foreman
PXEless Discovery with Foreman
 
OSCamp 2019 | #3 Ansible: Foreman Discovery by Adam Ruzicka
OSCamp 2019 | #3 Ansible: Foreman Discovery by Adam RuzickaOSCamp 2019 | #3 Ansible: Foreman Discovery by Adam Ruzicka
OSCamp 2019 | #3 Ansible: Foreman Discovery by Adam Ruzicka
 
Extending Foreman the easy way with foreman_hooks
Extending Foreman the easy way with foreman_hooksExtending Foreman the easy way with foreman_hooks
Extending Foreman the easy way with foreman_hooks
 
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013
 
Cobbler - Fast and reliable multi-OS provisioning
Cobbler - Fast and reliable multi-OS provisioningCobbler - Fast and reliable multi-OS provisioning
Cobbler - Fast and reliable multi-OS provisioning
 
OSDC 2015: Stephen Benjamin | Foreman in Your Data Center
OSDC 2015: Stephen Benjamin | Foreman in Your Data CenterOSDC 2015: Stephen Benjamin | Foreman in Your Data Center
OSDC 2015: Stephen Benjamin | Foreman in Your Data Center
 
Making your first contribution to Foreman
Making your first contribution to ForemanMaking your first contribution to Foreman
Making your first contribution to Foreman
 
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
 
A user's perspective on SaltStack and other configuration management tools
A user's perspective on SaltStack and other configuration management toolsA user's perspective on SaltStack and other configuration management tools
A user's perspective on SaltStack and other configuration management tools
 

Andere mochten auch

vSphere APIs for performance monitoring
vSphere APIs for performance monitoringvSphere APIs for performance monitoring
vSphere APIs for performance monitoring
Alan Renouf
 
Redis — The AK-47 of Post-relational Databases
Redis — The AK-47 of Post-relational DatabasesRedis — The AK-47 of Post-relational Databases
Redis — The AK-47 of Post-relational Databases
Karel Minarik
 
Monitoring in an Infrastructure as Code Age
Monitoring in an Infrastructure as Code AgeMonitoring in an Infrastructure as Code Age
Monitoring in an Infrastructure as Code Age
Puppet
 

Andere mochten auch (18)

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

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

RubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on RailsRubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on Rails
elliando dias
 
Sonian, Open Source and Sensu
Sonian, Open Source and SensuSonian, Open Source and Sensu
Sonian, Open Source and Sensu
Pete Cheslock
 

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

RubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on RailsRubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on Rails
 
Leveraging docker for hadoop build automation and big data stack provisioning
Leveraging docker for hadoop build automation and big data stack provisioningLeveraging docker for hadoop build automation and big data stack provisioning
Leveraging docker for hadoop build automation and big data stack provisioning
 
Leveraging Docker for Hadoop build automation and Big Data stack provisioning
Leveraging Docker for Hadoop build automation and Big Data stack provisioningLeveraging Docker for Hadoop build automation and Big Data stack provisioning
Leveraging Docker for Hadoop build automation and Big Data stack provisioning
 
Nagios Conference 2014 - Mike Merideth - The Art and Zen of Managing Nagios w...
Nagios Conference 2014 - Mike Merideth - The Art and Zen of Managing Nagios w...Nagios Conference 2014 - Mike Merideth - The Art and Zen of Managing Nagios w...
Nagios Conference 2014 - Mike Merideth - The Art and Zen of Managing Nagios w...
 
The Art and Zen of Managing Nagios With Puppet
The Art and Zen of Managing Nagios With PuppetThe Art and Zen of Managing Nagios With Puppet
The Art and Zen of Managing Nagios With Puppet
 
How bigtop leveraged docker for build automation and one click hadoop provis...
How bigtop leveraged docker for build automation and  one click hadoop provis...How bigtop leveraged docker for build automation and  one click hadoop provis...
How bigtop leveraged docker for build automation and one click hadoop provis...
 
How bigtop leveraged docker for build automation and one click hadoop provis...
How bigtop leveraged docker for build automation and  one click hadoop provis...How bigtop leveraged docker for build automation and  one click hadoop provis...
How bigtop leveraged docker for build automation and one click hadoop provis...
 
Experiences from Running Masterless Puppet - PuppetConf 2014
Experiences from Running Masterless Puppet - PuppetConf 2014Experiences from Running Masterless Puppet - PuppetConf 2014
Experiences from Running Masterless Puppet - PuppetConf 2014
 
2013-cloudconnect-OpenStack@BT
2013-cloudconnect-OpenStack@BT2013-cloudconnect-OpenStack@BT
2013-cloudconnect-OpenStack@BT
 
Puppet Camp New York 2014: Streamlining Puppet Development Workflow
Puppet Camp New York 2014: Streamlining Puppet Development Workflow Puppet Camp New York 2014: Streamlining Puppet Development Workflow
Puppet Camp New York 2014: Streamlining Puppet Development Workflow
 
Steamlining your puppet development workflow
Steamlining your puppet development workflowSteamlining your puppet development workflow
Steamlining your puppet development workflow
 
Accelerate and unify network deployment with Puppet on Juniper
Accelerate and unify network deployment with Puppet on JuniperAccelerate and unify network deployment with Puppet on Juniper
Accelerate and unify network deployment with Puppet on Juniper
 
Workflow Engines for Hadoop
Workflow Engines for HadoopWorkflow Engines for Hadoop
Workflow Engines for Hadoop
 
Stackato v5
Stackato v5Stackato v5
Stackato v5
 
Tips For Maintaining OSS Projects
Tips For Maintaining OSS ProjectsTips For Maintaining OSS Projects
Tips For Maintaining OSS Projects
 
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate) Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
 
MacRuby for Fun and Profit
MacRuby for Fun and ProfitMacRuby for Fun and Profit
MacRuby for Fun and Profit
 
Continuous integration of_puppet_code
Continuous integration of_puppet_codeContinuous integration of_puppet_code
Continuous integration of_puppet_code
 
The Art & Zen of Managing Nagios with Puppet
The Art & Zen of Managing Nagios with PuppetThe Art & Zen of Managing Nagios with Puppet
The Art & Zen of Managing Nagios with Puppet
 
Sonian, Open Source and Sensu
Sonian, Open Source and SensuSonian, Open Source and Sensu
Sonian, Open Source and Sensu
 

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)
  • 14.
  • 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

Hinweis der Redaktion

  1. Facts Examples: installed application version, os version, memory size
  2. 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)
  3. Same parameters can be set on Host level (hierarchical)