SlideShare a Scribd company logo
modulesyncmodulesync
HowHow Vox PupuliVox Pupuli ManagesManages 133133 141 modules141 modules
1 / 211 / 21
What isWhat is Vox PupuliVox Pupuli
2 / 212 / 21
modulesyncmodulesync
HowHow Vox PupuliVox Pupuli ManagesManages 133133 141 modules141 modules
1 / 211 / 21
What? Maintain many many Puppet modules
Be helpful and polite to each other
Be open-minded to people and technology
Provide a home for orphaned Puppet modules
Unite lonely module and tooling authors to a collective
Ensure continued development for our code
Vox Pupuli
@bastelsblog for @voxpupuliorg
3 / 21
What isWhat is Vox PupuliVox Pupuli
2 / 212 / 21
What?
Who?
Amount of Vox Pupuli members with merge permissions img
Vox Pupuli
@bastelsblog for @voxpupuliorg
4 / 21
What? Maintain many many Puppet modules
Be helpful and polite to each other
Be open-minded to people and technology
Provide a home for orphaned Puppet modules
Unite lonely module and tooling authors to a collective
Ensure continued development for our code
Vox Pupuli
@bastelsblog for @voxpupuliorg
3 / 21
What?
Who?
Many git newbies
Rebasing a feature branch against upstream master is hard
Many newcomers to test frameworks
Dealing with rspec/rubocop/beaker is hard as well
Many administrators of legacy infrastructures
Stuff older than Puppet 5 without proper hiera5/datatype support
Vox Pupuli
@bastelsblog for @voxpupuliorg
5 / 21
What?
Who?
Amount of Vox Pupuli members with merge permissions
2016-11 2017-10 2018-02 2018-07 2018-11 2019-01 2019-06 2019-10 2020-01 2020-05
0
20
40
60
80
100
120
140
160
Vox Pupuli
@bastelsblog for @voxpupuliorg
4 / 21
What?
Who?
Why?
Maintaining a module on your own is hard
Changing best practices, vacations, losing interest
Proper testing of a module requires a lot of stuff from the ruby ecosystem
Ruby ecosystem and related tools are changing too fast for a single
person
Everything has to work on multiple Ruby/Puppet versions
Rubocop
Rubocop
Vox Pupuli
@bastelsblog for @voxpupuliorg
6 / 21
What?
Who?
Many git newbies
Rebasing a feature branch against upstream master is hard
Many newcomers to test frameworks
Dealing with rspec/rubocop/beaker is hard as well
Many administrators of legacy infrastructures
Stuff older than Puppet 5 without proper hiera5/datatype support
Vox Pupuli
@bastelsblog for @voxpupuliorg
5 / 21
How? image
Vox Pupuli
7 / 21
What?
Who?
Why?
Maintaining a module on your own is hard
Changing best practices, vacations, losing interest
Proper testing of a module requires a lot of stuff from the ruby ecosystem
Ruby ecosystem and related tools are changing too fast for a single
person
Everything has to work on multiple Ruby/Puppet versions
Rubocop
Rubocop
Vox Pupuli
@bastelsblog for @voxpupuliorg
6 / 21
How?
Standards
Unified module file/directory structure
Vox Pupuli
@bastelsblog for @voxpupuliorg
8 / 21
How?
Vox Pupuli
7 / 21
How?
Standards
Unified module file/directory structure
Unified code style
Vox Pupuli
@bastelsblog for @voxpupuliorg
8 / 21
How?
Standards
Unified module file/directory structure
Vox Pupuli
@bastelsblog for @voxpupuliorg
8 / 21
How?
Standards
Unified module file/directory structure
Unified code style
Unified review guidelines and testsuites with CI
Vox Pupuli
@bastelsblog for @voxpupuliorg
8 / 21
How?
Standards
Unified module file/directory structure
Unified code style
Vox Pupuli
@bastelsblog for @voxpupuliorg
8 / 21
How?
Standards
Documentation
Review guidelines: voxpupuli.org/docs/reviewing_pr
CONTRIBUTING.md
Explain how the PR creator can test their changes
Explain what happens after a PR was created
Templates for raising issues / creating a PR
Vox Pupuli
@bastelsblog for @voxpupuliorg
9 / 21
How?
Standards
Unified module file/directory structure
Unified code style
Unified review guidelines and testsuites with CI
Vox Pupuli
@bastelsblog for @voxpupuliorg
8 / 21
How?
Standards
Documentation
modulesync
We are managing more than 141 modules
113 in July 2019
modulesync was developed by Puppet Inc, moved to Vox Pupuli
It takes a config file + templates, throws it into every modules git repo
Everybody can start it
Vox Pupuli
@bastelsblog for @voxpupuliorg
10 / 21
How?
Standards
Documentation
Review guidelines: voxpupuli.org/docs/reviewing_pr
CONTRIBUTING.md
Explain how the PR creator can test their changes
Explain what happens after a PR was created
Templates for raising issues / creating a PR
Vox Pupuli
@bastelsblog for @voxpupuliorg
9 / 21
How?
Standards
Documentation
modulesync
The generic tool: github.com/voxpupuli/modulesync
The Vox Pupuli specific configuration:
github.com/voxpupuli/modulesync_config
Because of the separation, every organisation can use it
With Vox Pupuli configs
Or with own configs
Vox Pupuli
@bastelsblog for @voxpupuliorg
11 / 21
How?
Standards
Documentation
modulesync
We are managing more than 141 modules
113 in July 2019
modulesync was developed by Puppet Inc, moved to Vox Pupuli
It takes a config file + templates, throws it into every modules git repo
Everybody can start it
Vox Pupuli
@bastelsblog for @voxpupuliorg
10 / 21
How?
Standards
Documentation
modulesync
modulesync_config docroot
Vox Pupuli
12 / 21
How?
Standards
Documentation
modulesync
The generic tool: github.com/voxpupuli/modulesync
The Vox Pupuli specific configuration:
github.com/voxpupuli/modulesync_config
Because of the separation, every organisation can use it
With Vox Pupuli configs
Or with own configs
Vox Pupuli
@bastelsblog for @voxpupuliorg
11 / 21
How?
Standards
Documentation
modulesync
modulesync_config docroot
Vox Pupuli
13 / 21
How?
Standards
Documentation
modulesync
Vox Pupuli
12 / 21
How?
Standards
Documentation
modulesync
Setup
# checkout latest modulesync_config release
git checkout $(git tag --list | sort -V | tail -n1)
message="modulesync $(git describe)"
Sync all modules and create Pull Requests with a label
bundle exec msync update --message "{$message}" 
--pr --pr-labels modulesync --pr-title "${message}"
Apply template to one module, don't commit
bundle exec msync update --filter "${module_name}" --noop
Vox Pupuli
@bastelsblog for @voxpupuliorg
14 / 21
How?
Standards
Documentation
modulesync
Vox Pupuli
13 / 21
How?
Standards
Documentation
modulesync
modulesync PR
Vox Pupuli
15 / 21
How?
Standards
Documentation
modulesync
Setup
# checkout latest modulesync_config release
git checkout $(git tag --list | sort -V | tail -n1)
message="modulesync $(git describe)"
Sync all modules and create Pull Requests with a label
bundle exec msync update --message "{$message}" 
--pr --pr-labels modulesync --pr-title "${message}"
Apply template to one module, don't commit
bundle exec msync update --filter "${module_name}" --noop
Vox Pupuli
@bastelsblog for @voxpupuliorg
14 / 21
How?
Standards
Documentation
modulesync
Travis-CI
Free platform
rpsec-puppet common Puppet*Ruby versions
release modules to the forge
10-60min per module
Soon we will move some workload git GitHub Actions to speed things up
Vox Pupuli
@bastelsblog for @voxpupuliorg
16 / 21
How?
Standards
Documentation
modulesync
Vox Pupuli
15 / 21
How?
Standards
Documentation
modulesync
Travis-CI
Beaker
creates a virtual machine or docker instance
starts a complete OS in it
executes puppet in it
checks if everything looks as expected
Vox Pupuli
@bastelsblog for @voxpupuliorg
17 / 21
How?
Standards
Documentation
modulesync
Travis-CI
Free platform
rpsec-puppet common Puppet*Ruby versions
release modules to the forge
10-60min per module
Soon we will move some workload git GitHub Actions to speed things up
Vox Pupuli
@bastelsblog for @voxpupuliorg
16 / 21
How?
Standards
Documentation
modulesync
Travis-CI
Beaker
travis CI matrix
Vox Pupuli
18 / 21
How?
Standards
Documentation
modulesync
Travis-CI
Beaker
creates a virtual machine or docker instance
starts a complete OS in it
executes puppet in it
checks if everything looks as expected
Vox Pupuli
@bastelsblog for @voxpupuliorg
17 / 21
Summary We have great tooling and automation
We have great people
Vox Pupuli
@bastelsblog for @voxpupuliorg
19 / 21
How?
Standards
Documentation
modulesync
Travis-CI
Beaker
Vox Pupuli
18 / 21
Summary We have great tooling and automation
We have great people
You need help with Puppet?
Let us know, we help out!
You have an orphaned module?
Ping us, migrate it to us
You have domain specific knowledge?
Ruby, Python, Rspec, Beaker, $software we automate
Vox Pupuli
@bastelsblog for @voxpupuliorg
20 / 21
Summary We have great tooling and automation
We have great people
Vox Pupuli
@bastelsblog for @voxpupuliorg
19 / 21
Summary You want to help out?
We are always looking for new Collaborators and Maintainers
Contact:
IRC #voxpupuli on freenode
Slack: #voxpupuli on slack.puppet.com
Mailinglist: voxpupuli@groups.io
pmc@voxpupuli.org
tim@bastelfreak.de
More talks at github.com/bastelfreak/talks
Thanks for your attention!
Vox Pupuli
21 / 21
Summary We have great tooling and automation
We have great people
You need help with Puppet?
Let us know, we help out!
You have an orphaned module?
Ping us, migrate it to us
You have domain specific knowledge?
Ruby, Python, Rspec, Beaker, $software we automate
Vox Pupuli
@bastelsblog for @voxpupuliorg
20 / 21
Summary You want to help out?
We are always looking for new Collaborators and Maintainers
Contact:
IRC #voxpupuli on freenode
Slack: #voxpupuli on slack.puppet.com
Mailinglist: voxpupuli@groups.io
pmc@voxpupuli.org
tim@bastelfreak.de
More talks at github.com/bastelfreak/talks
Thanks for your attention!
Vox Pupuli
21 / 21

