<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: voxpupuli</title>
    <description>The latest articles tagged 'voxpupuli' on DEV Community.</description>
    <link>https://dev.to/t/voxpupuli</link>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tag/voxpupuli"/>
    <language>en</language>
    <item>
      <title>How to keep your Puppet modules up to date with Renovate</title>
      <dc:creator>Robert Waffen</dc:creator>
      <pubDate>Wed, 25 Mar 2026 16:14:50 +0000</pubDate>
      <link>https://dev.to/betadots/how-to-keep-your-puppet-modules-up-to-date-with-renovate-19jn</link>
      <guid>https://dev.to/betadots/how-to-keep-your-puppet-modules-up-to-date-with-renovate-19jn</guid>
      <description>&lt;p&gt;Managing a Puppet control repository with a growing list of dependencies can quickly become a challenge.&lt;br&gt;
Keeping everything up to date manually?&lt;br&gt;
That’s not just tedious — it’s also error-prone.&lt;/p&gt;

&lt;p&gt;Modules are updated frequently, sometimes daily.&lt;br&gt;
With a long list of dependencies, it’s easy to miss important updates.&lt;br&gt;
And let’s be honest: humans are not exactly known for perfect consistency when it comes to repetitive tasks.&lt;/p&gt;

&lt;p&gt;So why not let a bot handle it?&lt;/p&gt;
&lt;h2&gt;
  
  
  Why Renovate?
&lt;/h2&gt;

&lt;p&gt;Renovate is designed to take over exactly this kind of work.&lt;br&gt;
It continuously scans your repositories, detects dependency updates, and automatically creates merge requests for you — including changelogs.&lt;/p&gt;

&lt;p&gt;Instead of manually checking versions, you simply review and merge PRs.&lt;br&gt;
Much cleaner.&lt;br&gt;
Much safer.&lt;/p&gt;
&lt;h2&gt;
  
  
  Assumptions
&lt;/h2&gt;

&lt;p&gt;Before we get started, this setup assumes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your repositories are hosted on GitLab&lt;/li&gt;
&lt;li&gt;You are using GitLab CI with runners&lt;/li&gt;
&lt;li&gt;You can run container-based jobs&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Setting Up Renovate
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Create a Renovate Runner Repository
&lt;/h3&gt;

&lt;p&gt;Create a dedicated repository in GitLab, for example: renovate-runner&lt;/p&gt;

&lt;p&gt;Inside this repository, create a &lt;code&gt;config.js&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;autodiscover&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;dependencyDashboard&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="c1"&gt;// We only enable the puppet manager here&lt;/span&gt;
  &lt;span class="c1"&gt;// see all managers: https://docs.renovatebot.com/modules/manager/&lt;/span&gt;
  &lt;span class="na"&gt;enabledManagers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;puppet&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="c1"&gt;// GitLab API - update with your instance URL&lt;/span&gt;
  &lt;span class="na"&gt;endpoint&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://gitlab.example.com/api/v4/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;extends&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;config:base&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;:semanticCommits&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;:semanticCommitTypeAll(chore)&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;renovate&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dependencies&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;platform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;gitlab&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;prCreation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;immediate&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;prHourlyLimit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;repositories&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;puppet/control-repo&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;requireConfig&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;reviewers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@rwaffen&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;token&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;RENOVATE_TOKEN&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This configuration will create one merge request per dependency update.&lt;/p&gt;

&lt;p&gt;If you prefer grouped updates, you can extend it like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;packageRules&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;matchManagers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;puppet&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="na"&gt;groupName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;{{manager}}&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Add GitLab CI Configuration
&lt;/h3&gt;

&lt;p&gt;Create a .gitlab-ci.yml:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;run_renovate&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ghcr.io/voxpupuli/renovate:latest&lt;/span&gt;
    &lt;span class="na"&gt;entrypoint&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
  &lt;span class="na"&gt;resource_group&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;production&lt;/span&gt;
  &lt;span class="na"&gt;script&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;renovate $RENOVATE_EXTRA_FLAGS&lt;/span&gt;
  &lt;span class="na"&gt;only&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;schedules&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;triggers&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;web&lt;/span&gt;
  &lt;span class="c1"&gt;# variables:&lt;/span&gt;
  &lt;span class="c1"&gt;#   LOG_LEVEL: debug&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Running Renovate
&lt;/h2&gt;

