SlideShare a Scribd company logo
September 24, 2014 
Experiences from 
running masterless 
Puppet 
Erik Dalén
whoami 
• System engineer at Spotify since almost 3 years. 
• Community contributor to Puppet. 
• Author of Puppet Explorer web UI. 
• Author of the puppetdbquery, dnsquery and puppet ls modules. 
2
Agenda 
• Background about our puppet setup 
• How we implemented masterless 
• Why we did the switch to masterless 
• New workflows and future improvements 
3
Background 
• Puppet users since 4 years 
• Two large Puppet installations, 20+ Puppet masters. 
• A single repository with all modules 
• Git branches mapped to Puppet environments 
• Code review in Gerrit to merge into production branch 
• Tests using AWS virtual machines on every code review 
4
Section name 
Implementation 
Started with just 
switching to the 
same workflow 
but masterless. 
Using a custom Ruby 
“wrapper” around 
puppet apply. 
5 
Gerrit 
SITE X 
SITE X 
git mirror git mirror 
SITE Y 
git mirror git mirror 
PuppetDB 
Node 
Node 
Node 
● ServerDB 
● LDAP 
Gerrit replication Gerrit replication 
git pull git pull 
failover if 
pod mirrors 
are 
unavailable 
Queries 
* Queries 
* Store facts 
* Store catalog 
* Store report 
hiera 
secrets 
hiera 
secrets 
HTTPS 
GET 
auth by 
cert 
Puppet CA 
request 
certificate
Benefits of this setup 
• Debug logging of compilation and hiera lookups 
• Ability to get traceback of custom functions directly on the node 
• Deprecation warnings from compilation visible on the node 
$ sppuppet hiera resolvconf::servers 
8.8.8.8 
8.8.4.4 
6
Drawbacks 
• Requires more configuration, and can’t use puppet to manage it. 
• Quite specialised. 
7
Secret management 
• Small web service where nodes authenticates using their SSL cert 
• Calculates the facts for the node from the certificate 
• Sends the secret hiera data that applies to that particular node 
8
PuppetDB access control 
• Very binary per default, allow everyone or a whitelist 
9 
Node Apache PuppetDB 
mod_ext_filter 
jq
Why switch to masterless? 
• Scaling the Puppet masters not an issue 
• But scaling the workflow is an issue 
10
Growing amount of committers 
11 
Number of monthly committers 
220 
165 
110 
55 
0 
2 years ago 1 year ago now
Growing amount of modules 
12 
Number of modules 
600 
450 
300 
150 
0 
2 years ago 1 year ago now
More complex dependencies 
• 126 modules using the apache module 
• 91 modules using the nginx module 
• 92 modules using the postgresl module 
Backwards incompatible changes to shared modules almost 
impossible to do. 
13
Flexible workflow needed 
• Allow one set of modules per Puppet run determined by hiera 
• Easier ways to do continuous delivery of both application and 
configuration 
• Gradual rollout of new module versions 
14
Why not r10k or librarian-puppet? 
Both great utilities that allow building a environment dynamically. 
But it is still a fixed environment for many nodes. 
production_new_apache 
production_new_apache_new_postgres 
production_old_apache_new_postgres 
production_new_apache_old_postgres 
15
Our solution to the problem 
At each puppet 
run we look in 
hiera data 
which modules 
to install. 
16 
hiera/common.yaml: 
modules: 
spotify-hostbase: latest 
hiera/role/spotify_web.yaml 
modules: 
spotify-apache: latest 
hiera/role/puppetexplorer.yaml 
modules: 
puppetlabs-apache: latest
Internal forge 
• A simple forge implementation using the new V3 forge API 
• Mirrors the upstream forge 
• Will be used for distributing internal modules as well 
github.com/jhaals/puppet-anvil 
17
Questions?

More Related Content

PDF
De-centralise and Conquer: Masterless Puppet in a Dynamic Environment
PDF
Masterless puppet
PDF
Puppet Camp Chicago 2014: Running Multiple Puppet Masters (Beginner)
PDF
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013
PDF
Continuously-Integrated Puppet in a Dynamic Environment
PDF
Red Hat Satellite 6 - Automation with Puppet
PPTX
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
PDF
Puppet Camp Berlin 2015: Andrea Giardini | Configuration Management @ CERN: G...
De-centralise and Conquer: Masterless Puppet in a Dynamic Environment
Masterless puppet
Puppet Camp Chicago 2014: Running Multiple Puppet Masters (Beginner)
Running at Scale: Practical Performance Tuning with Puppet - PuppetConf 2013
Continuously-Integrated Puppet in a Dynamic Environment
Red Hat Satellite 6 - Automation with Puppet
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
Puppet Camp Berlin 2015: Andrea Giardini | Configuration Management @ CERN: G...

