<?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: Matthew Stone</title>
    <description>The latest articles on DEV Community by Matthew Stone (@souldo).</description>
    <link>https://dev.to/souldo</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%2F1307572%2Fa2d07855-6920-4e56-8b6a-a8f1d1e1c3b6.jpg</url>
      <title>DEV Community: Matthew Stone</title>
      <link>https://dev.to/souldo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/souldo"/>
    <language>en</language>
    <item>
      <title>Installing PDK on a Linux Workstation (Manual Edition)</title>
      <dc:creator>Matthew Stone</dc:creator>
      <pubDate>Sat, 11 Apr 2026 19:05:38 +0000</pubDate>
      <link>https://dev.to/souldo/installing-pdk-on-a-linux-workstation-manual-edition-7ao</link>
      <guid>https://dev.to/souldo/installing-pdk-on-a-linux-workstation-manual-edition-7ao</guid>
      <description>&lt;p&gt;Getting PDK installed and updated can be a bit...&lt;em&gt;weird&lt;/em&gt; these days, and after running into a few bumps I thought I'd share my compiled notes that streamlined a few different pages in the Puppet help documentation. Note: this is for manual setup. At some point I'll add the super fun Puppet version of this to make it simple and automated.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;One of the following: a Puppet Core license, a Puppet Enterprise License, a Puppet Core development license.&lt;/li&gt;
&lt;li&gt;a Linux workstation. In this example I'm working with Fedora 33.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Steps
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Gather Your Credentials
&lt;/h3&gt;

&lt;p&gt;First things first, let's get our credentials in order.&lt;/p&gt;

&lt;h4&gt;
  
  
  For Puppet Enterprise users:
&lt;/h4&gt;

&lt;p&gt;The username is &lt;strong&gt;license-id&lt;/strong&gt;. The password can be found via the PE console. Log into the console, click on &lt;strong&gt;License&lt;/strong&gt; in the left side menus and then click &lt;strong&gt;Copy license id&lt;/strong&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  For Puppet Core users:
&lt;/h4&gt;

&lt;p&gt;The username is &lt;strong&gt;forge-key&lt;/strong&gt;. The password can be found and/or created by logging into the Puppet Forge. Click on your account at the upper right corner and select &lt;strong&gt;View Profile&lt;/strong&gt;. On the left side, select &lt;strong&gt;API Keys&lt;/strong&gt;. Generate an API key and copy the key. That is your password. Make a note to save this for future use as once you leave that page you'll have to create a new one if you forget it.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Download and Setup the Repository File
&lt;/h3&gt;

&lt;p&gt;First, let's grab the repository. You can find the relevant RPM or DEB from either &lt;a href="//yum-puppetcore.puppet.com/public"&gt;yum-puppetcore.puppet.com/public&lt;/a&gt; or &lt;a href="//apt-puppetcore.puppet.com/public"&gt;apt-puppetcore.puppet.com/public&lt;/a&gt;. Once you've found the right one, let's download and install!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wget https://yum-puppetcore.puppet.com/public/puppet8-release-el-9.noarch.rpm

&lt;span class="nb"&gt;sudo &lt;/span&gt;rpm &lt;span class="nt"&gt;-ivh&lt;/span&gt; puppet8-release-el-8-noarch.rpm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once you've done the above, you'll be able to edit the repo file at /etc/yum.repos.d/puppet8-release.repo. Let's take a look at the contents:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ini"&gt;&lt;code&gt;&lt;span class="nn"&gt;[puppet8]&lt;/span&gt;
&lt;span class="py"&gt;name&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;Puppet 8 Repository el 8 - $basearch&lt;/span&gt;
&lt;span class="py"&gt;baseurl&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;https://yum-puppetcore.puppet.com/puppet8/el/8/$basearch&lt;/span&gt;
&lt;span class="py"&gt;gpgkey&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;file:///etc/pki/rpm-gpg/RPM-GPG-KEY-puppet8-release&lt;/span&gt;
&lt;span class="py"&gt;enabled&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;1&lt;/span&gt;
&lt;span class="py"&gt;gpgcheck&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;1&lt;/span&gt;

&lt;span class="c"&gt;## Add authentication here by uncommenting and filling in values
&lt;/span&gt;
&lt;span class="c"&gt;#username=&amp;lt;api_user&amp;gt;
#password=&amp;lt;api_key&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's pretty straightforward here. Remove the &lt;code&gt;#&lt;/code&gt; from username and password, then copy your username and password from above into the &lt;code&gt;&amp;lt;api_user&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;api_key&amp;gt;&lt;/code&gt; spaces, respectively. Save and quit editing the file.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Update and Install
&lt;/h3&gt;

&lt;p&gt;At this point we have our repo file, we have our credentials configured and we just need to update the repos and install pdk. a simple &lt;code&gt;yum update&lt;/code&gt; followed by &lt;code&gt;yum install pdk&lt;/code&gt; should get us there.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;root@choplifter:/home/matthew#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;yum update
&lt;span class="go"&gt;Updating and loading repositories:
 Puppet 8 Repository el 8 - x86_64            100% |  14.2 KiB/s |  14.1 KiB |  00m01s
Repositories loaded.
Nothing to do.
&lt;/span&gt;&lt;span class="gp"&gt;root@choplifter:/home/matthew#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;yum &lt;span class="nb"&gt;install &lt;/span&gt;pdk
&lt;span class="go"&gt;Updating and loading repositories:
Repositories loaded.
Package                   Arch     Version                    Repository          Size
Installing:
 pdk                      x86_64   3.6.1.1-1.el9              puppet8        223.8 MiB

Transaction Summary:
 Installing:         1 package

Total size of inbound packages is 57 MiB. Need to download 57 MiB.
After this operation, 224 MiB extra will be used (install 224 MiB, remove 0 B).
Is this ok [y/N]: Y
[1/1] pdk-0:3.6.1.1-1.el9.x86_64              100% |  15.8 MiB/s |  57.0 MiB |  00m04s
--------------------------------------------------------------------------------------
[1/1] Total                                   100% |  15.8 MiB/s |  57.0 MiB |  00m04s
Running transaction
Importing OpenPGP key 0x9E61EF26:
&lt;/span&gt;&lt;span class="gp"&gt; UserID     : "Puppet, Inc. Release Key (Puppet, Inc. Release Key) &amp;lt;release@puppet.com&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;"
&lt;/span&gt;&lt;span class="go"&gt; Fingerprint: D6811ED3ADEEB8441AF5AA8F4528B6CD9E61EF26
 From       : file:///etc/pki/rpm-gpg/RPM-GPG-KEY-puppet8-release
Is this ok [y/N]: Y
The key was successfully imported.
[1/3] Verify package files                    100% |   5.0   B/s |   1.0   B |  00m00s
[2/3] Prepare transaction                     100% |   3.0   B/s |   1.0   B |  00m00s
[3/3] Installing pdk-0:3.6.1.1-1.el9.x86_64   100% |  72.0 MiB/s | 228.5 MiB |  00m03s
Complete!

&lt;/span&gt;&lt;span class="gp"&gt;root@choplifter:/home/matthew#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;pdk &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;span class="go"&gt;3.6.1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's all there is to it! As an added bonus, this is the same repo for Bolt and all the Puppet Core bits, so if you need the agent on your box it's as easy as another &lt;code&gt;yum install&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Or dnf. Whatever.&lt;/p&gt;

</description>
      <category>puppet</category>
      <category>pdk</category>
      <category>linux</category>
    </item>
  </channel>
</rss>