&lt;p&gt;With everything in place, you can trigger a pipeline in your &lt;code&gt;renovate-runner&lt;/code&gt; repository.&lt;/p&gt;

&lt;p&gt;Once started, Renovate will take over and handle the full update cycle for you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It launches the Renovate container&lt;/li&gt;
&lt;li&gt;Authenticates using your configured token&lt;/li&gt;
&lt;li&gt;Scans the defined repositories&lt;/li&gt;
&lt;li&gt;Detects dependency files such as &lt;code&gt;Puppetfile&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Resolves current versions and checks for new releases or tags&lt;/li&gt;
&lt;li&gt;Creates merge requests whenever updates are available&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At this point, your role shifts from &lt;em&gt;maintainer&lt;/em&gt; to &lt;em&gt;reviewer&lt;/em&gt;:&lt;br&gt;
you simply go through the generated merge requests and decide what to merge.&lt;/p&gt;

&lt;p&gt;To make this process truly hands-off, you should also configure a scheduled pipeline in GitLab.&lt;br&gt;
This ensures Renovate runs regularly and keeps your dependencies continuously up to date — without any manual triggering.&lt;/p&gt;

&lt;h2&gt;
  
  
  Authentication: &lt;code&gt;RENOVATE_TOKEN&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Renovate requires a Personal Access Token (&lt;code&gt;RENOVATE_TOKEN&lt;/code&gt;) to interact with your repositories.&lt;/p&gt;

&lt;p&gt;Required permissions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;api&lt;/li&gt;
&lt;li&gt;write_repository&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is highly recommended to create this as a group access token, so Renovate can access all relevant repositories — especially important if your Puppetfile includes Git-based modules.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing the Right Container Image
&lt;/h2&gt;

&lt;p&gt;Renovate provides official container images, but they come with some trade-offs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Large size&lt;/li&gt;
&lt;li&gt;Based on Ubuntu&lt;/li&gt;
&lt;li&gt;Higher number of known vulnerabilities (CVEs)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vox Pupuli provides a leaner alternative:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Smaller footprint&lt;/li&gt;
&lt;li&gt;Based on Alpine&lt;/li&gt;
&lt;li&gt;Significantly fewer vulnerabilities
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;IMAGE                                 ID             DISK USAGE   CONTENT SIZE   EXTRA
ghcr.io/renovatebot/renovate:latest   0334065a0093       1.87GB          416MB
ghcr.io/voxpupuli/renovate:latest     e354b2af781c        726MB          132MB
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Vulnerability Scan (grype)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grype ghcr.io/renovatebot/renovate:latest

 ✔ Scanned for vulnerabilities     [297 vulnerability matches]
   ├── by severity: 1 critical, 10 high, 971 medium, 137 low, 15 negligible
   └── by status:   14 fixed, 1120 not-fixed, 837 ignored
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grype ghcr.io/voxpupuli/renovate:latest

 ✔ Scanned for vulnerabilities     [19 vulnerability matches]
   ├── by severity: 0 critical, 15 high, 4 medium, 0 low, 0 negligible
   └── by status:   13 fixed, 6 not-fixed, 0 ignored
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;With Renovate in place, dependency management becomes predictable and automated.&lt;br&gt;
Instead of chasing updates manually, you get a steady stream of structured merge requests — complete with context and changelogs.&lt;br&gt;
In other words: less chaos, more control.&lt;/p&gt;

</description>
      <category>puppet</category>
      <category>renovate</category>
      <category>voxpupuli</category>
      <category>gitlab</category>
    </item>
    <item>
      <title>All the Vox Pupuli containers</title>
      <dc:creator>Robert Waffen</dc:creator>
      <pubDate>Mon, 24 Mar 2025 09:43:36 +0000</pubDate>
      <link>https://dev.to/voxpupuli/all-the-vox-pupuli-containers-4dpo</link>
      <guid>https://dev.to/voxpupuli/all-the-vox-pupuli-containers-4dpo</guid>
      <description>&lt;p&gt;You may have heard about our (now deprecated) &lt;code&gt;puppetserver&lt;/code&gt;/&lt;code&gt;puppetdb&lt;/code&gt; container images?&lt;br&gt;
But did you know that we have a lot more containers available?&lt;br&gt;
We have the brand new OpenVox containers, which replace the old puppetserver and puppetdb containers, and even some more.&lt;/p&gt;