What's hot (20)

PDF
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
PDF
Configuration Management - Finding the tool to fit your needs
PDF
SaltConf14 - Anita Kuno, HP & OpenStack - Using SaltStack for event-driven or...
PDF
PuppetCamp Sydney 2012 - Building a Multimaster Environment
PDF
Spot Trading - A case study in continuous delivery for mission critical finan...
PDF
SaltConf14 - Eric johnson, Google - Orchestrating Google Compute Engine with ...
PPTX
SaltConf 2014: Safety with powertools
PDF
SaltConf14 - Matthew Williams, Flowroute - Salt Virt for Linux contatiners an...
PDF
Getting started with puppet and vagrant (1)
PDF
Ansible Case Studies
PPTX
Docker ansible-make-chef-puppet-unnecessary-minnihan
PDF
Making Spinnaker Go @ Stitch Fix
PDF
Puppet Camp LA 2015: Server Management with Puppet on AWS for a fast-growing ...
PDF
Introduction to ansible
PPTX
Ansible presentation
PDF
ZooKeeper - wait free protocol for coordinating processes
PDF
Minikube Workshop Handout
PDF
Steamlining your puppet development workflow
PDF
Docker and Maestro for fun, development and profit
PDF
OMD and Check_mk
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Configuration Management - Finding the tool to fit your needs
SaltConf14 - Anita Kuno, HP & OpenStack - Using SaltStack for event-driven or...
PuppetCamp Sydney 2012 - Building a Multimaster Environment
Spot Trading - A case study in continuous delivery for mission critical finan...
SaltConf14 - Eric johnson, Google - Orchestrating Google Compute Engine with ...
SaltConf 2014: Safety with powertools
SaltConf14 - Matthew Williams, Flowroute - Salt Virt for Linux contatiners an...
Getting started with puppet and vagrant (1)
Ansible Case Studies
Docker ansible-make-chef-puppet-unnecessary-minnihan
Making Spinnaker Go @ Stitch Fix
Puppet Camp LA 2015: Server Management with Puppet on AWS for a fast-growing ...
Introduction to ansible
Ansible presentation
ZooKeeper - wait free protocol for coordinating processes
Minikube Workshop Handout
Steamlining your puppet development workflow
Docker and Maestro for fun, development and profit
OMD and Check_mk
Ad

Viewers also liked (17)

PPTX
Puppet at Spotify
PPTX
关注色盲人群
PDF
Rump - making Puppetmaster-less Puppet meaty
PDF
Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB
PPTX
Managing and Scaling Puppet - PuppetConf 2014
PPTX
Monitis: All-in-One Systems Monitoring from the Cloud
PDF
Puppet Camp Charlotte 2015: Manage Your Switches Like Servers
PDF
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
PDF
Puppet Camp Portland 2014: Masterless Puppet in AWS
PDF
Puppet Camp Charlotte 2015: Use Puppet to Manage your NetApp Storage Infrastr...
ODP
Foreman in Your Data Center :OSDC 2015
PDF
Puppetconf 2015 - Puppet Reporting with Elasticsearch Logstash and Kibana
KEY
Puppet for dummies - ZendCon 2011 Edition
PDF
Lessons I Learned While Scaling to 5000 Puppet Agents
PDF
A Spotify Presentation - Case studies
PDF
Vagrant + Docker provider [+Puppet]
PPTX
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Puppet at Spotify
关注色盲人群
Rump - making Puppetmaster-less Puppet meaty
Puppet Camp Melbourne 2014: Node Collaboration with PuppetDB
Managing and Scaling Puppet - PuppetConf 2014
Monitis: All-in-One Systems Monitoring from the Cloud
Puppet Camp Charlotte 2015: Manage Your Switches Like Servers
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
Puppet Camp Portland 2014: Masterless Puppet in AWS
Puppet Camp Charlotte 2015: Use Puppet to Manage your NetApp Storage Infrastr...
Foreman in Your Data Center :OSDC 2015
Puppetconf 2015 - Puppet Reporting with Elasticsearch Logstash and Kibana
Puppet for dummies - ZendCon 2011 Edition
Lessons I Learned While Scaling to 5000 Puppet Agents
A Spotify Presentation - Case studies
Vagrant + Docker provider [+Puppet]
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Ad

Similar to Experiences from Running Masterless Puppet - PuppetConf 2014 (20)