More Related Content

PPTX
Virtual Bolt Workshop - 6 May
PPTX
Virtual Bolt Workshop - March 16, 2020
PPTX
Easily Manage Patching and Application Updates with Chocolatey + Puppet - Apr...
PPTX
Puppet Virtual Bolt Workshop - 23 April 2020 (Singapore)
PDF
Virtual Bolt Workshop, 5 May 2020
PPTX
Virtual Bolt Workshop - April 28, 2020
PDF
Scalable Cloud-Native Masterless Puppet, with PuppetDB and Bolt, Craig Watson...
PDF
Frequently asked questions answered frequently - but now for the last time
Virtual Bolt Workshop - 6 May
Virtual Bolt Workshop - March 16, 2020
Easily Manage Patching and Application Updates with Chocolatey + Puppet - Apr...
Puppet Virtual Bolt Workshop - 23 April 2020 (Singapore)
Virtual Bolt Workshop, 5 May 2020
Virtual Bolt Workshop - April 28, 2020
Scalable Cloud-Native Masterless Puppet, with PuppetDB and Bolt, Craig Watson...
Frequently asked questions answered frequently - but now for the last time

What's hot (20)

PPTX
Virtual Bolt Workshop - April 1, 2020
PDF
Ansible project-deploy
PDF
Puppet Continuous Integration with PE and GitLab
PPTX
Puppetizing Your Organization
PPTX
Yocto Project introduction
PDF
Tp install anything
PDF
Developing IT infrastructures with Puppet
PDF
Introduction to yocto
PDF
Puppet Systems Infrastructure Construction Kit
PDF
Puppet evolutions
PDF
Getting Started with EasyBuild - Tutorial Part 2
PDF
Yocto: Treinamento em Português
PDF
Puppet: From 0 to 100 in 30 minutes
PDF
11 tools for your PHP devops stack
PDF
Ansible Project Deploy (phpbenelux 2015)
PDF
Puppet control-repo 
to the next level
PPTX
Symfony Under Control by Maxim Romanovsky
PDF
Yocto and IoT - a retrospective
PDF
Puppet camp2021 testing modules and controlrepo
PDF
CMake: Improving Software Quality and Process
Virtual Bolt Workshop - April 1, 2020
Ansible project-deploy
Puppet Continuous Integration with PE and GitLab
Puppetizing Your Organization
Yocto Project introduction
Tp install anything
Developing IT infrastructures with Puppet
Introduction to yocto
Puppet Systems Infrastructure Construction Kit
Puppet evolutions
Getting Started with EasyBuild - Tutorial Part 2
Yocto: Treinamento em Português
Puppet: From 0 to 100 in 30 minutes
11 tools for your PHP devops stack
Ansible Project Deploy (phpbenelux 2015)
Puppet control-repo 
to the next level
Symfony Under Control by Maxim Romanovsky
Yocto and IoT - a retrospective
Puppet camp2021 testing modules and controlrepo
CMake: Improving Software Quality and Process
Ad