&lt;h2&gt;
  
  
  OpenVox containers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  openvoxserver
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/openvoxproject/container-openvoxserver" rel="noopener noreferrer"&gt;&lt;code&gt;openvoxserver&lt;/code&gt;&lt;/a&gt; is a drop-in replacement for the old &lt;code&gt;voxpupuli/puppetserver&lt;/code&gt; container.&lt;/p&gt;

&lt;h3&gt;
  
  
  openvoxdb
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/openvoxproject/container-openvoxdb" rel="noopener noreferrer"&gt;&lt;code&gt;openvoxdb&lt;/code&gt;&lt;/a&gt; is a drop-in replacement for the old &lt;code&gt;voxpupuli/puppetdb&lt;/code&gt; container.&lt;/p&gt;

&lt;h3&gt;
  
  
  openvoxagent
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/openvoxproject/container-openvoxagent" rel="noopener noreferrer"&gt;&lt;code&gt;openvoxagent&lt;/code&gt;&lt;/a&gt; is a drop-in replacement for the old &lt;code&gt;puppet/puppet-agent&lt;/code&gt; container. It is mostly used for testing purposes, as of now.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vox Pupuli containers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  voxbox
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/voxpupuli/container-voxbox" rel="noopener noreferrer"&gt;&lt;code&gt;voxbox&lt;/code&gt;&lt;/a&gt; is a container that contains a lot of tools that are useful for OpenVox/Puppet development and testing.&lt;br&gt;
It includes tools like &lt;code&gt;puppet-lint&lt;/code&gt;, &lt;code&gt;modulesync&lt;/code&gt;, &lt;code&gt;onceover&lt;/code&gt;, &lt;code&gt;facter&lt;/code&gt;, &lt;code&gt;yamllint&lt;/code&gt;, &lt;code&gt;rubocop&lt;/code&gt; and the Vox Pupuli testing gems.&lt;/p&gt;

&lt;h3&gt;
  
  
  r10k
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/voxpupuli/container-r10k" rel="noopener noreferrer"&gt;&lt;code&gt;r10k&lt;/code&gt;&lt;/a&gt; is a container that contains r10k, a tool to manage OpenVox/Puppet environments.&lt;/p&gt;

&lt;p&gt;See also: &lt;a href="https://github.com/puppetlabs/r10k" rel="noopener noreferrer"&gt;r10k&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  semantic-release
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/voxpupuli/container-semantic-release" rel="noopener noreferrer"&gt;&lt;code&gt;semantic-release&lt;/code&gt;&lt;/a&gt; is a container that contains the &lt;code&gt;semantic-release&lt;/code&gt; tool, which is used to automatically release new versions of software projects.&lt;/p&gt;

&lt;p&gt;See also: &lt;a href="https://github.com/semantic-release/semantic-release" rel="noopener noreferrer"&gt;semantic-release&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  commitlint
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/voxpupuli/container-commitlint" rel="noopener noreferrer"&gt;&lt;code&gt;commitlint&lt;/code&gt;&lt;/a&gt; is a container that contains the &lt;code&gt;commitlint&lt;/code&gt; tool, which is used to lint commit messages.&lt;/p&gt;

&lt;p&gt;See also: &lt;a href="https://commitlint.js.org/" rel="noopener noreferrer"&gt;commitlint&lt;/a&gt; and &lt;a href="https://www.conventionalcommits.org/" rel="noopener noreferrer"&gt;conventional commits&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  puppet-catalog-diff-viewer
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/voxpupuli/puppet-catalog-diff-viewer" rel="noopener noreferrer"&gt;&lt;code&gt;puppet-catalog-diff-viewer&lt;/code&gt;&lt;/a&gt; is a container that contains the &lt;code&gt;puppet-catalog-diff-viewer&lt;/code&gt; tool, which is used to visualize the differences between two OpenVox/Puppet catalogs.&lt;/p&gt;

&lt;h3&gt;
  
  
  puppetboard
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/voxpupuli/puppetboard" rel="noopener noreferrer"&gt;&lt;code&gt;puppetboard&lt;/code&gt;&lt;/a&gt; is a container that contains the &lt;code&gt;puppetboard&lt;/code&gt; tool, which is a web interface for OpenVoxDB/PuppetDB.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;So you see, we have a lot of containers available.&lt;br&gt;
If you have any questions or suggestions, feel free to reach out to us on &lt;a href="https://github.com/voxpupuli" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; or on our other &lt;a href="https://voxpupuli.org/connect/" rel="noopener noreferrer"&gt;Channels&lt;/a&gt;&lt;br&gt;
If you need help with any of the containers, feel free to open an issue on the respective GitHub repository.&lt;br&gt;
Some examples of how to use the containers can be found in the &lt;a href="https://github.com/voxpupuli/crafty" rel="noopener noreferrer"&gt;CRAFTY&lt;/a&gt; repository.&lt;/p&gt;

