<?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: Ben Ford</title>
    <description>The latest articles on DEV Community by Ben Ford (@binford2k).</description>
    <link>https://dev.to/binford2k</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F317491%2F5b53d854-a87f-456a-bdde-e73c50f09347.jpeg</url>
      <title>DEV Community: Ben Ford</title>
      <link>https://dev.to/binford2k</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/binford2k"/>
    <language>en</language>
    <item>
      <title>First release, hot off the presses!</title>
      <dc:creator>Ben Ford</dc:creator>
      <pubDate>Wed, 22 Jan 2025 19:54:53 +0000</pubDate>
      <link>https://dev.to/voxpupuli/first-release-hot-off-the-presses-4fg4</link>
      <guid>https://dev.to/voxpupuli/first-release-hot-off-the-presses-4fg4</guid>
      <description>&lt;p&gt;It’s been quite a journey, y’all. But we’re excited to announce the first release of &lt;a href="https://voxpupuli.org/openvox/" rel="noopener noreferrer"&gt;OpenVox&lt;/a&gt;, the community-maintained open source implementation of Puppet. OpenVox 8.11 is functionally equivalent to Puppet and should be a drop-in replacement. Be aware, of course, that even though you can type the same commands, use all the same modules and extensions, and configure the same settings, OpenVox is not yet tested to the same standard that Puppet is.&lt;/p&gt;

&lt;p&gt;Migrating is fairly simple, just replace the packages following instructions on the &lt;a href="https://voxpupuli.org/openvox/install/" rel="noopener noreferrer"&gt;handy dandy new install page&lt;/a&gt;. You’ll notice that they’re still using the &lt;code&gt;apt|yum.overlookinfratech.com&lt;/code&gt; repositories.&lt;br&gt;
As we get our infrastructure built out, these will probably be moved to the voxpupuli.org namespace. Please don’t use these packages on critical production infrastructures yet, unless you’re comfortable with troubleshooting and reporting back on the silly errors we’ve made while rebranding and rebuilding.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;If you’d like professional assistance in the migration, check out the &lt;a href="https://voxpupuli.org/openvox/support/" rel="noopener noreferrer"&gt;support page&lt;/a&gt; for companies who provide migration services.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We consider OpenVox a soft-fork because we intend to maintain downstream compatibility for as long as we are able. As such, Vox Pupuli is working with Perforce to create a Puppet™️ Standards Steering Committee to set the direction of features and language evolutions.&lt;/p&gt;

&lt;p&gt;The OpenVox project goals are pretty straightforward and aim to alleviate pain points observed by the community over the last few years:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Modernizing the OpenVox codebase and ecosystem, including supporting current operating systems.&lt;/li&gt;
&lt;li&gt;Recentering and focusing on community requirements; user needs will drive development.&lt;/li&gt;
&lt;li&gt;Democratizing platform support by allowing community members to contribute what they need instead of waiting for business requirements to align.&lt;/li&gt;
&lt;li&gt;Maintaining an active and responsive open source community like the rest of Vox Pupuli's namespace.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Find out more or get involved at &lt;a href="https://github.com/openvoxproject" rel="noopener noreferrer"&gt;our GitHub namespace&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>puppet</category>
      <category>community</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Security considerations of configuration management</title>
      <dc:creator>Ben Ford</dc:creator>
      <pubDate>Wed, 29 May 2024 21:24:36 +0000</pubDate>
      <link>https://dev.to/puppet/security-considerations-of-configuration-management-122n</link>
      <guid>https://dev.to/puppet/security-considerations-of-configuration-management-122n</guid>
      <description>&lt;p&gt;We often take for granted that the security implications of using configuration management tools like Puppet, Chef, or Ansible are obvious, but that’s far from the truth. I would be lying if I said that I’d never deployed dangerous configuration management code into production use that in retrospect should have been obvious from the start. Here’s a &lt;a href="https://github.com/puppetlabs/puppet-validator/commit/5324bb0a3f9ac0a95d76e4aa7ce8360052182738" rel="noopener noreferrer"&gt;great example&lt;/a&gt;; the ability to destroy the online Puppet code validator was live for over a year! &lt;/p&gt;

&lt;p&gt;So with that in mind, let’s take a wander through the Puppet ecosystem and talk about some things that might have security implications and might warrant a closer look in regard to access control. And let’s not bury the lede here; &lt;em&gt;no matter what framework you’re running, configuration management is &lt;strong&gt;by definition&lt;/strong&gt; root/Administrator level access to your entire infrastructure&lt;/em&gt; and access to its setup and codebase should be treated as such. The examples referenced in this guide are specific to Puppet, but the higher-level concepts are not. If you’re using a competing configuration management platform, you should evaluate your usage for similar patterns. &lt;/p&gt;

&lt;p&gt;Taking a security mindset here means that this guide will refer to “attack vectors.” This does not mean that there is a vulnerability. It simply means that there might be potential for an attacker to exploit a misconfiguration. &lt;strong&gt;And to be clear, this is not intended to be an exhaustive checklist of the things you should avoid; instead, it’s a guide of how to think about code deployed into a configuration management infrastructure&lt;/strong&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;📝&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;The basic trust model of Puppet and other configuration management systems is that you are expected to maintain trusted control over your codebase.&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;In hindsight, that's kind of obvious -- configuration management works by distributing certain kinds of code and data across your infrastructure and executing it with admin privileges to ensure that your systems are configured in the state you want.  &lt;/p&gt;

&lt;p&gt;But there are a few places where this executable code isn't obvious. Less scrutiny means that these areas can be used as attack vectors. For example, during catalog compilation, functions are executed on the server. This means any custom functions included in modules, but it also means compiling Ruby code in ERB templates, and shell code run by the &lt;code&gt;generate()&lt;/code&gt; function, and so on. The &lt;code&gt;config_version&lt;/code&gt; script is executed prior to a catalog compilation; people usually use it to expose git revisions or the like, but it's just a shell script. It can run anything you want, and it's right in the control repository. And custom facts sync out and start running with root privileges across your whole infrastructure as soon as you install their modules.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security recommendations:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;When installing new modules you should audit: 