PPTX
Sergey Dzyuban "To Build My Own Cloud with Blackjack…"
PDF
Webinar - DreamObjects/Ceph Case Study
PDF
Leveraging Docker for Hadoop build automation and Big Data stack provisioning
PDF
Leveraging docker for hadoop build automation and big data stack provisioning
PDF
ONUG Tutorial: Bridges and Tunnels Drive Through OpenStack Networking
PPTX
20150425 experimenting with openstack sahara on docker
PDF
From SaltStack to Puppet and beyond...
PPTX
Nagios Conference 2014 - Mike Merideth - The Art and Zen of Managing Nagios w...
PPTX
OpenStack and Windows
PPTX
Habitat talk at CodeMonsters Sofia, Bulgaria Nov 27 2018
PPTX
Sanger, upcoming Openstack for Bio-informaticians
PPTX
Flexible compute
PPTX
Why Kubernetes as a container orchestrator is a right choice for running spar...
PDF
Achieving CI/CD with Kubernetes
PPTX
The Art and Zen of Managing Nagios With Puppet
PDF
PuppetConf 2016: Changing the Engine While in Flight – Neil Armitage, VMware
PDF
dbt Python models - GoDataFest by Guillermo Sanchez
PDF
How bigtop leveraged docker for build automation and one click hadoop provis...
PPTX
Symfony2 for legacy app rejuvenation: the eZ Publish case study
PPTX
Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...
Sergey Dzyuban "To Build My Own Cloud with Blackjack…"
Webinar - DreamObjects/Ceph Case Study
Leveraging Docker for Hadoop build automation and Big Data stack provisioning
Leveraging docker for hadoop build automation and big data stack provisioning
ONUG Tutorial: Bridges and Tunnels Drive Through OpenStack Networking
20150425 experimenting with openstack sahara on docker
From SaltStack to Puppet and beyond...
Nagios Conference 2014 - Mike Merideth - The Art and Zen of Managing Nagios w...
OpenStack and Windows
Habitat talk at CodeMonsters Sofia, Bulgaria Nov 27 2018
Sanger, upcoming Openstack for Bio-informaticians
Flexible compute
Why Kubernetes as a container orchestrator is a right choice for running spar...
Achieving CI/CD with Kubernetes
The Art and Zen of Managing Nagios With Puppet
PuppetConf 2016: Changing the Engine While in Flight – Neil Armitage, VMware
dbt Python models - GoDataFest by Guillermo Sanchez
How bigtop leveraged docker for build automation and one click hadoop provis...
Symfony2 for legacy app rejuvenation: the eZ Publish case study
Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...

More from Puppet (20)

PPTX
Puppet Community Day: Planning the Future Together
PPTX
The Evolution of Puppet: Key Changes and Modernization Tips
PPTX
Can You Help Me Upgrade to Puppet 8? Tips, Tools & Best Practices for Your Up...
PPTX
Bolt Dynamic Inventory: Making Puppet Easier
PPTX
Customizing Reporting with the Puppet Report Processor
PPTX
Puppet at ConfigMgmtCamp 2025 Sponsor Deck
PPTX
The State of Puppet in 2025: A Presentation from Developer Relations Lead Dav...
PPTX
Let Red be Red and Green be Green: The Automated Workflow Restarter in GitHub...
PDF
Puppet camp2021 testing modules and controlrepo
PPTX
Puppetcamp r10kyaml
PDF
2021 04-15 operational verification (with notes)
PPTX
Puppet camp vscode
PDF
Modules of the twenties
PDF
Applying Roles and Profiles method to compliance code
PPTX
KGI compliance as-code approach
PDF
Enforce compliance policy with model-driven automation
PDF
Keynote: Puppet camp compliance
PPTX
Automating it management with Puppet + ServiceNow
PPTX
Puppet: The best way to harden Windows
PPTX
Simplified Patch Management with Puppet - Oct. 2020
Puppet Community Day: Planning the Future Together
The Evolution of Puppet: Key Changes and Modernization Tips
Can You Help Me Upgrade to Puppet 8? Tips, Tools & Best Practices for Your Up...
Bolt Dynamic Inventory: Making Puppet Easier
Customizing Reporting with the Puppet Report Processor
Puppet at ConfigMgmtCamp 2025 Sponsor Deck
The State of Puppet in 2025: A Presentation from Developer Relations Lead Dav...
Let Red be Red and Green be Green: The Automated Workflow Restarter in GitHub...
Puppet camp2021 testing modules and controlrepo
Puppetcamp r10kyaml
2021 04-15 operational verification (with notes)
Puppet camp vscode
Modules of the twenties
Applying Roles and Profiles method to compliance code
KGI compliance as-code approach
Enforce compliance policy with model-driven automation
Keynote: Puppet camp compliance
Automating it management with Puppet + ServiceNow
Puppet: The best way to harden Windows
Simplified Patch Management with Puppet - Oct. 2020

Recently uploaded (20)