</description>
      <category>openvox</category>
      <category>voxpupuli</category>
      <category>puppet</category>
      <category>container</category>
    </item>
    <item>
      <title>New container names for puppetserver and puppetdb</title>
      <dc:creator>Robert Waffen</dc:creator>
      <pubDate>Fri, 02 Aug 2024 12:57:37 +0000</pubDate>
      <link>https://dev.to/voxpupuli/new-container-names-for-puppetserver-and-puppetdb-3aem</link>
      <guid>https://dev.to/voxpupuli/new-container-names-for-puppetserver-and-puppetdb-3aem</guid>
      <description>&lt;p&gt;Beginning of today we are also releasing our puppetserver and puppetdb containers with shorter names.&lt;/p&gt;

&lt;p&gt;The current names are: &lt;code&gt;voxpupuli/container-puppetserver&lt;/code&gt; and &lt;code&gt;voxpupuli/container-puppetdb&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/orgs/voxpupuli/packages/container/package/container-puppetserver" rel="noopener noreferrer"&gt;https://github.com/orgs/voxpupuli/packages/container/package/container-puppetserver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/orgs/voxpupuli/packages/container/package/container-puppetdb" rel="noopener noreferrer"&gt;https://github.com/orgs/voxpupuli/packages/container/package/container-puppetdb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hub.docker.com/r/voxpupuli/container-puppetserver" rel="noopener noreferrer"&gt;https://hub.docker.com/r/voxpupuli/container-puppetserver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hub.docker.com/r/voxpupuli/container-puppetdb" rel="noopener noreferrer"&gt;https://hub.docker.com/r/voxpupuli/container-puppetdb&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The new, shorter names are: &lt;code&gt;voxpupuli/puppetserver&lt;/code&gt; and &lt;code&gt;voxpupuli/puppetdb&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/orgs/voxpupuli/packages/container/package/puppetserver" rel="noopener noreferrer"&gt;https://github.com/orgs/voxpupuli/packages/container/package/puppetserver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/orgs/voxpupuli/packages/container/package/puppetdb" rel="noopener noreferrer"&gt;https://github.com/orgs/voxpupuli/packages/container/package/puppetdb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hub.docker.com/r/voxpupuli/puppetserver" rel="noopener noreferrer"&gt;https://hub.docker.com/r/voxpupuli/puppetserver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hub.docker.com/r/voxpupuli/puppetdb" rel="noopener noreferrer"&gt;https://hub.docker.com/r/voxpupuli/puppetdb&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The content is exactly the same, only the name has changed. Only new tags will be pushed to the new names. The old names will also be updated.&lt;/p&gt;

&lt;p&gt;We plan to deprecate the old names in 6 months (2025-02), so please update your scripts and configurations to use the new names.&lt;/p&gt;

