<?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: bassg0navy</title>
    <description>The latest articles on DEV Community by bassg0navy (@bassg0navy).</description>
    <link>https://dev.to/bassg0navy</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%2F1481833%2F5d814652-3ea0-4553-8b60-8eb63a152df7.jpeg</url>
      <title>DEV Community: bassg0navy</title>
      <link>https://dev.to/bassg0navy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bassg0navy"/>
    <language>en</language>
    <item>
      <title>Doggone!</title>
      <dc:creator>bassg0navy</dc:creator>
      <pubDate>Sun, 06 Apr 2025 23:35:53 +0000</pubDate>
      <link>https://dev.to/bassg0navy/doggone-4pd3</link>
      <guid>https://dev.to/bassg0navy/doggone-4pd3</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/pulumi"&gt;Pulumi Deploy and Document Challenge&lt;/a&gt;: Get Creative with Pulumi and GitHub&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built a command line tool to help import manually created infrastructure. It automates the import as well as the associated (and usually annoying) administrative tasks 🥱&lt;/p&gt;

&lt;h3&gt;
  
  
  Project Repo
&lt;/h3&gt;

&lt;p&gt;Check out the repo &lt;a href="https://github.com/bassg0navy/doggone/" rel="noopener noreferrer"&gt;here&lt;/a&gt;!&lt;/p&gt;

&lt;h2&gt;
  
  
  Idea -&amp;gt; Execution
&lt;/h2&gt;

&lt;p&gt;Creating doggone was fairly straightforward after reaching from my own experiences for a "real-world" problem to solve with Pulumi and GitHub. This has been a pain point for many an engineer over the years and I've &lt;em&gt;personally&lt;/em&gt; never seen a tool dedicated to it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Pulumi with GitHub
&lt;/h3&gt;

&lt;p&gt;This project included a lot of firsts for me, and my first experience with Pulumi and its Automation API was overall very positive. I've recently been made aware of its premise — an IaC management tool with &lt;em&gt;real&lt;/em&gt; programming language support. This is one of those scenarios where it leaves other IaC platforms in the dust. Terraform is my first love 💟 but HCL (Hashicorp Language) could never! Lambdas, try-catch blocks, etc. - all inside the same file where I define my infrastructure? Sign me up 🙋🏽‍♂️&lt;/p&gt;

&lt;p&gt;After a brief indoctrination period, I was able to start writing code fairly quickly thanks to the very familiar Python SDK provided by Pulumi. Simply put, the automation and pulumi_oci libraries handle all import operations for the Oracle Cloud Infrastructure resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  Challenges
&lt;/h3&gt;

&lt;p&gt;I used Python's click library (another 🍒 popped) to generate a bare bones command line interface. I then started working on the GitHub integration. This was where I really hit a wall. I realized although generally very useful for creating and modifying long-lived resources, Pulumi’s GitHub provider was a poor choice for lower-level git functions like listing repositories, getting user information, etc. The latency made the command line tool almost unusable, so I made the tradeoff to query the GitHub API directly (using Python's PyGitHub and GitPython libraries) when it made sense. &lt;/p&gt;

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

&lt;p&gt;By no means is this fully fleshed out or ready for production. Proceed with caution, but feel free to fork &amp;amp; iterate for your own purposes. I can see a tool like this being most useful during migrations of large swaths of existing infrastructure.&lt;/p&gt;

&lt;p&gt;Would love feedback, if any!&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>pulumichallenge</category>
      <category>github</category>
      <category>terraform</category>
    </item>
  </channel>
</rss>