Similar to Modulesync- How vox pupuli manages 133 modules, Tim Meusel (20)

PDF
PuppetConf 2017: Vox Pupuli- The Funny Community Journey- Tim Meusel, Go Dadd...
PDF
OSDC 2019 | Ignite: Vox Pupuli – Empowering the Puppet Community by Tim Meusel
PDF
TDD with Puppet Tutorial presented at Cascadia IT Conference 2014-03-07
PDF
20140406 loa days-tdd-with_puppet_tutorial
PDF
Using Puppet - Real World Configuration Management
PDF
PuppetCamp SEA 1 - The State of Puppet
PDF
The State of Puppet
PDF
PuppetCamp SEA 1 - The State of Puppet
PDF
Forging Great Modules: Standards, Tools and Patterns - PuppetConf 2013
PDF
Puppet Camp Paris 2015: Power of Puppet 4 (Beginner)
PDF
Test Driven Development with Puppet
PPTX
PuppetConf 2016: How Not to Freak Out When You Start Writing Puppet Modules f...
PPTX
Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...
PPTX
Enjoying the Journey from Puppet 3.x to Puppet 4.x (PuppetConf 2016)
PDF
Steamlining your puppet development workflow
PDF
Puppet Camp New York 2014: Streamlining Puppet Development Workflow
PPTX
Puppet camp amsterdam
PDF
Puppet at GitHub / ChatOps
PDF
Story of Puppet @eBay Global Classifieds Group (eCG)
PPTX
Migrating to Puppet 4.0
PuppetConf 2017: Vox Pupuli- The Funny Community Journey- Tim Meusel, Go Dadd...
OSDC 2019 | Ignite: Vox Pupuli – Empowering the Puppet Community by Tim Meusel
TDD with Puppet Tutorial presented at Cascadia IT Conference 2014-03-07
20140406 loa days-tdd-with_puppet_tutorial
Using Puppet - Real World Configuration Management
PuppetCamp SEA 1 - The State of Puppet
The State of Puppet
PuppetCamp SEA 1 - The State of Puppet
Forging Great Modules: Standards, Tools and Patterns - PuppetConf 2013
Puppet Camp Paris 2015: Power of Puppet 4 (Beginner)
Test Driven Development with Puppet
PuppetConf 2016: How Not to Freak Out When You Start Writing Puppet Modules f...
Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...
Enjoying the Journey from Puppet 3.x to Puppet 4.x (PuppetConf 2016)
Steamlining your puppet development workflow
Puppet Camp New York 2014: Streamlining Puppet Development Workflow
Puppet camp amsterdam
Puppet at GitHub / ChatOps
Story of Puppet @eBay Global Classifieds Group (eCG)
Migrating to Puppet 4.0
Ad

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...
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
PPTX
Accelerating azure adoption with puppet
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...
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
Accelerating azure adoption with puppet