</description>
      <category>puppet</category>
      <category>container</category>
      <category>voxpupuli</category>
    </item>
    <item>
      <title>Vox Pupuli election results</title>
      <dc:creator>Ben Ford</dc:creator>
      <pubDate>Thu, 23 Mar 2023 02:32:02 +0000</pubDate>
      <link>https://dev.to/puppet/vox-pupuli-election-results-3j5j</link>
      <guid>https://dev.to/puppet/vox-pupuli-election-results-3j5j</guid>
      <description>&lt;p&gt;Well, &lt;em&gt;[[checks watch]]&lt;/em&gt; would ya look at that. It's March 23, UTC, and that means that it's time to close the &lt;a href="https://voxpupuli.org/blog/2023/02/10/pmc-elections-2023/" rel="noopener noreferrer"&gt;Vox Pupuli elections&lt;/a&gt;. Not only that but as it turns out, we had precisely five nominations which is the number of open positions. Y'all are making my job as the elections officer way too easy this time around!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/tuxmea" rel="noopener noreferrer"&gt;Martin&lt;/a&gt; was the first to submit a nomination, and as promised we'll be sending him a brand spankin' fresh hoodie as soon as we've got the new design finalized.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's get to it and meet your new PMC members!
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp64bmp3qc4pli0as4u6h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp64bmp3qc4pli0as4u6h.png" alt="bastelfreak's GitHub profile" width="800" height="190"&gt;&lt;/a&gt; No surprise to anyone, first up is Tim Muesel, known as &lt;a href="https://github.com/bastelfreak" rel="noopener noreferrer"&gt;&lt;code&gt;bastelfreak&lt;/code&gt;&lt;/a&gt; to many. One of the most prolific contributors in the Puppet community, Tim's tireless energy is an inspiration to all of us. &lt;a href="https://github.com/voxpupuli/plumbing/blob/master/share/elections/2023-01/bastelfreak.md" rel="noopener noreferrer"&gt;Read his nomination&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flrhmr730lfi8urc1lkku.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flrhmr730lfi8urc1lkku.png" alt="smortex's GitHub profile" width="800" height="190"&gt;&lt;/a&gt; Next up is Romain Tartière, also known as &lt;a href="https://github.com/smortex" rel="noopener noreferrer"&gt;&lt;code&gt;smortex&lt;/code&gt;&lt;/a&gt;. Romain has been maintaining the FreeBSD Puppet port for so long that he's seen three major Puppet versions go EOL. &lt;a href="https://github.com/voxpupuli/plumbing/blob/master/share/elections/2023-01/smortex.md" rel="noopener noreferrer"&gt;Read his nomination&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7g0w9mjlrso90eatubsg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7g0w9mjlrso90eatubsg.png" alt="rwaffen's GitHub profile" width="800" height="190"&gt;&lt;/a&gt; Then we have Robert Waffen, also known as &lt;a href="https://github.com/rwaffen" rel="noopener noreferrer"&gt;&lt;code&gt;rwaffen&lt;/code&gt;&lt;/a&gt;. Robert came to the Puppet community and then to Vox Pupuli in the same way that many do--by exploration and debugging and little fixes and then realizing just how much of an impact all his little fixes cumulatively added up to. We're grateful to have Robert and people like him with us. &lt;a href="https://github.com/voxpupuli/plumbing/blob/master/share/elections/2023-01/rwaffen.md" rel="noopener noreferrer"&gt;Read his nomination&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxgom7pj6o5dx2ktfbihm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxgom7pj6o5dx2ktfbihm.png" alt="sebastianrakel's GitHub profile" width="800" height="190"&gt;&lt;/a&gt; &lt;a href="https://github.com/sebastianrakel" rel="noopener noreferrer"&gt;Sebastian Rakel&lt;/a&gt; is active in both the Vox Pupuli and the Arch Linux communities. Not only is he a diligent pull request reviewer, but he also knows how to make communities valuable for all of us. &lt;a href="https://github.com/voxpupuli/plumbing/blob/master/share/elections/2023-01/spritzgebaeck.md" rel="noopener noreferrer"&gt;Read his nomination&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkg9jac8h4fha777h5vw4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkg9jac8h4fha777h5vw4.png" alt="ekohl's GitHub profile" width="800" height="190"&gt;&lt;/a&gt; Ewoud Kohl van Wijngaarden, also known as &lt;a href="https://github.com/ekohl" rel="noopener noreferrer"&gt;&lt;code&gt;ekohl&lt;/code&gt;&lt;/a&gt;, is one of the most knowledgeable people in the Puppet community. Not only that, but he's very helpful and always ready to share that expertise. I always pay extra attention to his PR reviews. &lt;a href="https://github.com/voxpupuli/plumbing/blob/master/share/elections/2023-01/ewoud.md" rel="noopener noreferrer"&gt;Read his nomination&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next?
&lt;/h2&gt;

&lt;p&gt;Over the next few days, the new PMC officers will be onboarded and the website updated. They'll select also select members to fill a couple specialized roles.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;em&gt;security officer&lt;/em&gt; is the point of contact for external or internal security issues. This person has a published gpg key, and will be the main point of contact for CVE numbers and such&lt;/li&gt;
&lt;li&gt;The &lt;em&gt;communications officer&lt;/em&gt; is the main point of contact for external and internal publicity and marketing efforts and requests.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>puppet</category>
      <category>community</category>
      <category>voxpupuli</category>
    </item>
  </channel>
</rss>