&lt;ul&gt;
&lt;li&gt;Check for custom facts and functions and see what they do. &lt;/li&gt;
&lt;li&gt;Check for ERB templates and ensure that they contain only presentation or layout code, such as iterating over an array to build stanzas in a configuration file. Any other Ruby logic is suspect. Check manifests for use of the &lt;code&gt;inline_template()&lt;/code&gt; function and validate them in the same way. &lt;/li&gt;
&lt;li&gt;Skim the manifests for use of the &lt;code&gt;generate()&lt;/code&gt; function. There are extremely few valid use cases for this function, so any sight of it should be a red flag. &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;When reviewing pull/merge requests to your control repository: 

&lt;ul&gt;
&lt;li&gt;Pay very close attention to any changes to the &lt;code&gt;config_version&lt;/code&gt; script. &lt;/li&gt;
&lt;li&gt;If new modules are added to the &lt;code&gt;Puppetfile&lt;/code&gt;, then verify that they’ve been audited.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;The &lt;code&gt;Puppetfile&lt;/code&gt; is another surprise. It looks like a data file, and so many people doing code review treat it like data. But it's actually a custom DSL implemented as Ruby, meaning that it's possible &lt;em&gt;(although highly discouraged)&lt;/em&gt; to include arbitrary code that will run during a codebase deploy. This is a sneaky attack vector because if someone can create a branch in your control repository, then it may be deployed and executed before anyone else can review it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security recommendations:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Do not allow untrusted users the ability to create branches in your control repository. &lt;/li&gt;
&lt;li&gt;Consider using VCS checks to reject commits containing unexpected code in your &lt;code&gt;Puppetfile&lt;/code&gt;. An unsupported and lightly tested example is available &lt;a href="https://github.com/puppetlabs/puppetfile-check" rel="noopener noreferrer"&gt;here&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;When reviewing pull/merge requests to your control repository, pay very close attention to any changes to the &lt;code&gt;Puppetfile&lt;/code&gt; and review it like code rather than treating it like simple data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And of course, any modules you add to your control repo can run any custom extensions, or &lt;code&gt;exec&lt;/code&gt; statements, or anything at all anywhere it's classified onto a node. Malicious modules can theoretically have a higher impact, because they're invoked as the root or admin user. &lt;/p&gt;

&lt;h2&gt;
  
  
  Security recommendations:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;When installing new modules you should audit: 

&lt;ul&gt;
&lt;li&gt;Skim the manifests to get a general idea of how the module works and what it manages. Pay extra attention to anything that seems out of place. &lt;/li&gt;
&lt;li&gt;Look for resources that run shell code, such as &lt;code&gt;exec&lt;/code&gt;, or cron jobs, the &lt;code&gt;validate&lt;/code&gt; parameter of the &lt;code&gt;file&lt;/code&gt; type, or the various command parameters of the &lt;code&gt;service&lt;/code&gt; type. Besides looking for malicious code, also inspect for unsafe interpolation that can be used for shell injection attacks.&lt;/li&gt;
&lt;li&gt;Check for custom types and providers. These are not as simple to read but you should look for anything that looks out of place or unrelated to the thing it claims to manage.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;If you identify any concerns, raise them as issues on the module’s repository or ask community peers about it in our &lt;a href="https://slack.puppet.com" rel="noopener noreferrer"&gt;Slack workspace&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Most of this shouldn't be terribly concerning. Again, automating the execution of code across your infrastructure is what infrastructure automation does. But it is important to remember that and treat your control repository and anything it might contain as privileged code. Audit modules before you use them, or only use modules from trusted authors. Be careful who has access to your control repo, or entries in your &lt;code&gt;Puppetfile&lt;/code&gt;. And don't forget about the various unexpected code execution triggers. Classifying modules onto nodes isn't the only way to get their code to run. &lt;/p&gt;

&lt;p&gt;Remember, this is not an exhaustive list of everything to look for. But I do hope that it gives you an idea of the types of vectors that could be abused by malicious actors and some good habits to get into. What other safeguards do you have protecting your codebase? Drop them in the comments! &lt;/p&gt;

</description>
      <category>puppet</category>
      <category>devops</category>
      <category>security</category>
    </item>
    <item>
      <title>May the Source Be With You, 2024!</title>
      <dc:creator>Ben Ford</dc:creator>
      <pubDate>Fri, 03 May 2024 18:37:38 +0000</pubDate>
      <link>https://dev.to/puppet/may-the-source-be-with-you-2024-4iep</link>
      <guid>https://dev.to/puppet/may-the-source-be-with-you-2024-4iep</guid>
      <description>&lt;p&gt;It's Star Wars Day again, and we usually do a hackathon to celebrate. This year it falls on a weekend though, and we're trying to get better at respecting everyone's work-life balance and personal time. &lt;/p&gt;

&lt;p&gt;Luke Skywalker actually only said &lt;em&gt;May the Force be with you!&lt;/em&gt; once and it was offscreen. We're going to channel a bit of that energy here and do a low-key "offscreen" self-paced hackathon. Any non-trivial pull request contributed to either the puppetlabs or voxpupuli GitHub namespaces on May 4 will earn you an iconic &lt;em&gt;&lt;strong&gt;May the Source Be With You&lt;/strong&gt;&lt;/em&gt; sticker.&lt;/p&gt;