PDF
Mushroom cultivation and it's methods.pdf
PPTX
1. Introduction to Computer Programming.pptx
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
cloud_computing_Infrastucture_as_cloud_p
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
PDF
Getting Started with Data Integration: FME Form 101
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
A comparative study of natural language inference in Swahili using monolingua...
PDF
Approach and Philosophy of On baking technology
PPTX
A Presentation on Artificial Intelligence
PDF
Machine learning based COVID-19 study performance prediction
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Empathic Computing: Creating Shared Understanding
PDF
Network Security Unit 5.pdf for BCA BBA.
Mushroom cultivation and it's methods.pdf
1. Introduction to Computer Programming.pptx
Unlocking AI with Model Context Protocol (MCP)
SOPHOS-XG Firewall Administrator PPT.pptx
MIND Revenue Release Quarter 2 2025 Press Release
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
cloud_computing_Infrastucture_as_cloud_p
Mobile App Security Testing_ A Comprehensive Guide.pdf
Encapsulation_ Review paper, used for researhc scholars
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
Getting Started with Data Integration: FME Form 101
A comparative analysis of optical character recognition models for extracting...
A comparative study of natural language inference in Swahili using monolingua...
Approach and Philosophy of On baking technology
A Presentation on Artificial Intelligence
Machine learning based COVID-19 study performance prediction
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Digital-Transformation-Roadmap-for-Companies.pptx
Empathic Computing: Creating Shared Understanding
Network Security Unit 5.pdf for BCA BBA.

Experiences from Running Masterless Puppet - PuppetConf 2014

  • 1. September 24, 2014 Experiences from running masterless Puppet Erik Dalén
  • 2. whoami • System engineer at Spotify since almost 3 years. • Community contributor to Puppet. • Author of Puppet Explorer web UI. • Author of the puppetdbquery, dnsquery and puppet ls modules. 2
  • 3. Agenda • Background about our puppet setup • How we implemented masterless • Why we did the switch to masterless • New workflows and future improvements 3
  • 4. Background • Puppet users since 4 years • Two large Puppet installations, 20+ Puppet masters. • A single repository with all modules • Git branches mapped to Puppet environments • Code review in Gerrit to merge into production branch • Tests using AWS virtual machines on every code review 4
  • 5. Section name Implementation Started with just switching to the same workflow but masterless. Using a custom Ruby “wrapper” around puppet apply. 5 Gerrit SITE X SITE X git mirror git mirror SITE Y git mirror git mirror PuppetDB Node Node Node ● ServerDB ● LDAP Gerrit replication Gerrit replication git pull git pull failover if pod mirrors are unavailable Queries * Queries * Store facts * Store catalog * Store report hiera secrets hiera secrets HTTPS GET auth by cert Puppet CA request certificate
  • 6. Benefits of this setup • Debug logging of compilation and hiera lookups • Ability to get traceback of custom functions directly on the node • Deprecation warnings from compilation visible on the node $ sppuppet hiera resolvconf::servers 8.8.8.8 8.8.4.4 6
  • 7. Drawbacks • Requires more configuration, and can’t use puppet to manage it. • Quite specialised. 7
  • 8. Secret management • Small web service where nodes authenticates using their SSL cert • Calculates the facts for the node from the certificate • Sends the secret hiera data that applies to that particular node 8
  • 9. PuppetDB access control • Very binary per default, allow everyone or a whitelist 9 Node Apache PuppetDB mod_ext_filter jq
  • 10. Why switch to masterless? • Scaling the Puppet masters not an issue • But scaling the workflow is an issue 10
  • 11. Growing amount of committers 11 Number of monthly committers 220 165 110 55 0 2 years ago 1 year ago now
  • 12. Growing amount of modules 12 Number of modules 600 450 300 150 0 2 years ago 1 year ago now
  • 13. More complex dependencies • 126 modules using the apache module • 91 modules using the nginx module • 92 modules using the postgresl module Backwards incompatible changes to shared modules almost impossible to do. 13
  • 14. Flexible workflow needed • Allow one set of modules per Puppet run determined by hiera • Easier ways to do continuous delivery of both application and configuration • Gradual rollout of new module versions 14
  • 15. Why not r10k or librarian-puppet? Both great utilities that allow building a environment dynamically. But it is still a fixed environment for many nodes. production_new_apache production_new_apache_new_postgres production_old_apache_new_postgres production_new_apache_old_postgres 15
  • 16. Our solution to the problem At each puppet run we look in hiera data which modules to install. 16 hiera/common.yaml: modules: spotify-hostbase: latest hiera/role/spotify_web.yaml modules: spotify-apache: latest hiera/role/puppetexplorer.yaml modules: puppetlabs-apache: latest
  • 17. Internal forge • A simple forge implementation using the new V3 forge API • Mirrors the upstream forge • Will be used for distributing internal modules as well github.com/jhaals/puppet-anvil 17