class: center, middle, inverse # One year OpenVoxProject
??? --- ## $ whoami
* Tim 'bastelfreak' Meusel * Puppet Contributor since 2012 * Merging stuff on [Vox Pupuli](https://voxpupuli.org/) (Puppet Community) since 2015 * Vox Pupuli Project Management Committee member * Senior IT Automation Consultant at [betadots](https://betadots.de/) * Certified Puppet Solution Consultant [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * who has seen this picture before because I reviewed/merged your pull request? --- count: false ## $ whoami
* Tim 'bastelfreak' Meusel * Puppet Contributor since 2012 * Merging stuff on [Vox Pupuli](https://voxpupuli.org/) (Puppet Community) since 2015 * Vox Pupuli Project Management Committee member * Senior IT Automation Consultant at [betadots](https://betadots.de/) * Certified Puppet Solution Consultant * New: Clojure & [ezbake](https://github.com/OpenVoxProject/ezbake) "expert" [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * who has seen this picture before because I reviewed/merged your pull request? --- class: center, middle, inverse # OpenVoxProject
??? lets talk a bit about the OpenVoxProject. lets start with CI stuff --- .left-column[ ## OpenVoxProject ### Where are we? ] .right-column[ We continue the open source development for the ecosystem! * puppet-agent -> [openvox-agent](https://github.com/OpenVoxProject/openvox?tab=readme-ov-file#openvox) * puppetserver -> [openvox-server](https://github.com/OpenVoxProject/openvox-server) * puppetdb -> [openvoxdb](https://github.com/OpenVoxProject/openvoxdb) * bolt -> [openbolt](https://github.com/OpenVoxProject/openbolt) ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) --- .left-column[ ## OpenVoxProject ### Where are we? ] .right-column[ We continue the open source development for the ecosystem! * All repositories have dependabot/renovate to inform us about updates ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * Perforce still doesn't have that on all repos. We get updates for rubygems, github actions, clojure updates, new puppet modules --- count: false .left-column[ ## OpenVoxProject ### Where are we? ] .right-column[ We continue the open source development for the ecosystem! * All repositories have dependabot/renovate to inform us about updates * The packaging process is documented! → [github.com/OpenVoxProject/planning/wiki/How-OpenVox-builds-work](https://github.com/OpenVoxProject/planning/wiki/How-OpenVox-builds-work) ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * You want to understand how the build process works? you want to build locally? anybody was successful with that on puppetserver/db/agent? --- count: false .left-column[ ## OpenVoxProject ### Where are we? ] .right-column[ We continue the open source development for the ecosystem! * All repositories have dependabot/renovate to inform us about updates * The packaging process is documented! → [github.com/OpenVoxProject/planning/wiki/How-OpenVox-builds-work](https://github.com/OpenVoxProject/planning/wiki/How-OpenVox-builds-work) * Ever wanted to add a new OS? → [github.com/OpenVoxProject/planning/wiki/Adding-support-for-new-platforms](https://github.com/OpenVoxProject/planning/wiki/Adding-support-for-new-platforms) ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * who had to wait a year for perforce to deliver packages? --- count: false .left-column[ ## OpenVoxProject ### Where are we? ] .right-column[ We continue the open source development for the ecosystem! * All repositories have dependabot/renovate to inform us about updates * The packaging process is documented! → [github.com/OpenVoxProject/planning/wiki/How-OpenVox-builds-work](https://github.com/OpenVoxProject/planning/wiki/How-OpenVox-builds-work) * Ever wanted to add a new OS? → [github.com/OpenVoxProject/planning/wiki/Adding-support-for-new-platforms](https://github.com/OpenVoxProject/planning/wiki/Adding-support-for-new-platforms) * All pipelines are public ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * all test pipelines are public * all build pipelines are public * who ever made a PR to puppetdb/puppetserver/agent and wanted to test it? who wanted an rpm or deb for their changes? --- .left-column[ ## OpenVoxProject ### Where are we? ] .right-column[  ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * all test pipelines are public * all build pipelines are public * who ever made a PR to puppetdb/puppetserver/agent and wanted to test it? who wanted an rpm or deb for their changes? --- class: center, middle, inverse # Who used
ezbake? --- class: center, middle, inverse # Who understands
ezbake? ??? * ezbake is the build tool, from Perforce, for clojure applications * puppet = the software * perforce = the company Puppet Inc or Perforce --- .left-column[ ## OpenVoxProject ### Where are we? ### ezbake ] .right-column[  ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * lets assume we want to build openvoxdb or openvoxserver * both are applications written in clojure --- count: false .left-column[ ## OpenVoxProject ### Where are we? ### ezbake ] .right-column[  ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * As with most of our projects, we have a rake task --- count: false .left-column[ ## OpenVoxProject ### Where are we? ### ezbake ] .right-column[  ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * rake will build and start a container * room for improvement. doesn't make sense to always build the container --- count: false .left-column[ ## OpenVoxProject ### Where are we? ### ezbake ] .right-column[  ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * compile ruby * in the container we compile the same ruby version that we ship in the openvox-agent AIO packages --- count: false .left-column[ ## OpenVoxProject ### Where are we? ### ezbake ] .right-column[  ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * then we start ezbake * a build framework from Puppet for building clojure web applications with trapperkeeper * trapperkeeper manages different clojure web applications within a JVM --- count: false .left-column[ ## OpenVoxProject ### Where are we? ### ezbake ] .right-column[  ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * leiningen fetches all clojure dependencies form clojars.org * compiles stuff --- count: false .left-column[ ## OpenVoxProject ### Where are we? ### ezbake ] .right-column[  ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * ezbake has a lot of config options * project name like server/db, depedencies for the final rpm/deb packages, users that the package shall create * rendered into a ruby file --- count: false .left-column[ ## OpenVoxProject ### Where are we? ### ezbake ] .right-column[  ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * ezbake, in the container, calls a rake task (pl:build?) --- count: false .left-column[ ## OpenVoxProject ### Where are we? ### ezbake ] .right-column[  ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * rake task uses the packaging gem * packaging is a gem from Perforce, can do a bunch of jenkins interaction and mirror stuff --- count: false .left-column[ ## OpenVoxProject ### Where are we? ### ezbake ] .right-column[  ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * packaging gem can also render templates! now we have an erb template that renders a shell script! --- count: false .left-column[ ## OpenVoxProject ### Where are we? ### ezbake ] .right-column[  ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? We are still in the container, running ezbake, which started a rake task. This task now iterates on the platform list --- count: false .left-column[ ## OpenVoxProject ### Where are we? ### ezbake ] .right-column[  ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * Within this iteration, we run a shell script for each platform! --- count: false .left-column[ ## OpenVoxProject ### Where are we? ### ezbake ] .right-column[  ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * This script calls 3 other scripts * mostly prepare the packaging root. they prepare the filesystem layour for the final rpm/deb package --- count: false .left-column[ ## OpenVoxProject ### Where are we? ### ezbake ] .right-column[  ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * now the shell script calls a ruby script * this script puts together parameters for fpm --- count: false .left-column[ ## OpenVoxProject ### Where are we? ### ezbake ] .right-column[  ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * Then we start fpm * creates all packages * the jar file is only compiled once * all platforms have the same jar file --- count: false .left-column[ ## OpenVoxProject ### Where are we? ### ezbake ] .right-column[  ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * awscli used to upload to an S3 bucket * It took a long time to understand this chain * We added docker to the chain to provide an easier build environment * this allows us to run it locally or in CI * same chain for openvoxdb & server * builds *for all supported platforms combined* take around 10 minutes * we build the docker container and ruby every time * a mgiration to rootless containers & podman would be nice * caching the container would be great as well * Oregon State University sponsors S3 storage * They also offer PowerPC and IBM Z systems. We could port our pipeline --- .left-column[ ## OpenVoxProject ### Where are we? ### ezbake ### Dependencies ] .right-column[ List of all Clojure libs, we had to fork from Perforce, and their relationships  ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * everything depends on everything * makes version updates incredibly complicated * could be one of the reasons why Perforce hated to update those * each of them depends on 3rd party projects * Perforce ships heavily outdated dependencies * most of them will be consolidated into a single repo --- .left-column[ ## OpenVoxProject ### Where are we? ### ezbake ### Dependencies ] .right-column[  ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * dependencies for module testing * we forked puppet-strings and facter * we maintain the majority of the ecosystem --- .left-column[ ## OpenVoxProject ### Where are we? ### ezbake ### Dependencies ] .right-column[ * Graph of all Ruby dependencies for openvox: [github.com/voxpupuli/voxpupuli.github.io/pull/565](https://github.com/voxpupuli/voxpupuli.github.io/pull/565) * We had to fork puppet-strings → [openvox-strings](https://github.com/voxpupuli/openvox-strings) * puppet-strings had a dependency to puppet, but that's gone now * We had to fork Facter → [OpenFact](https://github.com/OpenVoxProject/openfact) ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * too big, won't show it here --- count: false .left-column[ ## OpenVoxProject ### Where are we? ### ezbake ### Dependencies ] .right-column[ * Graph of all Ruby dependencies for openvox: [github.com/voxpupuli/voxpupuli.github.io/pull/565](https://github.com/voxpupuli/voxpupuli.github.io/pull/565) * We had to fork puppet-strings → [openvox-strings](https://github.com/voxpupuli/openvox-strings) * puppet-strings had a dependency to puppet, but that's gone now * We had to fork Facter → [OpenFact](https://github.com/OpenVoxProject/openfact) * We removed puppetlabs_spec_helper from our module testing pipeline ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * too big, won't show it here --- class: center, middle, inverse # Community
Update --- .left-column[ ## Community Update ### Drop Puppet ] .right-column[ * We discussed dropping support for Perforce package → [github.com/voxpupuli/community-triage/issues/59](https://github.com/voxpupuli/community-triage/issues/59) * Packages are EoL / have dependencies with open CVEs * Perforce won't publish updates * We removed `puppet` from metadata.json as a supported implementation ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * why is that change important? In the past years we discussed our CI matrix setup here. matrix is generated automatically. you can still have puppet and openvox in metadata.json * our CI is limited --- .left-column[ ## Community Update ### Drop Puppet ### Drop OpenVox7 ] .right-column[ * We discussed dropping OpenVox 7 support → [https://github.com/voxpupuli/community-triage/issues/60](https://github.com/voxpupuli/community-triage/issues/60) * Back when we started the OpenVoxProject, we still supported Puppet 7, so we offered OpenVox 7 & 8 packages * OpenVox 7 only exists to make it easier for people to migrate ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * perfect example of community work * we started a discussion in public * we had a waiting period until everybody had a chance to raise their opinions & concerns --- count: false .left-column[ ## Community Update ### Drop Puppet ### Drop OpenVox7 ] .right-column[ * We discussed dropping OpenVox 7 support → [https://github.com/voxpupuli/community-triage/issues/60](https://github.com/voxpupuli/community-triage/issues/60) * Back when we started the OpenVoxProject, we still supported Puppet 7, so we offered OpenVox 7 & 8 packages * OpenVox 7 only exists to make it easier for people to migrate * A big thank you to [Christoph Maser (TheMeier)](https://github.com/TheMeier) for doing most of those changes! ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) --- .left-column[ ## Community Update ### Drop Puppet ### Drop OpenVox7 ### Supported platforms ] .right-column[ For OpenVox-Server/DB/Agent & OpenBolt * EL8, EL9, EL10, Amazon 2, Amazon 2023, Fedora, SLES 15 ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * we still have EL7. Amazon 2 is basically EL7. We could continue building EL7 if someone sponsors that --- count: false .left-column[ ## Community Update ### Drop Puppet ### Drop OpenVox7 ### Supported platforms ] .right-column[ For OpenVox-Server/DB/Agent & OpenBolt * EL8, EL9, EL10, Amazon 2, Amazon 2023, Fedora, SLES 15 * X86, PowerPC64le (openbolt will be added), AARCH64 ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) --- count: false .left-column[ ## Community Update ### Drop Puppet ### Drop OpenVox7 ### Supported platforms ] .right-column[ For OpenVox-Server/DB/Agent & OpenBolt * EL8, EL9, EL10, Amazon 2, Amazon 2023, Fedora, SLES 15 * X86, PowerPC64le (openbolt will be added), AARCH64 * [FIPS X86 for EL8 & EL9 (EL10 soon)](https://voxpupuli.org/blog/2026/01/13/new-fips-agent-packages/) ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) --- count: false .left-column[ ## Community Update ### Drop Puppet ### Drop OpenVox7 ### Supported platforms ] .right-column[ For OpenVox-Server/DB/Agent & OpenBolt * EL8, EL9, EL10, Amazon 2, Amazon 2023, Fedora, SLES 15 * X86, PowerPC64le (openbolt will be added), AARCH64 * [FIPS X86 for EL8 & EL9 (EL10 soon)](https://voxpupuli.org/blog/2026/01/13/new-fips-agent-packages/) * SLES 16 in the making! ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) --- count: false .left-column[ ## Community Update ### Drop Puppet ### Drop OpenVox7 ### Supported platforms ] .right-column[ For OpenVox-Server/DB/Agent & OpenBolt * EL8, EL9, EL10, Amazon 2, Amazon 2023, Fedora, SLES 15 * X86, PowerPC64le (openbolt will be added), AARCH64 * [FIPS X86 for EL8 & EL9 (EL10 soon)](https://voxpupuli.org/blog/2026/01/13/new-fips-agent-packages/) * SLES 16 in the making! * Debian 11, 12, 13 * X86, AARCH64 ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * We still have Debian 10 packages and could continue if someone sponsors that --- count: false .left-column[ ## Community Update ### Drop Puppet ### Drop OpenVox7 ### Supported platforms ] .right-column[ For OpenVox-Server/DB/Agent & OpenBolt * EL8, EL9, EL10, Amazon 2, Amazon 2023, Fedora, SLES 15 * X86, PowerPC64le (openbolt will be added), AARCH64 * [FIPS X86 for EL8 & EL9 (EL10 soon)](https://voxpupuli.org/blog/2026/01/13/new-fips-agent-packages/) * SLES 16 in the making! * Debian 11, 12, 13 * X86, AARCH64 * ARMHF in the making! ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) --- count: false .left-column[ ## Community Update ### Drop Puppet ### Drop OpenVox7 ### Supported platforms ] .right-column[ For OpenVox-Server/DB/Agent & OpenBolt * EL8, EL9, EL10, Amazon 2, Amazon 2023, Fedora, SLES 15 * X86, PowerPC64le (openbolt will be added), AARCH64 * [FIPS X86 for EL8 & EL9 (EL10 soon)](https://voxpupuli.org/blog/2026/01/13/new-fips-agent-packages/) * SLES 16 in the making! * Debian 11, 12, 13 * X86, AARCH64 * ARMHF in the making! * Ubuntu 20.04, 22.04, 24.04, 25.04 * X86, AARCH64 * ARMHF in the making! ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) --- count: false .left-column[ ## Community Update ### Drop Puppet ### Drop OpenVox7 ### Supported platforms ] .right-column[ For OpenVox-Server/DB/Agent & OpenBolt * EL8, EL9, EL10, Amazon 2, Amazon 2023, Fedora, SLES 15 * X86, PowerPC64le (openbolt will be added), AARCH64 * [FIPS X86 for EL8 & EL9 (EL10 soon)](https://voxpupuli.org/blog/2026/01/13/new-fips-agent-packages/) * SLES 16 in the making! * Debian 11, 12, 13 * X86, AARCH64 * ARMHF in the making! * Ubuntu 20.04, 22.04, 24.04, 25.04 * X86, AARCH64 * ARMHF in the making! * Do people care about Ubuntu 24.10, 25.10..? ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * we only build the LTS versions and 25.04 * should we build all the ubuntu releases? --- .left-column[ ## Community Update ### Drop Puppet ### Drop OpenVox7 ### Supported platforms ### Release train! ] .right-column[  (from [linkedin.com/pulse/art-agile-release-train-dummies-puneet-relan](https://www.linkedin.com/pulse/art-agile-release-train-dummies-puneet-relan)) ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * We can release very fast * we have good test coverage --- .left-column[ ## Community Update ### Drop Puppet ### Drop OpenVox7 ### Supported platforms ### Release train! ] .right-column[ * Rocky Linux 10 Release: 2025-06-11 * openvox-agent EL10 Release: 2025-02-21 * OpenVox Time to market: -110 days! ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? --- .left-column[ ## Community Update ### Drop Puppet ### Drop OpenVox7 ### Supported platforms ### Release train! ] .right-column[ * openvox-server EL10 release: 2025-06-03 * PE 2023.8.6 with EL10 support: 2025-12-18 ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? --- .left-column[ ## Community Update ### Drop Puppet ### Drop OpenVox7 ### Supported platforms ### Release train! ## New logo! ] .right-column[  .smallimg[] * Available in our repo: [github.com/voxpupuli/logos](https://github.com/voxpupuli/logos/tree/master/images/OpenVox) ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? --- class: center, middle, inverse # GitHub
--- .left-column[ ## GitHub ### code annotations ] .right-column[ * Code Annotations (RuboCop)!  ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * example for RuboCop. tells you the line, what kind of violation and a link to documentation * turns out people love that! * this enables people to work on their own most of the time, with a very short feedback loop --- .left-column[ ## GitHub ### code annotations ] .right-column[ * Code Annotations (RuboCop, puppet-lint)!  * important for [puppetmodule.info](https://puppetmodule.info/modules (hosted by Vox Pupuli) ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * consistent puppet-lint checking is important * of the rule puppet-lint plugins validates the documentation, another datatypes * both are used to render information on puppetmodule.info --- .left-column[ ## GitHub ### code annotations ] .right-column[ * Code Annotations (RuboCop, puppet-lint, rspec-puppet)!  ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * rspec-puppet is used for unit testing * rspec in puppet modules * note the operating system? keep that in mind? --- .left-column[ ## GitHub ### code annotations ] .right-column[ * Code Annotations (RuboCop, puppet-lint, rspec-puppet, Beaker)!  ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) --- .left-column[ ## GitHub ### code annotations ] .right-column[ * Code Annotations (RuboCop, puppet-lint, rspec-puppet, Beaker, **rspec**)!  ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) --- .left-column[ ## GitHub ### code annotations ] .right-column[ * Code Annotations (RuboCop, puppet-lint, rspec-puppet, Beaker, **rspec**, **Clojure**)!  * Thank you to Nick Burgan for contributing this! ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) --- .left-column[ ## GitHub ### code annotations ] .right-column[ * Code Annotations (RuboCop, puppet-lint, rspec-puppet, Beaker, **rspec**, **Clojure**, **minitest**)!  * Thank you to Ewoud and Evgeni for contributing this! ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) --- .left-column[ ## GitHub ### code annotations ### CI costs ] .right-column[ * GitHub Actions 2025: $11,993.91 consumed usage * GitHub Actions 2025: $5.49 billable usage ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * github sponsors us 500 concurrent runners. They are free for public repos * One repo was private by accident --- count: false .left-column[ ## GitHub ### code annotations ### CI costs ] .right-column[ * GitHub Actions 2025: $11,993.91 consumed usage * GitHub Actions 2025: $5.49 billable usage * GitHub Action January 2026: $3,872.42 consumed usage ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * We build a ton of new packages * we had openvox-db/server releases * we added new distros * we merged ~400 renovate PRs for clojure dependencies --- count: false .left-column[ ## GitHub ### code annotations ### CI costs ] .right-column[ * GitHub Actions 2025: $11,993.91 consumed usage * GitHub Actions 2025: $5.49 billable usage * GitHub Action January 2026: $3,872.42 consumed usage * GitHub enterprise is billed per user per month: $6.300/month, sponsored by GitHub ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * perforce pricing issues --- class: center, middle, inverse # Money
--- .left-column[ ## Money ### Income ] .right-column[ * 20-30 monthly sponsors * Current balance: $21.700 * Total raised: $32.000 * $18.000 raised via GitHub, $14.000 via open-collective ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * If you can, please donate via open-collective * less fees for us * payout via github is unreliable --- count: false .left-column[ ## Money ### Income ] .right-column[ * 20-30 monthly sponsors * Current balance: $21.700 * Total raised: $32.000 * $18.000 raised via GitHub, $14.000 via open-collective * Biggest donation: $10.000 from Microsoft ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? I never had a contact with microsoft. not before the donation, not afterwards --- .left-column[ ## Money ### Income ### Travel Budget ] .right-column[ * Config Management Camp 2025: $8.000 * VoxConf 2025: $5.000 * Config Management Camp 2026: $8.000 ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) --- .left-column[ ## Money ### Income ### Travel Budget ### Paying Contributors ] .right-column[ * We could reimburse contributors for... contributions * The PMC defined a process in [github.com/voxpupuli/community-triage/wiki/Vox-Pupuli-Bounty-Program](https://github.com/voxpupuli/community-triage/wiki/Vox-Pupuli-Bounty-Program) * Discussion on Wednesday: [github.com/voxpupuli/community-triage/issues/85](https://github.com/voxpupuli/community-triage/issues/85) ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) --- class: center, middle, inverse # Infra
??? --- .left-column[ ## Infra ### Foreman ] .right-column[  * Join our DevSecOps-Team in #sig-infrastructure to help * We run our own public foreman instance * We use the OpenBolt Foreman Integration: [github.com/overlookinfra/foreman_openbolt](https://github.com/overlookinfra/foreman_openbolt) * [dedicated talk 17:15-17:40, B.1.031](https://cfp.cfgmgmtcamp.org/ghent2026/talk/DVS97G/) ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * After the last talk in the puppet room, all of you can raid the foreman room --- .left-column[ ## Infra ### Foreman ### Kubernetes ] .right-column[ * We have a sponsored kubernetes cluster :happyface: ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) --- count: false .left-column[ ## Infra ### Foreman ### Kubernetes ] .right-column[ * We have a sponsored kubernetes cluster :happyface: * We don't use it yet :sadface: ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) --- count: false .left-column[ ## Infra ### Foreman ### Kubernetes ] .right-column[ * We have a sponsored kubernetes cluster :happyface: * We don't use it yet :sadface: * We would like to use it as GitHub runners. Interested? Join [#sig-infrastructure on IRC/Slack](https://voxpupuli.org/connect/) ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) --- .left-column[ ## Infra ### Foreman ### Kubernetes ### Best practices ] .right-column[ * [jpartlow/kvm_automation_tooling](https://github.com/jpartlow/kvm_automation_tooling) puppet module to spin up libvirt virtual machines with OpenBolt and Terraform * Used in [github.com/OpenVoxProject/acceptance-pipelines](https://github.com/OpenVoxProject/acceptance-pipelines/) for OpenVox acceptance testing * Installs Agent/DB/Server packages on multiple VMs and runs beaker ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * We spin up multiple VMs within github actions to test stuff --- count: false .left-column[ ## Infra ### Foreman ### Kubernetes ### Best practices ] .right-column[ * [jpartlow/kvm_automation_tooling](https://github.com/jpartlow/kvm_automation_tooling) puppet module to spin up libvirt virtual machines with OpenBolt and Terraform * Used in [github.com/OpenVoxProject/acceptance-pipelines](https://github.com/OpenVoxProject/acceptance-pipelines/) for OpenVox acceptance testing * Installs Agent/DB/Server packages on multiple VMs and runs beaker * [voxpupuli.org/docs/arch_single_server](https://voxpupuli.org/docs/arch_single_server/) documents an OpenVox reference implementation * [github.com/voxpupuli/reference-architecture](https://github.com/voxpupuli/reference-architecture) potential demo controlrepo *with multinode beaker acceptance tests* * Interested? Join [#sig-infrastructure on IRC/Slack](https://voxpupuli.org/connect/) ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * The controlrepo is basically empty * we can now implement our reference documentation and actually test it --- class: center, middle, inverse # VoxConf
??? --- .left-column[ ## VoxConf ### 2025 ] .right-column[  * [voxpupuli.org/voxconf](https://voxpupuli.org/voxconf/) ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) --- .left-column[ ## VoxConf ### 2025 ] .right-column[ * half day conference * 5 talks * shared with the Foreman Birthday Party * Vox Pupuli sponsored dinner + travel costs ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) --- .left-column[ ## VoxConf ### 2025 ] .right-column[  ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? --- .left-column[ ## VoxConf ### 2025 ### 2026 ] .right-column[ * VoxConf + Foreman Birthday Party * 16th of July (Thursday), 2026 * Atix Office, Munich * Atix & Netways have alternately sponsored locations ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? --- .left-column[ ## VoxConf ### 2025 ### 2026 ### 2027 ] .right-column[ * VoxConf + Foreman Birthday Party * Berlin ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? --- count: false .left-column[ ## VoxConf ### 2025 ### 2026 ### 2027 ] .right-column[ * VoxConf + Foreman Birthday Party * Berlin * Sponsors: Atix in 2026 -> Betadots in 207 -> Netways in 2028 -> repeat ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * We want to establish this as a regular yearly event * Do you want conferences somewhere else? do you want to organize one as well? --- .left-column[ ## Conclusion ] .right-column[ * Please join our [IRC/Slack](https://voxpupuli.org/connect/) to provide feedback ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * do you want a testing period before we publish new packages to the official repos? * which distributions do you need support for? --- count: false .left-column[ ## Conclusion ] .right-column[ * Please join our [IRC/Slack](https://voxpupuli.org/connect/) to provide feedback * Review and comment our topics for Wednesday: [github.com/orgs/voxpupuli/projects/14](https://github.com/orgs/voxpupuli/projects/14) ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? --- count: false .left-column[ ## Conclusion ] .right-column[ * Please join our [IRC/Slack](https://voxpupuli.org/connect/) to provide feedback * Review and comment our topics for Wednesday: [github.com/orgs/voxpupuli/projects/14](https://github.com/orgs/voxpupuli/projects/14) * Come to VoxConf 2026 and submit talks! * There will be a travel budget again ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? * Registration will open soon! --- count: false .left-column[ ## Conclusion ] .right-column[ * Please join our [IRC/Slack](https://voxpupuli.org/connect/) to provide feedback * Review and comment our topics for Wednesday: [github.com/orgs/voxpupuli/projects/14](https://github.com/orgs/voxpupuli/projects/14) * Come to VoxConf 2026 and submit talks! * There will be a travel budget again * [Foreman OpenBolt Integration Demo 17:15](https://cfp.cfgmgmtcamp.org/ghent2026/talk/DVS97G/) *in the foreman dev room* ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ??? --- count: false .left-column[ ## Conclusion ] .right-column[ * Please join our [IRC/Slack](https://voxpupuli.org/connect/) to provide feedback * Review and comment our topics for Wednesday: [github.com/orgs/voxpupuli/projects/14](https://github.com/orgs/voxpupuli/projects/14) * Come to VoxConf 2026 and submit talks! * There will be a travel budget again * [Foreman OpenBolt Integration Demo 17:15](https://cfp.cfgmgmtcamp.org/ghent2026/talk/DVS97G/) *in the foreman dev room* * For feedback: `bastelfreak` on [voxpupuli.slack.com](https://short.voxpupu.li/puppetcommunity_slack_signup/) / [Libera.Chat IRC](https://voxpupuli.org/connect/) or [tim@bastelfreak.de](mailto:tim@bastelfreak.de) * This talk and previous ones: [github.com/bastelfreak/talks](https://github.com/bastelfreak/talks) ### Thanks for your attention! ] [](https://www.betadots.de) [](https://cfgmgmtcamp.org/ghent2026/) ???