Recently uploaded (20)

PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
August Patch Tuesday
PPTX
Spectroscopy.pptx food analysis technology
PPTX
TLE Review Electricity (Electricity).pptx
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
1. Introduction to Computer Programming.pptx
PPTX
cloud_computing_Infrastucture_as_cloud_p
PDF
Accuracy of neural networks in brain wave diagnosis of schizophrenia
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
OMC Textile Division Presentation 2021.pptx
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
Tartificialntelligence_presentation.pptx
PPTX
A Presentation on Artificial Intelligence
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Empathic Computing: Creating Shared Understanding
Diabetes mellitus diagnosis method based random forest with bat algorithm
August Patch Tuesday
Spectroscopy.pptx food analysis technology
TLE Review Electricity (Electricity).pptx
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
1. Introduction to Computer Programming.pptx
cloud_computing_Infrastucture_as_cloud_p
Accuracy of neural networks in brain wave diagnosis of schizophrenia
gpt5_lecture_notes_comprehensive_20250812015547.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Reach Out and Touch Someone: Haptics and Empathic Computing
OMC Textile Division Presentation 2021.pptx
Digital-Transformation-Roadmap-for-Companies.pptx
A comparative analysis of optical character recognition models for extracting...
Network Security Unit 5.pdf for BCA BBA.
Tartificialntelligence_presentation.pptx
A Presentation on Artificial Intelligence
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Empathic Computing: Creating Shared Understanding