&lt;p&gt;So what's fair game? Anything, really. Write a &lt;a href="https://github.com/voxpupuli/voxpupuli.github.io/tree/master/_posts" rel="noopener noreferrer"&gt;blog post for Vox&lt;/a&gt;. Fix a bug for add a feature to a Puppet Supported module. Clean up documentation for r10k to make it more readable. Check out the &lt;a href="https://github.com/issues?q=is%3Aopen+is%3Aissue+user%3Avoxpupuli+archived%3Afalse+sort%3Acreated-desc" rel="noopener noreferrer"&gt;issues list&lt;/a&gt; on the &lt;a href="https://voxpupuli.org" rel="noopener noreferrer"&gt;Vox Pupuli homepage&lt;/a&gt; and see if there's anything that you'd like to fix.&lt;/p&gt;

&lt;p&gt;Just don't flood us with low effort spam. We all remember what happened with Hacktoberfest. If you contribute something, make it more than a whitespace or typo fix.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;And a very important point to close on! If you want the sticker, you'll need to use &lt;a href="https://forms.office.com/r/Cn55uJmWMH" rel="noopener noreferrer"&gt;this form&lt;/a&gt; to share your mailing address.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can follow along and see what's been contributed with &lt;a href="https://github.com/pulls?q=is%3Apr+user%3Apuppetlabs+user%3Avoxpupuli+archived%3Afalse+sort%3Acreated-asc+created%3A2024-05-04+" rel="noopener noreferrer"&gt;this dashboard&lt;/a&gt;. Who will be the first to contribute?&lt;/p&gt;

&lt;p&gt;Happy weekend, happy hacking, and we're excited to see what you create. May the source be with you!&lt;/p&gt;

</description>
      <category>puppet</category>
      <category>community</category>
      <category>maythefourth</category>
      <category>hackathon</category>
    </item>
    <item>
      <title>Announcing Puppet Enterprise 1401</title>
      <dc:creator>Ben Ford</dc:creator>
      <pubDate>Mon, 01 Apr 2024 05:36:34 +0000</pubDate>
      <link>https://dev.to/puppet/announcing-puppet-enterprise-1401-pjc</link>
      <guid>https://dev.to/puppet/announcing-puppet-enterprise-1401-pjc</guid>
      <description>&lt;p&gt;In the rapidly changing world we live in, it’s easy to overlook the quiet minority of the tech industry that doesn’t keep up with the breakneck pace of innovation. Rather than living on the bleeding edge, they value the fantastic stability that comes from running decades-old software which has withstood the test of time. To them, change is anathema--nothing but an opportunity for something to break.&lt;/p&gt;

&lt;p&gt;Puppet's workflow is ideal for such use. Once you've defined your desired state, Puppet's consistency model will maintain that state indefinitely--years, if needed. It should come as no surprise that 100%&lt;sup&gt;*&lt;/sup&gt; of sites running IBM 1401 machines have requested a version of Puppet for their systems. &lt;strong&gt;We are happy to respond to this overwhelming demand and are announcing &lt;em&gt;Puppet Enterprise 1401 &lt;sup&gt;tm&lt;/sup&gt;&lt;/em&gt; today&lt;/strong&gt;. This is the same Puppet Enterprise you know and love, tailored carefully to fit into the unique limitations of the IBM 1401.&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%2Fbabmj9tznv6yw4wdx684.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%2Fbabmj9tznv6yw4wdx684.png" alt="Doctored image showing Puppet Enterprise displayed on monitors in an IBM 1401 computer room, implying that it's running on the 1401 itself." width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Obviously, the runtime environment is significantly different from other systems that Puppet runs on and this necessitated some workflow changes. Instead of the server-client model traditionally used by Puppet infrastructures, &lt;em&gt;Puppet Enterprise 1401 &lt;sup&gt;tm&lt;/sup&gt;&lt;/em&gt; works with an existing Puppet Enterprise server and allows you to compile your configuration catalog onto a set of punchcards along with the &lt;em&gt;1401 Puppet Catalog Applicator&lt;/em&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%2Fa51c4cg41mi19qihnpea.jpg" 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%2Fa51c4cg41mi19qihnpea.jpg" alt="A stack of IBM punchcards" width="640" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This model is truly agentless, as the &lt;em&gt;1401 Puppet Catalog Applicator&lt;/em&gt; makes the catalog self-loading. This uses the &lt;a href="https://gnucobol.sourceforge.io" rel="noopener noreferrer"&gt;GnuCobol&lt;/a&gt; backend to compile your Puppet code into Autocoder, and then uses &lt;em&gt;1401 Autocoder&lt;/em&gt; with COBOL subroutines to generate machine language that your IBM 1401 can process to manage its configuration.&lt;/p&gt;

&lt;p&gt;To process the Puppet self-loading configuration catalog, the 1401 must have at least:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A minimum of 8,000 positions of core storage&lt;/li&gt;
&lt;li&gt;Four IBM magnetic-tape units&lt;/li&gt;
&lt;li&gt;IBM 1403 Printer, Model 2&lt;/li&gt;
&lt;li&gt;IBM 1402 Card Read-Punch&lt;/li&gt;
&lt;li&gt;Advanced Programming Feature&lt;/li&gt;
&lt;li&gt;High-Low-Equal Compare Feature&lt;/li&gt;
&lt;li&gt;Multiply-Divide Feature&lt;/li&gt;
&lt;li&gt;Input and output units defined in the FILE-CONTROL paragraph.&lt;/li&gt;
&lt;li&gt;Sense switches&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Operator Instructions
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Ready the tapes on tape units 2, 3, and 4. These tapes are used for runtime state management.&lt;/li&gt;
&lt;li&gt;Load the card reader with the Puppet catalog set of cards.

&lt;ul&gt;
&lt;li&gt;The catalog must be preceded by a &lt;code&gt;COBOL RUN&lt;/code&gt; card and followed by an &lt;code&gt;END OF SOURCE&lt;/code&gt; card.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Set sense switches as follows:

&lt;ul&gt;
&lt;li&gt;Turn sense switch &lt;code&gt;A&lt;/code&gt; on if you'd like to keep the main applicator program in core storage. This requires more positions free, but is much faster.&lt;/li&gt;
&lt;li&gt;Turn sense switch &lt;code&gt;F&lt;/code&gt; on if you'd like to log output to the line printer.&lt;/li&gt;
&lt;li&gt;Turn sense switch &lt;code&gt;G&lt;/code&gt; on to run in &lt;code&gt;no-op&lt;/code&gt; mode.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Press the &lt;code&gt;START&lt;/code&gt; button once to load the &lt;em&gt;1401 Puppet Catalog Applicator&lt;/em&gt; into core memory.&lt;/li&gt;
&lt;li&gt;When card reading stops, press the &lt;code&gt;START&lt;/code&gt; button once more to read and process the catalog.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://computerhistory.org/exhibits/ibm1401/" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;Find out more about Puppet Enterprise 1401&lt;/a&gt;
&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Images from:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://commons.m.wikimedia.org/wiki/File:IBM_1401_with_open_drawer_at_CHM.jpg" rel="noopener noreferrer"&gt;https://commons.m.wikimedia.org/wiki/File:IBM_1401_with_open_drawer_at_CHM.jpg&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://commons.wikimedia.org/w/index.php?curid=104449847" rel="noopener noreferrer"&gt;https://commons.wikimedia.org/w/index.php?curid=104449847&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://commons.wikimedia.org/wiki/File:CHM_Artifacts_IBM_96-hole_punched_card_from_1969_%283127086932%29.jpg" rel="noopener noreferrer"&gt;https://commons.wikimedia.org/wiki/File:CHM_Artifacts_IBM_96-hole_punched_card_from_1969_%283127086932%29.jpg&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a&gt;&lt;/a&gt;By stretching the rules of mathematics a bit, 0 out of 0 is 100%.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>puppet</category>
      <category>humor</category>
      <category>aprilfools</category>
    </item>
    <item>
      <title>The internet is on fire again. This time it's XZ</title>
      <dc:creator>Ben Ford</dc:creator>
      <pubDate>Sat, 30 Mar 2024 18:32:59 +0000</pubDate>
      <link>https://dev.to/puppet/the-internet-is-on-fire-again-this-time-its-xz-426b</link>
      <guid>https://dev.to/puppet/the-internet-is-on-fire-again-this-time-its-xz-426b</guid>
      <description>&lt;p&gt;It appears that the internet is on fire again. This time in a story reminiscent of &lt;a href="https://en.wikipedia.org/wiki/The_Cuckoo%27s_Egg_(book)" rel="noopener noreferrer"&gt;Cliff Stoll's hunt for a 75 cent accounting discrepancy&lt;/a&gt;, a software engineer doing some profiling noticed slightly elevated CPU usage where it shouldn't be. He tugged on that thread and discovered a cleverly obfuscated backdoor in the XZ compression utility that leads to unauthenticated SSH logins.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;ℹ️ tldr; if you don't have time to read the full post, we have &lt;a href="https://forge.puppet.com/modules/puppetlabs/xzscanner/readme" rel="noopener noreferrer"&gt;released a Puppet module&lt;/a&gt; that can help detect the current known xz backdoor.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What makes this compromise so concerning is that it was perpetuated by a long-term known contributor, with maintainer access to the XZ GitHub repository. This malicious actor has been working hard for at least two years to lay the foundation for this backdoor. They utilized sockpuppet accounts to pressure the original maintainer to accept help from a relatively unknown contributor and then later to weasel the compromised library into popular Linux distributions.&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%2Fl6zg6s338b4icdtiukuh.jpeg" 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%2Fl6zg6s338b4icdtiukuh.jpeg" alt="Community Fire Pizza Meme showing a system admin returning to work from the weekend to see everything on fire from the XZ backdoor." width="500" height="567"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This attack was not only technical in nature, but also compromised the social network foundation of the open source community. We will be learning and evolving from this attack for years.&lt;/p&gt;

&lt;p&gt;Our current understanding says that the XZ backdoor is the only active compromise, but due to the convoluted and long-term nature of the attack, everything they've touched for the last two years is suspect. And because the malicious actor had admin access to the XZ repository and could have easily spoofed commits, all activity in the repo is also suspect.&lt;/p&gt;

&lt;p&gt;We'll be untangling this for a while. What we have today is a &lt;a href="https://www.openwall.com/lists/oss-security/2024/03/29/4" rel="noopener noreferrer"&gt;quick script&lt;/a&gt; to detect the known compromise.&lt;/p&gt;

&lt;p&gt;Nick Burgan, a software engineer at Puppet whose name you might recognize from their community engagement, took the initiative to build a &lt;a href="https://forge.puppet.com/modules/puppetlabs/xzscanner/readme" rel="noopener noreferrer"&gt;quick module which orchestrates that detection script across your infrastructure&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;All the usual disclaimers apply. We currently have no way of knowing how complete that detection script is. The nature of the compromise means that our understanding of it will continue to evolve for weeks and new detection methods will be discovered. Your help in keeping the module current with the latest detection methods would be greatly appreciated!&lt;/p&gt;

&lt;p&gt;This module provides both a task which you can run interactively across nodes in your infrastructure and can also set up a scheduled task to run the detection script daily. We encourage you use this scheduled task and to pin the module to the &lt;code&gt;latest&lt;/code&gt; release in your &lt;code&gt;Puppetfile&lt;/code&gt; to ensure that you get updates. This will ensure that when we add improved detection methods, your infrastructure will be running them shortly.&lt;/p&gt;

&lt;h3&gt;
  
  
  # &lt;code&gt;Puppetfile&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;mod&lt;/span&gt; &lt;span class="s1"&gt;'puppetlabs-xzscanner'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'latest'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then classify all nodes with &lt;code&gt;xzscanner&lt;/code&gt;. You might do that by putting it in a base profile class, or by adding it to the global &lt;code&gt;site.pp&lt;/code&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Header photo from &lt;a href="https://www.flickr.com/photos/jeremybrooks/2398999602/" rel="noopener noreferrer"&gt;https://www.flickr.com/photos/jeremybrooks/2398999602/&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>puppet</category>
      <category>community</category>
    </item>
    <item>
      <title>Recovering archived Puppet blog posts</title>
      <dc:creator>Ben Ford</dc:creator>
      <pubDate>Tue, 27 Feb 2024 00:00:00 +0000</pubDate>
      <link>https://dev.to/binford2k/recovering-archived-puppet-blog-posts-4b48</link>
      <guid>https://dev.to/binford2k/recovering-archived-puppet-blog-posts-4b48</guid>
      <description>&lt;p&gt;The Puppet blog has long been a treasure trove of content. You never knew what you might find; a product announcement, an industry analysis, a user interview, a technical post. And it never deleted content, so people got into the habit of linking to blog posts to use as reference or documentation.&lt;/p&gt;

&lt;p&gt;This was really great in a lot of ways, but it came with its downsides. Outdated content didn’t always get updated expediently and the amount of content just kept growing so there really wasn’t a good way to manage updates. Only the content that was actively noticed and complained about was updated. So links across the web often pointed to old and outdated content….&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔔 Unfortunately due to how Google indexing works, that really meant that the old, outdated, and often inaccurate content surfaced at the top of search results way too darn often!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;During the acquisition, the new marketing team made the decision to declare bankruptcy and start over. They decided to refocus the blog on mostly industry news and product updates and asked the Community and Engineering teams to republish still-relevant content onto the &lt;a href="https://dev.to/puppet"&gt;engineering blog&lt;/a&gt;. They kept some of the old content that was performing well from an SEO standpoint and still relevant, but archived most of it.&lt;/p&gt;

&lt;p&gt;Understandably, this was dismaying for those of us using these posts for documentation! But don’t fret, there is a blog archive located at &lt;a href="https://prod-puppet-blog.netlify.app/blog/" rel="noopener noreferrer"&gt;https://prod-puppet-blog.netlify.app/blog/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I’ve created a shortcut a method for retrieving pages from the archive if you have the URL.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;First drag &lt;a&gt;this link&lt;/a&gt; to your bookmarks folder and give it a reasonable name like “retrieve archived Puppet blog posts.”&lt;/li&gt;
&lt;li&gt;Then when you see a link that leads to an archived post that you’d like to recover right click and copy it.&lt;/li&gt;
&lt;li&gt;Click the bookmark and paste the URL into the dialog you see.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When you click OK, it will take you to directly the archived content. Save the page for your own reference or republish it as long as you respect copyright. _ &lt;strong&gt;🚨 Please don’t link to the archive&lt;/strong&gt; _, as there’s no guarantee how long it will stay running.&lt;/p&gt;