Modulesync- How vox pupuli manages 133 modules, Tim Meusel

  • 1. modulesyncmodulesync HowHow Vox PupuliVox Pupuli ManagesManages 133133 141 modules141 modules 1 / 211 / 21
  • 2. What isWhat is Vox PupuliVox Pupuli 2 / 212 / 21 modulesyncmodulesync HowHow Vox PupuliVox Pupuli ManagesManages 133133 141 modules141 modules 1 / 211 / 21
  • 3. What? Maintain many many Puppet modules Be helpful and polite to each other Be open-minded to people and technology Provide a home for orphaned Puppet modules Unite lonely module and tooling authors to a collective Ensure continued development for our code Vox Pupuli @bastelsblog for @voxpupuliorg 3 / 21 What isWhat is Vox PupuliVox Pupuli 2 / 212 / 21
  • 4. What? Who? Amount of Vox Pupuli members with merge permissions img Vox Pupuli @bastelsblog for @voxpupuliorg 4 / 21 What? Maintain many many Puppet modules Be helpful and polite to each other Be open-minded to people and technology Provide a home for orphaned Puppet modules Unite lonely module and tooling authors to a collective Ensure continued development for our code Vox Pupuli @bastelsblog for @voxpupuliorg 3 / 21
  • 5. What? Who? Many git newbies Rebasing a feature branch against upstream master is hard Many newcomers to test frameworks Dealing with rspec/rubocop/beaker is hard as well Many administrators of legacy infrastructures Stuff older than Puppet 5 without proper hiera5/datatype support Vox Pupuli @bastelsblog for @voxpupuliorg 5 / 21 What? Who? Amount of Vox Pupuli members with merge permissions 2016-11 2017-10 2018-02 2018-07 2018-11 2019-01 2019-06 2019-10 2020-01 2020-05 0 20 40 60 80 100 120 140 160 Vox Pupuli @bastelsblog for @voxpupuliorg 4 / 21
  • 6. What? Who? Why? Maintaining a module on your own is hard Changing best practices, vacations, losing interest Proper testing of a module requires a lot of stuff from the ruby ecosystem Ruby ecosystem and related tools are changing too fast for a single person Everything has to work on multiple Ruby/Puppet versions Rubocop Rubocop Vox Pupuli @bastelsblog for @voxpupuliorg 6 / 21 What? Who? Many git newbies Rebasing a feature branch against upstream master is hard Many newcomers to test frameworks Dealing with rspec/rubocop/beaker is hard as well Many administrators of legacy infrastructures Stuff older than Puppet 5 without proper hiera5/datatype support Vox Pupuli @bastelsblog for @voxpupuliorg 5 / 21
  • 7. How? image Vox Pupuli 7 / 21 What? Who? Why? Maintaining a module on your own is hard Changing best practices, vacations, losing interest Proper testing of a module requires a lot of stuff from the ruby ecosystem Ruby ecosystem and related tools are changing too fast for a single person Everything has to work on multiple Ruby/Puppet versions Rubocop Rubocop Vox Pupuli @bastelsblog for @voxpupuliorg 6 / 21
  • 8. How? Standards Unified module file/directory structure Vox Pupuli @bastelsblog for @voxpupuliorg 8 / 21 How? Vox Pupuli 7 / 21
  • 9. How? Standards Unified module file/directory structure Unified code style Vox Pupuli @bastelsblog for @voxpupuliorg 8 / 21 How? Standards Unified module file/directory structure Vox Pupuli @bastelsblog for @voxpupuliorg 8 / 21
  • 10. How? Standards Unified module file/directory structure Unified code style Unified review guidelines and testsuites with CI Vox Pupuli @bastelsblog for @voxpupuliorg 8 / 21 How? Standards Unified module file/directory structure Unified code style Vox Pupuli @bastelsblog for @voxpupuliorg 8 / 21
  • 11. How? Standards Documentation Review guidelines: voxpupuli.org/docs/reviewing_pr CONTRIBUTING.md Explain how the PR creator can test their changes Explain what happens after a PR was created Templates for raising issues / creating a PR Vox Pupuli @bastelsblog for @voxpupuliorg 9 / 21 How? Standards Unified module file/directory structure Unified code style Unified review guidelines and testsuites with CI Vox Pupuli @bastelsblog for @voxpupuliorg 8 / 21
  • 12. How? Standards Documentation modulesync We are managing more than 141 modules 113 in July 2019 modulesync was developed by Puppet Inc, moved to Vox Pupuli It takes a config file + templates, throws it into every modules git repo Everybody can start it Vox Pupuli @bastelsblog for @voxpupuliorg 10 / 21 How? Standards Documentation Review guidelines: voxpupuli.org/docs/reviewing_pr CONTRIBUTING.md Explain how the PR creator can test their changes Explain what happens after a PR was created Templates for raising issues / creating a PR Vox Pupuli @bastelsblog for @voxpupuliorg 9 / 21
  • 13. How? Standards Documentation modulesync The generic tool: github.com/voxpupuli/modulesync The Vox Pupuli specific configuration: github.com/voxpupuli/modulesync_config Because of the separation, every organisation can use it With Vox Pupuli configs Or with own configs Vox Pupuli @bastelsblog for @voxpupuliorg 11 / 21 How? Standards Documentation modulesync We are managing more than 141 modules 113 in July 2019 modulesync was developed by Puppet Inc, moved to Vox Pupuli It takes a config file + templates, throws it into every modules git repo Everybody can start it Vox Pupuli @bastelsblog for @voxpupuliorg 10 / 21
  • 14. How? Standards Documentation modulesync modulesync_config docroot Vox Pupuli 12 / 21 How? Standards Documentation modulesync The generic tool: github.com/voxpupuli/modulesync The Vox Pupuli specific configuration: github.com/voxpupuli/modulesync_config Because of the separation, every organisation can use it With Vox Pupuli configs Or with own configs Vox Pupuli @bastelsblog for @voxpupuliorg 11 / 21
  • 15. How? Standards Documentation modulesync modulesync_config docroot Vox Pupuli 13 / 21 How? Standards Documentation modulesync Vox Pupuli 12 / 21
  • 16. How? Standards Documentation modulesync Setup # checkout latest modulesync_config release git checkout $(git tag --list | sort -V | tail -n1) message="modulesync $(git describe)" Sync all modules and create Pull Requests with a label bundle exec msync update --message "{$message}" --pr --pr-labels modulesync --pr-title "${message}" Apply template to one module, don't commit bundle exec msync update --filter "${module_name}" --noop Vox Pupuli @bastelsblog for @voxpupuliorg 14 / 21 How? Standards Documentation modulesync Vox Pupuli 13 / 21
  • 17. How? Standards Documentation modulesync modulesync PR Vox Pupuli 15 / 21 How? Standards Documentation modulesync Setup # checkout latest modulesync_config release git checkout $(git tag --list | sort -V | tail -n1) message="modulesync $(git describe)" Sync all modules and create Pull Requests with a label bundle exec msync update --message "{$message}" --pr --pr-labels modulesync --pr-title "${message}" Apply template to one module, don't commit bundle exec msync update --filter "${module_name}" --noop Vox Pupuli @bastelsblog for @voxpupuliorg 14 / 21
  • 18. How? Standards Documentation modulesync Travis-CI Free platform rpsec-puppet common Puppet*Ruby versions release modules to the forge 10-60min per module Soon we will move some workload git GitHub Actions to speed things up Vox Pupuli @bastelsblog for @voxpupuliorg 16 / 21 How? Standards Documentation modulesync Vox Pupuli 15 / 21
  • 19. How? Standards Documentation modulesync Travis-CI Beaker creates a virtual machine or docker instance starts a complete OS in it executes puppet in it checks if everything looks as expected Vox Pupuli @bastelsblog for @voxpupuliorg 17 / 21 How? Standards Documentation modulesync Travis-CI Free platform rpsec-puppet common Puppet*Ruby versions release modules to the forge 10-60min per module Soon we will move some workload git GitHub Actions to speed things up Vox Pupuli @bastelsblog for @voxpupuliorg 16 / 21
  • 20. How? Standards Documentation modulesync Travis-CI Beaker travis CI matrix Vox Pupuli 18 / 21 How? Standards Documentation modulesync Travis-CI Beaker creates a virtual machine or docker instance starts a complete OS in it executes puppet in it checks if everything looks as expected Vox Pupuli @bastelsblog for @voxpupuliorg 17 / 21
  • 21. Summary We have great tooling and automation We have great people Vox Pupuli @bastelsblog for @voxpupuliorg 19 / 21 How? Standards Documentation modulesync Travis-CI Beaker Vox Pupuli 18 / 21
  • 22. Summary We have great tooling and automation We have great people You need help with Puppet? Let us know, we help out! You have an orphaned module? Ping us, migrate it to us You have domain specific knowledge? Ruby, Python, Rspec, Beaker, $software we automate Vox Pupuli @bastelsblog for @voxpupuliorg 20 / 21 Summary We have great tooling and automation We have great people Vox Pupuli @bastelsblog for @voxpupuliorg 19 / 21
  • 23. Summary You want to help out? We are always looking for new Collaborators and Maintainers Contact: IRC #voxpupuli on freenode Slack: #voxpupuli on slack.puppet.com Mailinglist: voxpupuli@groups.io pmc@voxpupuli.org tim@bastelfreak.de More talks at github.com/bastelfreak/talks Thanks for your attention! Vox Pupuli 21 / 21 Summary We have great tooling and automation We have great people You need help with Puppet? Let us know, we help out! You have an orphaned module? Ping us, migrate it to us You have domain specific knowledge? Ruby, Python, Rspec, Beaker, $software we automate Vox Pupuli @bastelsblog for @voxpupuliorg 20 / 21
  • 24. Summary You want to help out? We are always looking for new Collaborators and Maintainers Contact: IRC #voxpupuli on freenode Slack: #voxpupuli on slack.puppet.com Mailinglist: voxpupuli@groups.io pmc@voxpupuli.org tim@bastelfreak.de More talks at github.com/bastelfreak/talks Thanks for your attention! Vox Pupuli 21 / 21