&lt;p&gt;Happy excavating!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(image from &lt;a href="https://www.worldhistory.org/image/1353/archaeology/" rel="noopener noreferrer"&gt;https://www.worldhistory.org/image/1353/archaeology/&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;

</description>
      <category>community</category>
      <category>puppet</category>
    </item>
    <item>
      <title>Vox Pupuli Elections, 2024 edition</title>
      <dc:creator>Ben Ford</dc:creator>
      <pubDate>Mon, 12 Feb 2024 13:42:44 +0000</pubDate>
      <link>https://dev.to/puppet/vox-pupuli-elections-2024-edition-47cg</link>
      <guid>https://dev.to/puppet/vox-pupuli-elections-2024-edition-47cg</guid>
      <description>&lt;p&gt;As announced at CfgMgmtCamp last week, we are kicking off the more-or-less annual PMC elections process. This is a yearly process to provide more people opportunities to get involved with our leadership and decision making.  Would you like to help set roadmap or help architect our Puppet 8 support plans? Do you want to help organize events or run social media? Do you love spreadsheets and want to help with accounting and fundraising? Maybe you'd like to help curate our blog or source content from fresh writers.&lt;/p&gt;

&lt;p&gt;Maybe you just want to get involved and help out with whatever is needed. Joining the PMC is your avenue to this involvement.&lt;/p&gt;

&lt;p&gt;Starting today, you may nominate yourself or someone else for the elections. Nominations are open until &lt;em&gt;March 22 2024 23:59 UTC&lt;/em&gt; and then we'll vote to select the 5 new members of the PMC.&lt;/p&gt;

&lt;p&gt;See the &lt;a href="https://github.com/voxpupuli/plumbing/blob/master/share/elections/2024-01.md" rel="noopener noreferrer"&gt;elections page in our plumbing repository&lt;/a&gt; for nomination instructions.&lt;/p&gt;

&lt;p&gt;I'll be your elections officer this year. I hope to see your PR soon, and I've got a Vox hoodie for the first person to submit a nomination.&lt;/p&gt;

&lt;p&gt;Thanks!&lt;/p&gt;

</description>
      <category>puppet</category>
      <category>community</category>
      <category>voxpupuli</category>
    </item>
    <item>
      <title>CfgMgmtCamp talks I want to see</title>
      <dc:creator>Ben Ford</dc:creator>
      <pubDate>Wed, 31 Jan 2024 00:33:21 +0000</pubDate>
      <link>https://dev.to/puppet/cfgmgmtcamp-talks-i-want-to-see-22f4</link>
      <guid>https://dev.to/puppet/cfgmgmtcamp-talks-i-want-to-see-22f4</guid>
      <description>&lt;p&gt;&lt;a href="https://dev.to/puppet/get-your-cfgmgmtcamp-puppet-community-day-tickets-before-theyre-gone-59o8"&gt;CfgMgmtCamp is next week&lt;/a&gt;, and I hope you got all your travel booked already! This conference means a lot to us in the Puppet ecosystem; we've been coming back to Ghent and seeing familiar faces each year for over a decade now (with the obvious exceptions).&lt;/p&gt;

&lt;p&gt;We've made a lot of great memories there, from sushi boats with Toshi to drinking too much jenever at 't Dreupelkot and sleeping through my first session. I'm looking forward to seeing the &lt;a href="http://www.trollekelder.be" rel="noopener noreferrer"&gt;"troll bar"&lt;/a&gt; again, of course.&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%2Flds87jgu70ab5835exb9.JPG" 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%2Flds87jgu70ab5835exb9.JPG" alt="Front window troll display at Trollekelder" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's not all fun and games, of course. Every year we learn something new and exciting and spend time brainstorming and dreaming up new visionary ideas. Sometimes those ideas even get implemented and become the subject of next year's talks. Last year Adam told us that DevOps was invented to paper over the pain of traditional sysadmin tools and posits that we're now into second order tooling to paper over the pain of DevOps and I'm looking forward to hearing what's new this year.&lt;/p&gt;

&lt;p&gt;I have a somewhat eclectic list of talks I am hoping to see. Some are because I want to learn, but some just sound fun or intriguing. This year we've even got a couple talks on how to improve the climate footprint of your infrastructure!&lt;/p&gt;

&lt;p&gt;Michael Coté is talking about the &lt;a href="https://cfp.cfgmgmtcamp.org/2024/talk/P8V7AA/" rel="noopener noreferrer"&gt;fear of change&lt;/a&gt; at an organizational level. Whether it's moving to (or from) GitOps or deploying a new internal developer platform or building a new career mentoring program, we all combat organizational inertia and I'm interested in learning some new tactics for dealing with it.&lt;/p&gt;

&lt;p&gt;In most programming languages and computing platforms these days we no longer have to think to hard about registers and L2 cache or endianness or interrupt handling and jump tables. We just write our application code and let the runtime figure out all the gory details. Winglang is a higher order programming language that promises to abstract away cloud resources in similar ways so that you can declare them and use them right alongside application code and Elad Ben-Israel is going to &lt;a href="https://cfp.cfgmgmtcamp.org/2024/talk/RNBK88/" rel="noopener noreferrer"&gt;show how it works&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;There are several others, from what to do &lt;a href="https://cfp.cfgmgmtcamp.org/2024/talk/EF9BBH/" rel="noopener noreferrer"&gt;when automation just amplifies technical debt&lt;/a&gt;, to a story of &lt;a href="https://cfp.cfgmgmtcamp.org/2024/talk/VKATZ7/" rel="noopener noreferrer"&gt;the kids taking up mainframe systems alongside the old fogeys&lt;/a&gt; 😜.&lt;/p&gt;

&lt;p&gt;Florian Haas is going to talk about &lt;a href="https://cfp.cfgmgmtcamp.org/2024/talk/GZ3RCJ/" rel="noopener noreferrer"&gt;why he doesn't believe in simplification&lt;/a&gt;, and while I don't think I agree with him, I'm looking forward to learning and being proven wrong.&lt;/p&gt;

&lt;p&gt;Of course, there's a 1-2-3 from Tim and Martin and Alessandro on some of the things you can do with Puppet, from troubleshooting to writing better code. There's even a talk on event driven Ansible, which I've been meaning to read more about.&lt;/p&gt;

&lt;p&gt;Like always, the third day is Puppet's Community Day. We'll have a couple engineers from our DevX team if you have questions or ideas about any of our developer tooling. We'll be collaborating on modules and tools and processes and such. And we'll be kicking off Vox Pupuli's annual election process.&lt;/p&gt;

&lt;p&gt;I'm really looking forward to seeing a lot of you next week. If you haven't registered yet then &lt;a href="https://cfgmgmtcamp.eu/ghent2024/registration/" rel="noopener noreferrer"&gt;&lt;strong&gt;&lt;em&gt;go do it!&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt; It's free and helps us with capacity planning. Don't forget to select the "Workshop / Fringe" option and sign up for Community Day so we know how many to expect.&lt;/p&gt;

</description>
      <category>puppet</category>
      <category>community</category>
      <category>devops</category>
      <category>conference</category>
    </item>
    <item>
      <title>Get your CfgMgmtCamp &amp; Puppet Community Day tickets before they’re gone!</title>
      <dc:creator>Ben Ford</dc:creator>
      <pubDate>Wed, 17 Jan 2024 20:08:26 +0000</pubDate>
      <link>https://dev.to/puppet/get-your-cfgmgmtcamp-puppet-community-day-tickets-before-theyre-gone-59o8</link>
      <guid>https://dev.to/puppet/get-your-cfgmgmtcamp-puppet-community-day-tickets-before-theyre-gone-59o8</guid>
      <description>&lt;p&gt;It’s only a few short weeks until we meet up in Ghent again for Config Management Camp and Puppet Community Day. The conference is FREE but you must &lt;a href="https://cfgmgmtcamp.eu/ghent2024/" rel="noopener noreferrer"&gt;register for a spot&lt;/a&gt; and we sell out every year! &lt;br&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%2Flo0nfak5e5bw65wl9kdc.jpeg" 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%2Flo0nfak5e5bw65wl9kdc.jpeg" alt="Kris presenting conference info in 2023" width="800" height="1066"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://cfgmgmtcamp.eu/ghent2024/schedule/" rel="noopener noreferrer"&gt;schedule&lt;/a&gt; has been posted and it’s full of gems. Everything from how infrastructure choices affect climate change to how the Second Law of Thermodynamics applies to DevOps to the resurgence of mainframe computing and what’s it’s like to make that career choice today. To no surprise, compliance and AI are big this year and like always, there’s a strong showing on solving human organizational problems. Learn about building confidence in change and how to safely grow that silly little script or wiki page to a full internal developer platform. &lt;/p&gt;

&lt;p&gt;The Puppet track includes talks about the whole lifecycle of Puppet infrastructures – writing and refactoring to get better Puppet code, understanding how classification gets that code to the nodes you want it on, performance tuning your infrastructure, and more. &lt;/p&gt;

&lt;p&gt;Finish up the conference with Puppet Community Day. Meet Puppet DevX engineers and chat with Vox Pupuli about plans for the upcoming year. Share projects you’re working on and challenges you’re running into. Work together and collaborate with your peers to solve these problems. Share your ideas and maybe even influence our developer ecosystem roadmap.&lt;br&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%2Fhiemr4p81q6jyxy4v1d2.jpeg" 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%2Fhiemr4p81q6jyxy4v1d2.jpeg" alt="David and Craig talking about our CI pipelines in 2023" width="546" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Watch this space. In the upcoming days, I’ll be posting a quick writeup of some of the talks I’m most interested in attending. &lt;/p&gt;

&lt;p&gt;I hope to see you in Ghent soon! And just a heads-up, this year is the tri-annual (is that even a word?) &lt;a href="https://visit.gent.be/en/calendar/ghent-light-festival" rel="noopener noreferrer"&gt;Light Festival&lt;/a&gt;, so if you’re intending to drive yourself, make sure to budget extra time for it. &lt;/p&gt;

</description>
      <category>puppet</category>
      <category>community</category>
      <category>conference</category>
      <category>devops</category>
    </item>
    <item>
      <title>Public issue reporting is back!</title>
      <dc:creator>Ben Ford</dc:creator>
      <pubDate>Fri, 03 Nov 2023 19:02:03 +0000</pubDate>
      <link>https://dev.to/puppet/public-issue-reporting-is-back-4bmp</link>
      <guid>https://dev.to/puppet/public-issue-reporting-is-back-4bmp</guid>
      <description>&lt;p&gt;I’m happy to share that public issue reporting is back!&lt;br&gt;
You can now file issues directly in GitHub right on the project itself using the GitHub account you probably already have.&lt;/p&gt;

&lt;p&gt;Issue creation is now enabled in the following repositories&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;puppet-agent&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;puppet&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;puppetdb&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;puppetserver&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;&lt;code&gt;facter&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We will be reviewing any new issues created using our normal triage process and update tickets accordingly. Since planning happens internally you may not see much activity on the issue until it’s being actively worked on.&lt;/p&gt;

&lt;p&gt;We are working on a process to migrate existing tickets and we will provide an update on that soon. Until then you can still view existing tickets on &lt;a href="https://puppet.atlassian.net" rel="noopener noreferrer"&gt;https://puppet.atlassian.net&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thank you for all the input you provide us and we hope that this makes it easier to contribute going forward.&lt;/p&gt;

</description>
      <category>puppet</category>
      <category>community</category>
      <category>github</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>
    <item>
      <title>Puppet’s Migration to Jira Cloud next Friday</title>
      <dc:creator>Ben Ford</dc:creator>
      <pubDate>Wed, 01 Mar 2023 23:35:37 +0000</pubDate>
      <link>https://dev.to/puppet/puppets-migration-to-jira-cloud-next-friday-36bh</link>
      <guid>https://dev.to/puppet/puppets-migration-to-jira-cloud-next-friday-36bh</guid>
      <description>&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;⚠️ Update:&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Some projects have been reverted. By this we mean that the Jira Cloud version has been marked as read-only and the canonical version has reverted again to the existing &lt;code&gt;tickets.puppetlabs.com&lt;/code&gt; version.&lt;br&gt;&lt;br&gt;We took this step because we're migrating projects iteratively, meaning that internal projects are still running on our good old &lt;a href="//tickets.puppetlabs.com"&gt;Jira Server instance&lt;/a&gt;. Unfortunately, linking between different instances is not possible, and this made work-in-progress epics that used these tickets un-closable.&lt;br&gt;&lt;br&gt;Unsurprisingly, engineers aren't super happy about not being able to mark their work as complete and the required projects were reverted in order to unblock their progress.&lt;br&gt;&lt;br&gt;The public projects are still viewable with all information up until the migration, but moving forward we are going to need to re-evaluate how to interact with the public. More on that to come, so watch this space! We have identified any ticket that was filed on the public JIRA instance while it was live and will be reconciling that with our internal instance.&lt;br&gt;&lt;br&gt;See the table below for the status of each project.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Puppet’s public facing Jira projects will be moving to a new Jira Cloud instance at &lt;a href="https://puppet.atlassian.net" rel="noopener noreferrer"&gt;https://puppet.atlassian.net&lt;/a&gt; &lt;strong&gt;starting on Friday 2023-03-10&lt;/strong&gt;. See the attached list for all the projects being migrated.&lt;/p&gt;

&lt;p&gt;If you have been identified as a user in the Puppet Jira instance at &lt;a href="https://tickets.puppetlabs.com" rel="noopener noreferrer"&gt;https://tickets.puppetlabs.com&lt;/a&gt;, then you should also have received an email with these instructions.&lt;/p&gt;

&lt;p&gt;The migration will begin at &lt;a href="https://www.timeanddate.com/worldclock/fixedtime.html?msg=Puppet+Jira+Cloud+Migration+Begins&amp;amp;iso=20230310T17&amp;amp;p1=202" rel="noopener noreferrer"&gt;5:00 PM Pacific Standard Time Friday 2023-03-10&lt;/a&gt;. The migration is expected to be completed by &lt;a href="https://www.timeanddate.com/worldclock/fixedtime.html?msg=Puppet+Jira+Cloud+Migration+Completion&amp;amp;iso=20230312T12&amp;amp;p1=202" rel="noopener noreferrer"&gt;12:00 PM Pacific Standard Time Sunday 2023-03-12&lt;/a&gt;. Once the migration is complete, the listed projects will be accessible at &lt;a href="https://puppet.atlassian.net" rel="noopener noreferrer"&gt;https://puppet.atlassian.net&lt;/a&gt;, and archived in the Puppet Jira instance at &lt;a href="https://tickets.puppetlabs.com" rel="noopener noreferrer"&gt;https://tickets.puppetlabs.com&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Please do not make any changes to these projects after the beginning of the migration at &lt;a href="https://www.timeanddate.com/worldclock/fixedtime.html?msg=Puppet+Jira+Cloud+Migration+Begins&amp;amp;iso=20230310T17&amp;amp;p1=202" rel="noopener noreferrer"&gt;5:00 PM Pacific Standard Time Friday 2023-03-10&lt;/a&gt;, as the changes may not be migrated. &lt;/p&gt;

&lt;p&gt;If you already have an Atlassian account registered with the email address you used at &lt;a href="https://tickets.puppetlabs.com" rel="noopener noreferrer"&gt;https://tickets.puppetlabs.com&lt;/a&gt;, that account will be granted access to Puppet’s Jira Cloud instance. If you did not already have an Atlassian account, you will first need to reset your password to use it with Puppet’s Jira Cloud instance. To do that, visit &lt;a href="https://id.atlassian.com/login/resetpassword" rel="noopener noreferrer"&gt;the Atlassian password reset page&lt;/a&gt;, enter your email address, and a password reset link will be emailed to you. If you would prefer not to keep your Atlassian account, you can delete it following &lt;a href="https://support.atlassian.com/atlassian-account/docs/delete-your-atlassian-account/" rel="noopener noreferrer"&gt;Atlassian's instructions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Got more questions? Stop by &lt;a href="https://www.puppet.com/community/calendar" rel="noopener noreferrer"&gt;Office Hours&lt;/a&gt; next Thursday at &lt;a href="https://www.timeanddate.com/worldclock/fixedtime.html?msg=Puppet+Jira+Cloud+Office+Hours&amp;amp;iso=20230309T11&amp;amp;p1=202" rel="noopener noreferrer"&gt;11am Pacific Standard Time&lt;/a&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Project&lt;/th&gt;
&lt;th&gt;Key&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Beaker&lt;/td&gt;
&lt;td&gt;BKR&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Community Package Repository (Archived)&lt;/td&gt;
&lt;td&gt;CPR&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Contributor License Agreement&lt;/td&gt;
&lt;td&gt;CLA&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Documentation&lt;/td&gt;
&lt;td&gt;DOCUMENT&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Editor Services (Archived)&lt;/td&gt;
&lt;td&gt;EDITSVCS&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;del&gt;EZBake&lt;/del&gt;&lt;/td&gt;
&lt;td&gt;&lt;del&gt;EZ&lt;/del&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;del&gt;Facter&lt;/del&gt;&lt;/td&gt;
&lt;td&gt;&lt;del&gt;FACT&lt;/del&gt;&lt;/td&gt;
&lt;td&gt;reverted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hiera&lt;/td&gt;
&lt;td&gt;HI&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HOCON (Archived)&lt;/td&gt;
&lt;td&gt;HC&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Impact Analysis Service (Archived)&lt;/td&gt;
&lt;td&gt;IAS&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Infrastructure Automation Content&lt;/td&gt;
&lt;td&gt;IAC&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Internationalization&lt;/td&gt;
&lt;td&gt;INTL&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Leatherman&lt;/td&gt;
&lt;td&gt;LTH&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCollective&lt;/td&gt;
&lt;td&gt;MCO&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCollective Plugins&lt;/td&gt;
&lt;td&gt;MCOP&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;del&gt;Modules&lt;/del&gt;&lt;/td&gt;
&lt;td&gt;&lt;del&gt;MODULES&lt;/del&gt;&lt;/td&gt;
&lt;td&gt;reverted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Native Puppet&lt;/td&gt;
&lt;td&gt;NPUP&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Network Device Types&lt;/td&gt;
&lt;td&gt;NETDEV&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OS Images&lt;/td&gt;
&lt;td&gt;IMAGES&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;del&gt;Puppet&lt;/del&gt;&lt;/td&gt;
&lt;td&gt;&lt;del&gt;PUP&lt;/del&gt;&lt;/td&gt;
&lt;td&gt;reverted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;del&gt;Puppet Agent&lt;/del&gt;&lt;/td&gt;
&lt;td&gt;&lt;del&gt;PA&lt;/del&gt;&lt;/td&gt;
&lt;td&gt;reverted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Puppet Catalog Preview&lt;/td&gt;
&lt;td&gt;PRE&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Puppet Communications Protocol&lt;/td&gt;
&lt;td&gt;РСР&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Puppet Development Kit&lt;/td&gt;
&lt;td&gt;PDK&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Puppet Enterprise&lt;/td&gt;
&lt;td&gt;ENTERPRISE&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Puppet Forge&lt;/td&gt;
&lt;td&gt;FORGE&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Puppet Integrations Engineering&lt;/td&gt;
&lt;td&gt;PIE&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;del&gt;Puppet Server&lt;/del&gt;&lt;/td&gt;
&lt;td&gt;&lt;del&gt;SERVER&lt;/del&gt;&lt;/td&gt;
&lt;td&gt;reverted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Puppet Strings&lt;/td&gt;
&lt;td&gt;PDOC&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;del&gt;PuppetDB&lt;/del&gt;&lt;/td&gt;
&lt;td&gt;&lt;del&gt;PDB&lt;/del&gt;&lt;/td&gt;
&lt;td&gt;reverted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;R10K&lt;/td&gt;
&lt;td&gt;RK&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Razor&lt;/td&gt;
&lt;td&gt;RAZOR&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trapperkeeper&lt;/td&gt;
&lt;td&gt;TK&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;del&gt;Vanagon&lt;/del&gt;&lt;/td&gt;
&lt;td&gt;&lt;del&gt;VANAGON&lt;/del&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VM Pooler&lt;/td&gt;
&lt;td&gt;POOLER&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>puppet</category>
      <category>maintenance</category>
    </item>
  </channel>
</rss>
