<?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: Zachary Wilson</title>
    <description>The latest articles on DEV Community by Zachary Wilson (@zjgrey).</description>
    <link>https://dev.to/zjgrey</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%2F837748%2F998c387e-a76b-411f-bd64-cfcecabcb547.jpeg</url>
      <title>DEV Community: Zachary Wilson</title>
      <link>https://dev.to/zjgrey</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zjgrey"/>
    <language>en</language>
    <item>
      <title>An Old Noob #8 - Building an Ansible Test Environment in AWS</title>
      <dc:creator>Zachary Wilson</dc:creator>
      <pubDate>Fri, 01 Jul 2022 00:40:17 +0000</pubDate>
      <link>https://dev.to/zjgrey/an-old-noob-8-building-an-ansible-test-environment-in-aws-5djm</link>
      <guid>https://dev.to/zjgrey/an-old-noob-8-building-an-ansible-test-environment-in-aws-5djm</guid>
      <description>&lt;p&gt;It was recommended by a colleague that i might enjoy delving a bit into &lt;a href="https://www.ansible.com/" rel="noopener noreferrer"&gt;Ansible&lt;/a&gt; and suggested i check out  the &lt;a href="https://www.udemy.com/course/complete-ansible-devops-automation-training/" rel="noopener noreferrer"&gt;Complete DevOps Ansible Automation Training&lt;/a&gt; instructed by &lt;a href="https://www.linkedin.com/in/imran-afzal-4092473/" rel="noopener noreferrer"&gt;Imran Afzal&lt;/a&gt;.  I can already see why this course was recommended, the instructor is very knowledgeable and easy to follow.  &lt;/p&gt;

&lt;p&gt;In the course, however, he explains how to create a test environment using virtualization software from your local machine, which is easily going to hit the needs of the wider audience.  In the interest of the... thinner audience (?), i decided i'd build mine in AWS.  &lt;/p&gt;

&lt;p&gt;Everything here is using the AWS Management Console and commonly-known IT tools which are easily downloaded and installed.&lt;/p&gt;

&lt;p&gt;First thing after logging into the AWS Management Console is to create an EC2 Security Group, which is really just an odd name for server-level firewall (my 2¢).  "But we haven't created our EC2 instances yet," you ask?  This is true, and you'll see why this is first on my list (i hope) as i continue.  &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%2Fqe8754r9vylzfqf7w5ge.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%2Fqe8754r9vylzfqf7w5ge.png" alt="AWS EC2 Security Group" width="800" height="592"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I gave my Security Group a descriptive name and then configured the only inbound rule needed, SSH over port 22 from any IPv4 address.  If you're doing this from home, i recommend using My IP instead as this adds a significant layer of security to your environment without too much hassle.  I'm accessing this instance from different networks, so i went this route.  &lt;/p&gt;

&lt;p&gt;Once the Security Group is created, it's back to the EC2 dashboard to configure the first instance for launch.&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%2F08u5q43ip6nc5zz268lz.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%2F08u5q43ip6nc5zz268lz.png" alt="AWS Launch Instance" width="549" height="241"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Exciting, no?  &lt;/p&gt;

&lt;p&gt;It's time to choose a descriptive name and an OS for my Ansible control node.  Instructor Afzal installs CentOS on Oracle VirtualBox VMs in his course, so i chose to install CentOS as well.  This wasn't visible in the AWS Quick Start list so i clicked 'Browse more AMIs' (Amazon Machine Image).&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%2Ffgifg0ghqhw8upn0u57u.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%2Ffgifg0ghqhw8upn0u57u.png" alt="AWS EC2 Console" width="800" height="750"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A quick search for 'CentOS 7' and we have results.&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%2Fho5l60qr421akmr30rnx.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%2Fho5l60qr421akmr30rnx.png" alt="CentOS 7 AMI Search" width="800" height="273"&gt;&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%2Fxn1aeuiuya08o25bpjss.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%2Fxn1aeuiuya08o25bpjss.png" alt="CentOS 7 AMI Search Result" width="800" height="381"&gt;&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%2F6vt7f9fl0gpf3siwq194.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%2F6vt7f9fl0gpf3siwq194.png" alt="CentOS 7 AMI Confirm" width="800" height="658"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After the steps to select the OS it's time to choose the Instance type, basically how much hardware-level performance do you want to pay for?  I chose t2.small per the instructor's recommendations for the VirtualBox VMs (1 vCPU, 2GB memory).  The math comes out to $8.64 USD per month if this instance runs 24/7 in a 30-day month (if you're curious).  &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%2F9w0nq39eu7jup8urdd6r.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%2F9w0nq39eu7jup8urdd6r.png" alt="AWS Instance Types" width="602" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When asked for a key pair i chose to create new.&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%2F40dwm7azcjcczzqhl7s7.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%2F40dwm7azcjcczzqhl7s7.png" alt="AWS Instance Key Pair Creation" width="800" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is an asymmetric encryption method that i'll use to log into my instance once it's ready.  The public key is stored on the instance, the private key i keep, well... private.  &lt;/p&gt;

&lt;p&gt;I gave my key pair a not-so-descriptive name this time around, left RSA selected as the encryption protocol and then chose .ppk as the key file format.  This is because i'm connecting from a Windows client and will be using &lt;a href="https://www.putty.org/" rel="noopener noreferrer"&gt;PuTTY&lt;/a&gt; for this purpose.  &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%2F1xark1l6h2z3s28b4zu1.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%2F1xark1l6h2z3s28b4zu1.png" alt="AWS EC2 Key Pair Settings" width="623" height="658"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⚠️ &lt;em&gt;You should be prompted to download your .ppk file!  Be sure to do so as this is your only chance.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Onto the Network settings, this is where having already built your Security Group comes in handy - just Select existing security group, choose the group you created and we're done with this section.  Otherwise you're building out traffic rules in a poorly-suggested Security Group name (again, my 2¢) in the midst of doing all these other steps.&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%2Fnh22ul2hymr2zomdfs8l.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%2Fnh22ul2hymr2zomdfs8l.png" alt="AWS Instance Network Settings" width="800" height="747"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My next step is to configure storage for the root drive of my instance.  I also want to configure some Advanced details.&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%2Fwjsadnwatj99efsmyt9v.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%2Fwjsadnwatj99efsmyt9v.png" alt="AWS EC2 Console" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There's a bit to do in Advanced details, i couldn't grab it all in a concise screenshot and didn't want to edit anything together to avoid possible confusion. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;change Hostname type to Resource name&lt;/li&gt;
&lt;li&gt;change Shutdown behavior to Stop&lt;/li&gt;
&lt;li&gt;change Termination protection to Enable&lt;/li&gt;
&lt;li&gt;and change Tenancy to Shared
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The console offers explanations of each setting, so i won't go into those here.  Next it's just confirmation your instance is configured correctly and launch.&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%2F70qn6cif9m2swv932br8.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%2F70qn6cif9m2swv932br8.png" alt="AWS EC2 Launch Instance" width="424" height="556"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For my client machine, i built a replica of the control node above only changing the hostname to something identifiable, like Client1.  Easy enough, now i've got 2 almost identical CentOS 7 AWS instances.&lt;/p&gt;

&lt;p&gt;Now to connect to my control node, I allocate an Elastic IP to my VPC from Amazon's pool of IPv4 addresses and associate it with my control node instance.&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%2Fx0so7mv7c86hn0yyvgqr.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%2Fx0so7mv7c86hn0yyvgqr.png" alt="AWS Elastic IP" width="800" height="817"&gt;&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%2Fitze1pamlkicnm9xb11z.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%2Fitze1pamlkicnm9xb11z.png" alt="AWS Associate Elastic IP" width="800" height="685"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At this point i was prompted that i might want to associate an Internet gateway with my VPC to connect my private IPs in the VPC to the internet, and this is correct.  So i created an Internet gateway and confirmed connectivity to my control node from my local machine.&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%2F8t0xzi5er7y0j643h3vt.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%2F8t0xzi5er7y0j643h3vt.png" alt="Powershell Test-NetConnection" width="553" height="222"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now i'm ready to remote into my instance (whew!).  As i mentioned, i'll be using PuTTY for this.  If you've used PuTTY before (or even if not), this is pretty straightforward for the most part: enter the Elastic IP address, confirm port 22 and SSH connection type.  Then scroll down to the Connection category and select Auth.&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%2Ft8203nmwqrchgknsyhfg.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%2Ft8203nmwqrchgknsyhfg.png" alt="PuTTY Main Screen" width="602" height="543"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here i browsed for my .ppk file that i saved when i created my key pair for my instances.  &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%2Fxxj2zmcjzvy31a5zw98w.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%2Fxxj2zmcjzvy31a5zw98w.png" alt="PuTTY Auth Screen" width="602" height="543"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;Tip:&lt;/strong&gt; Saving this PuTTY configuration will make things easier later on.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With this i was able to log into my control node for the first time using default OS credentials and authenticating to the public key on the instance.&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%2F01c5bjvrrhetkoec0mzd.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%2F01c5bjvrrhetkoec0mzd.png" alt="SSH Session Login" width="800" height="505"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next i installed Ansible and confirmed python is installed on my instance (as it should be) using the following commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yum &lt;span class="nb"&gt;install &lt;/span&gt;epel-release
yum &lt;span class="nb"&gt;install &lt;/span&gt;ansible ansible-doc
python &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If python's not installed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yum &lt;span class="nb"&gt;install &lt;/span&gt;python &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I can confirm the Ansible install a couple ways; here i chose to utilize Ansible's ping module on the localhost.  Of course if you prefer you could always run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rpm &lt;span class="nt"&gt;-qa&lt;/span&gt; | &lt;span class="nb"&gt;grep &lt;/span&gt;ansible
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fjlfd0hhp0tu2u3m0seyu.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%2Fjlfd0hhp0tu2u3m0seyu.png" alt="Ansible Successful Ping" width="800" height="505"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Everything is good so far with the control node, so now i confirm that port 22 is open on the client instance using a nifty trick i didn't know existed until this project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-vv&lt;/span&gt; telnet://DestinationServer:22
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fq6br9ffs7fknk00ap31o.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%2Fq6br9ffs7fknk00ap31o.png" alt="Linux Telnet Example" width="800" height="505"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fabulous!  We're closer to connecting to the Ansible client instance.  To remote into the client, i need to use the private key from the instance key pair. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But i downloaded that in .ppk format for PuTTY, not .pem for OpenSSH! And i can't redownload it!!&lt;/strong&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%2Fgix1rs9bw1w1hh5eoj1i.gif" 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%2Fgix1rs9bw1w1hh5eoj1i.gif" alt="Friends Chandler No No No" width="480" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;PuTTYgen to the rescue! The PuTTYgen module is part of the default install of the PuTTY utility and can convert your .ppk to a .pem in no time.  I followed the instructions &lt;a href="https://www.simplified.guide/putty/convert-ppk-to-ssh-key" rel="noopener noreferrer"&gt;here&lt;/a&gt;.  &lt;/p&gt;

&lt;p&gt;Now that i have my private key in OpenSSH format, i just need to drop it on my control node instance.  Since i'm using a Windows client, i'll use &lt;a href="https://winscp.net/eng/download.php" rel="noopener noreferrer"&gt;WinSCP&lt;/a&gt; for this.  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;Tip:&lt;/strong&gt; If you saved your PuTTY connection configuration earlier, WinSCP will detect and offer to migrate your configuration and private key file.  How easy is that?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://www.alibabacloud.com/blog/how-to-transfer-files-to-or-from-linux-servers-with-winscp_594040" rel="noopener noreferrer"&gt;Instructions for transferring files to a Linux host with WinSCP&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The private key is on the control instance in the correct format, nothin' left to do but SSH:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="nb"&gt;dir&lt;/span&gt;/keyName user@hostAddress
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fn4dq97cl630qmmemxx0a.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%2Fn4dq97cl630qmmemxx0a.png" alt="Remote SSH Successful Login" width="800" height="505"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here you can see the instance number changed indicating i'm now working in a remote shell from the control node to the client instance.&lt;/p&gt;

&lt;p&gt;Configuring Ansible on the control node to communicate with the client instance requires 2 final steps.  &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add the hostname/IP of the client host to the Ansible hosts file found in etc/ansible/hosts&lt;/li&gt;
&lt;li&gt;Add the private key to ~/.ssh
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh-agent bash
ssh-add ~/.ssh/keyName
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now for the confirmation...&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%2Fh9djypggtrv12bba02ca.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%2Fh9djypggtrv12bba02ca.png" alt="Successful Ansible Remote Ping" width="635" height="199"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ansible is now communicating with the client instance!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>aws</category>
      <category>devops</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>The Kramer Method</title>
      <dc:creator>Zachary Wilson</dc:creator>
      <pubDate>Thu, 16 Jun 2022 23:59:17 +0000</pubDate>
      <link>https://dev.to/zjgrey/the-kramer-method-2kp2</link>
      <guid>https://dev.to/zjgrey/the-kramer-method-2kp2</guid>
      <description>&lt;p&gt;I've been seeing a lot about the &lt;a href="https://sidetrak.com/blogs/news/using-the-seinfeld-method" rel="noopener noreferrer"&gt;Seinfeld&lt;/a&gt; &lt;a href="https://jamesclear.com/stop-procrastinating-seinfeld-strategy" rel="noopener noreferrer"&gt;Method&lt;/a&gt; &lt;a href="https://medium.com/optimal-life/dont-break-the-chain-the-seinfeld-strategy-9e959de7995c" rel="noopener noreferrer"&gt;recently&lt;/a&gt;.  I'm not sure why i'm seeing this more as this strategy is not entirely new, and it sounds like a fine way to gauge one's goal progress over time.  The tl;dr is you get a large calendar, preferably one that displays all the days of year, and hang it in a predominant location in your abode.  Something like this:&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%2Fwy1h1moqz5aw90ib4ilp.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%2Fwy1h1moqz5aw90ib4ilp.jpg" alt="Full-year calendar" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then you focus on a goal and what it means to you to progress toward that goal, be it studying, coding, or in Seinfeld's case, writing.  Keep the daily goal effective but reasonable to accomplish every day - think 10 pushups, 30-60 minutes of study, whatever fits your idea of progress for your goal.  Then, when you've completed that for the day, place a big fat red X over the date.  Do that again tomorrow.  Make it a habit and "don't break the chain" of X's on your calendar.  &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%2Fv5c4w62n8zt2bfa2qjxc.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%2Fv5c4w62n8zt2bfa2qjxc.jpg" alt="Calendar with red Xs" width="262" height="193"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It sounds like a solid plan for someone to make progress on any goal really.  I have one issue with this method however...&lt;/p&gt;

&lt;p&gt;I don't have one goal running at a time.  Quite the contrary, the older i get, the more goals i stack.  Today while pondering this i started listing everything i currently have running right now as "goals" in my life, including personal and professional.  I'm talking things that i actively, daily (or at least &lt;em&gt;most&lt;/em&gt; days) pursue with an end goal in mind and that i spend at least 20 minutes a day practicing.  I'm hovering right around 9-12 depending on the day.&lt;/p&gt;

&lt;p&gt;Some examples include exercise, meditation, studying for certifications (currently AWS CCP), learning new technologies (working through the Udemy Ansible course now), reading (3 books at the moment with 78 on my &lt;a href="https://www.goodreads.com/review/list/4641657-greyfang?shelf=to-read" rel="noopener noreferrer"&gt;to-read list&lt;/a&gt;)... &lt;/p&gt;

&lt;p&gt;I suddenly wondered if there might be something very wrong with me.  &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%2Fj86w53mbckwgi1voary1.gif" 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%2Fj86w53mbckwgi1voary1.gif" alt="Kramer Seinfeld" width="498" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then i started thinking more about that guy across the hall.  Granted, Cosmo Kramer is a fictional character, yet he began to resonate with me in this context.  It seemed in every show he was doing something completely different, from playing rounds with golf pros to installing a garbage disposal in his shower to swimming the East River.  &lt;em&gt;This&lt;/em&gt; is someone who literally bounces off walls.  On the surface he looks aloof at best and hopelessly scattered at worst.  I can relate.  &lt;/p&gt;

&lt;p&gt;But Kramer embraces his quirks.  He chases his dreams regardless of what his friends think.  If he had a calendar for all his goals, they'd cover the walls of his apartment and probably be covered in a plethora of rainbow hues.  &lt;/p&gt;

&lt;p&gt;And he's usually a pretty happy guy.  Wound a little tight perhaps... but more at peace with himself than the other regulars on the show.  &lt;/p&gt;

&lt;p&gt;So yeah, i bounce between personal projects daily.  I've got probably a hundred hours of project work on my backlog.  I've got progress log spreadsheets, daily reminders, Outlook tasks, and Todoist just full of things i'm actively working.  I've got a 29-week streak of at least 3 labs/week on Immersive Labs.  I'm working my way through &lt;em&gt;The Phoenix Project&lt;/em&gt;.  I'm about to build my first Ansible playbooks.  I'm weeks away from taking my CCP exam.  &lt;/p&gt;

&lt;p&gt;I'm just not a single calendar kind of guy.  Sometimes i wonder what that's like.  But that's the beauty of DevSecOps after all: there's never a shortage of new things to learn, and while i'm committed to finishing that which i start, i simply can't &lt;em&gt;not&lt;/em&gt; want to learn so much more.  &lt;/p&gt;

&lt;p&gt;So new things arise, as they should.  New things go on my backlog, as they should.  I keep plugging away at everything i've chosen to put on my plate, as i should.  And i'll look to the master of multitasking for my project management mentoring needs  =]&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%2Fo8z8b46f4alj4j3dza4g.gif" 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%2Fo8z8b46f4alj4j3dza4g.gif" alt="Kramer Seinfeld Shrug" width="480" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>devjournal</category>
      <category>mentalhealth</category>
      <category>challenge</category>
    </item>
    <item>
      <title>An Old Noob #7 - Badges</title>
      <dc:creator>Zachary Wilson</dc:creator>
      <pubDate>Thu, 26 May 2022 00:15:13 +0000</pubDate>
      <link>https://dev.to/zjgrey/an-old-noob-7-badges-4k42</link>
      <guid>https://dev.to/zjgrey/an-old-noob-7-badges-4k42</guid>
      <description>&lt;p&gt;I tend to get pretty busy lately.  &lt;/p&gt;

&lt;p&gt;Even after just writing that first sentence, that one right above this one, i was asked to move some drapes and hang a mirror.   &lt;/p&gt;

&lt;p&gt;But that's not what i want to talk about.  During my recent diversions, i forgot to publish last week.  That means i missed out on the Dev.to 8 Week Streak badge.  Don't get me wrong, i wish i had published for more reasons than the streak badge.  But badges are fun.&lt;/p&gt;

&lt;p&gt;Except when they're not. &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%2Fjtggswh2dhf0i9jnh9iy.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%2Fjtggswh2dhf0i9jnh9iy.jpg" alt="How difficult can badges be?" width="570" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;br&gt;
For those of you unfamiliar, allow me to introduce you to &lt;a href="https://www.immersivelabs.com/" rel="noopener noreferrer"&gt;Immersive Labs&lt;/a&gt;, an IT Security training platform which fortunately is offered through my employer.  It's a great platform for exposure to all kinds of subjects within the cybersecurity realm, from Windows exploitation to NIST standards to malware reverse engineering.  The landing page doesn't do the amount of content justice.&lt;/p&gt;

&lt;p&gt;Since i enjoy a challenge, one could accurately assume that when we were granted access to the over 1500 labs available i jumped in feet first.  Fast forward about 6 months and i've been able to complete a lot of labs.  Some of those labs offer badges of completion.  I've got to say, my IL dashboard looked pretty cool.  I thought it would be cool if i could share these achievements somehow.&lt;/p&gt;

&lt;p&gt;Immersive Labs knows badges are fun too, and they recently announced the ability to now share badge completion on social media (can't find an announcement for it or i'd link it).  Now the last thing i want to do is go out and share each badge individually on social media, not to mention i doubt anyone wants their feed inundated with such noise.  That got me thinking back to my &lt;a href="https://zjgrey.net/resume.html" rel="noopener noreferrer"&gt;cloud resume&lt;/a&gt;: wouldn't it be a decent addition to add a page of all the Immersive Labs badges i've earned and link that from my resume? &lt;/p&gt;

&lt;p&gt;&lt;a href="https://zjgrey.net/il-badges.html" rel="noopener noreferrer"&gt;And that's just what i did.&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%2F43qkaa5p0zsecho7lyg4.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%2F43qkaa5p0zsecho7lyg4.jpg" alt="A screenshot of Immersive Labs badges" width="798" height="906"&gt;&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;Rather than just a page full of images, each image is a link to the badge completion date and details about the lab collection.  I also included a full transcript of the individual labs i've completed in a link in the footer on the off-chance someone might want to see the 26-page pdf file (knowing full well that's &lt;em&gt;highly&lt;/em&gt; unlikely, but i'm up to 371 labs!).&lt;/p&gt;

&lt;p&gt;Yeah, i know all this may be overkill.  But i've spent a lot of time working on these labs and don't think i'm asking too much to display my achievements in a relatively obscure yet easily accessible location.  &lt;/p&gt;

&lt;p&gt;Now that i've gotten my moment of selfish pride out of the way, if you do get a chance to look at Immersive Labs, there are some really solid challenges there.  &lt;/p&gt;

&lt;p&gt;And if you've got an achievement you want to share with the world, share it!  Then bask in the knowledge that your success is forever hosted on the internet, whether anyone sees it or not  =]&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>webdev</category>
      <category>security</category>
      <category>challenge</category>
    </item>
    <item>
      <title>Why... here?</title>
      <dc:creator>Zachary Wilson</dc:creator>
      <pubDate>Sat, 14 May 2022 00:01:17 +0000</pubDate>
      <link>https://dev.to/zjgrey/why-here-4j05</link>
      <guid>https://dev.to/zjgrey/why-here-4j05</guid>
      <description>&lt;p&gt;Almost didn't make it this week.  Covid finally blew threw the house last weekend, leaving no one unaffected in its wake.  Surprised it took this long, to be honest.  We're all doing better now though.&lt;/p&gt;

&lt;p&gt;Being that my week has been spent studying, fighting illness and a 3-day training stint at the office, i'll share something i found interesting in the &lt;a href="https://tldrsec.com/" rel="noopener noreferrer"&gt;tl;dr&lt;/a&gt; newsletter from &lt;a href="https://twitter.com/clintgibler" rel="noopener noreferrer"&gt;Clint Gibler&lt;/a&gt;.  If you're not familiar, i highly recommend his content, as do others.&lt;/p&gt;

&lt;p&gt; &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%2Fol26iopmlvya82kbzr8k.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%2Fol26iopmlvya82kbzr8k.png" alt="People like tl;dr" width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's easy to find something to pique one's curiosity in Clint's newsletter, but this particular item immediately reminded me a) i hadn't published anything this week and b) i guess there are valid reasons why i should continue.  I have been wondering, as my &lt;a href="https://zjgrey.net/resume.html" rel="noopener noreferrer"&gt;cloud resume project&lt;/a&gt; is &lt;em&gt;basically&lt;/em&gt; done from a progress-recording perspective, whether i would continue to post here in the DEV Community.  Again, my reason for being here in the first place was only because it was a specific bullet point of &lt;a href="https://cloudresumechallenge.dev/" rel="noopener noreferrer"&gt;that challenge&lt;/a&gt;.  &lt;/p&gt;

&lt;p&gt;Then i read &lt;a href="https://twitter.com/JackRhysider" rel="noopener noreferrer"&gt;Jack Rhysider&lt;/a&gt;'s tweet detailing &lt;a href="https://twitter.com/JackRhysider/status/1524416387434762241" rel="noopener noreferrer"&gt;17 reasons why you should be blogging&lt;/a&gt; (yes, you).  &lt;/p&gt;

&lt;p&gt;While i didn't feel every reason he listed resonated with me personally, overall he makes very good points.  Something about being here, publishing my often haphazard thoughts for the world to see, makes me a little uneasy... a little uncomfortable.&lt;/p&gt;

&lt;p&gt;And that's exactly why i know i should continue.  I don't ever expect to use this forum as my personal technical notebook, and i'm not trying to prove to anyone that i know anything.  But this is a different vibe, a different skill set altogether, and (i admit) i do enjoy it.  &lt;/p&gt;

&lt;p&gt;So, my blogging friends, keep writing!  &lt;/p&gt;

&lt;p&gt;And, as always, thanks for reading  =]&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>writing</category>
      <category>growth</category>
      <category>webdev</category>
    </item>
    <item>
      <title>An Old Noob #6 - Back to School</title>
      <dc:creator>Zachary Wilson</dc:creator>
      <pubDate>Sun, 01 May 2022 16:06:38 +0000</pubDate>
      <link>https://dev.to/zjgrey/an-old-noob-6-back-to-school-4ola</link>
      <guid>https://dev.to/zjgrey/an-old-noob-6-back-to-school-4ola</guid>
      <description>&lt;p&gt;This will be quick, promise.&lt;/p&gt;

&lt;p&gt;First and always, thanks for reading. Since last i posted, i've handled a few to-dos for my site - got the Cloudfront invalidation Lambda in place, which was a big one. &lt;/p&gt;

&lt;p&gt; &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%2Fka59o7ilwq3iaob1hbi9.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%2Fka59o7ilwq3iaob1hbi9.png" alt="Caddyshack Meme" width="490" height="359"&gt;&lt;/a&gt;&lt;br&gt;
 &lt;/p&gt;

&lt;p&gt;However, my focus this week has been studying for my first AWS certification, &lt;a href="https://aws.amazon.com/certification/certified-cloud-practitioner/" rel="noopener noreferrer"&gt;AWS Certified Cloud Practitioner&lt;/a&gt;.  After a bit of research, there were a few items repeatedly mentioned by various sources as key to survival on this.  The first highly recommended resource is the &lt;a href="https://www.udemy.com/course/aws-certified-cloud-practitioner-practice-test/" rel="noopener noreferrer"&gt;Udemy full practice exam suite&lt;/a&gt;. These are reputed to be some of the most difficult practice exams available and knowing the material on these should surpass the knowledge required to pass the exam.   &lt;/p&gt;

&lt;p&gt;The second resource often resounded is &lt;a href="https://digitalcloud.training/courses/aws-ccp-practice-exams/" rel="noopener noreferrer"&gt;Digital Cloud's AWS CCP Practice Exam program&lt;/a&gt;.  These practice exams are delivered in a format similar to that used in the AWS exam, so not only tests your AWS knowledge but prepares you for the amount of questions, time allowed and the digital delivery of the exam itself.  &lt;/p&gt;

&lt;p&gt;Fortunately when it comes to this exam, there are many guides and tools out there. Ultimately, it's figure out where my knowledge gaps are and bridge 'em.  &lt;/p&gt;

&lt;p&gt;Simple, right?&lt;/p&gt;

</description>
      <category>certification</category>
      <category>aws</category>
      <category>devops</category>
      <category>beginners</category>
    </item>
    <item>
      <title>An Old Noob #5 - Cloud Resume Challenge, on Balance</title>
      <dc:creator>Zachary Wilson</dc:creator>
      <pubDate>Sun, 24 Apr 2022 18:09:08 +0000</pubDate>
      <link>https://dev.to/zjgrey/an-old-noob-5-cloud-resume-challenge-on-balance-4a6h</link>
      <guid>https://dev.to/zjgrey/an-old-noob-5-cloud-resume-challenge-on-balance-4a6h</guid>
      <description>&lt;p&gt;Hello again and thanks for taking a moment to read what i'm typing.  So far my posts have been specific to my experiences with the &lt;a href="https://cloudresumechallenge.dev/docs/the-challenge/" rel="noopener noreferrer"&gt;Cloud Resume Challenge&lt;/a&gt;, and while this is no exception it's also not a requirement - i think this pertains to any project, challenge, or goal we set out to achieve. &lt;/p&gt;

&lt;p&gt;So what did i accomplish this week on my project?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=6AiGNL0LYN0" rel="noopener noreferrer"&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%2Fwmjziphrqjdqhdwnktxi.jpg" alt="Absolutely nothing" width="480" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(you know, i really wish markdown allowed a target="_blank" option so i'm not sending people away from my post in an effort to add content &lt;em&gt;to&lt;/em&gt; my post, but when the reference is just so appropriate...)&lt;/p&gt;

&lt;p&gt;what was i saying?&lt;/p&gt;

&lt;p&gt;Oh, that's right!  I did absolutely nothing with my cloud resume this week (other than add things to my to-do list).  And it was a break i definitely needed.  I'm that kind of guy who needs to stay busy, and when i get focused on something i can get a little... obsessive?  Add to that the more public nature of this challenge in the publishing about my progress and it's safe to say i was motivated to complete the objectives.  At times i may have even felt a little frantic.&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%2Feylluyz46vzayq93b5ha.gif" 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%2Feylluyz46vzayq93b5ha.gif" alt="Daffy Duck" width="358" height="227"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Perhaps.&lt;/p&gt;

&lt;p&gt;I do tend to get very focused when problem-solving.  Like blind-to-the-world-around-me focused.  I tend to lose track of time.  And the ability to hear people standing right next to me attempting to make conversation.  For instance, "Hey, you haven't moved in 2 days!"  &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Fortunately i have a very understanding, supporting family.
&lt;/h3&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Even when i go a little off the rails.  &lt;/p&gt;

&lt;p&gt;Even when i ramble incessantly about technical minutiae like the very existence of the known galaxy hinges upon my success...&lt;/p&gt;

&lt;p&gt;My family:&lt;/p&gt;

&lt;blockquote&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%2F2albu2xy02tglf4k65we.gif" 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%2F2albu2xy02tglf4k65we.gif" alt="You Need To Relax" width="498" height="331"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt; &lt;br&gt;
Did i go a little off the rails?  That's not important right now.  What &lt;em&gt;is&lt;/em&gt; important is to allow yourself to savor the little victories as they come, and to give yourself some real time to enjoy the bigger victories when you get them.  &lt;/p&gt;

&lt;p&gt;That said, i haven't been entirely unproductive this week.  I can't even say i haven't done any work on the challenge, as i've been studying for my ACP (which is, after all, step one of the challenge). &lt;/p&gt;

&lt;p&gt;I'll continue to work on my to-do list, and i found another list of cloud challenges that i haven't looked into in much detail yet but at first glance look intriguing.  Now that i've taken a bit of time off, i'm feeling ready to get back at it.  Never underestimate the magic of giving yourself a break.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>An Old Noob #4 - Cloud Resume Challenge, Security Edition</title>
      <dc:creator>Zachary Wilson</dc:creator>
      <pubDate>Mon, 18 Apr 2022 13:23:55 +0000</pubDate>
      <link>https://dev.to/zjgrey/an-old-noob-4-cloud-resume-challenge-security-edition-h68</link>
      <guid>https://dev.to/zjgrey/an-old-noob-4-cloud-resume-challenge-security-edition-h68</guid>
      <description>&lt;p&gt;Thanks again for taking a few minutes to read about my journey through the &lt;a href="https://cloudresumechallenge.dev/docs/the-challenge/" rel="noopener noreferrer"&gt;Cloud Resume Challenge&lt;/a&gt;. I'm quite pleased with the current status of my project, but as i researched the individual deliverables i noticed a trend: if security was mentioned, it was in passing with little accompanying detail.  &lt;/p&gt;

&lt;p&gt;As i mentioned in &lt;a href="https://dev.to/zwilson/an-old-noob-3-3egh"&gt;my last post&lt;/a&gt;, security is kinda my thing. And i'm not saying there's a shortage of subject matter regarding cloud security concepts, but as a challenge designed to inspire us to get our feet wet with cloud services i had hoped to see more about security practices aimed at the beginner level, learning the how and why of security of the individual components that make up the whole. Fortunately Matthew Sechrist offers this &lt;a href="https://blog.matthewsechrist.cloud/10-ways-to-complete-the-cloud-resume-challenge-as-secure-as-possible" rel="noopener noreferrer"&gt;comprehensive write-up&lt;/a&gt; describing methods for securing the specific resources required to complete the Cloud Resume Challenge. Some of these may seem overkill for a simple resume site, but i appreciate his approach and admire his dedication to security. I'm also very grateful for his suggestions as they were integral in my ability to achieve the following scores for my resume site:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://observatory.mozilla.org/analyze/zjgrey.net" rel="noopener noreferrer"&gt;My score on Mozilla Observatory&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://securityheaders.com/?q=zjgrey.net&amp;amp;followRedirects=on" rel="noopener noreferrer"&gt;My score on Security Headers&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Which brings me to an announcement, one which i'm sure will delight my friends and family...&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%2Fe5n111e77dl1j9n2vq71.gif" 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%2Fe5n111e77dl1j9n2vq71.gif" alt="cartoon applause" width="300" height="169"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I proudly introduce the completion of phase one of my Cloud Resume Challenge project, &lt;a href="https://zjgrey.net/resume.html" rel="noopener noreferrer"&gt;my cloud resume&lt;/a&gt;.  &lt;/p&gt;

&lt;p&gt;It has really been a fun and challenging journey so far, and i look forward to delving further into Terraform to automate the back end and attaining my ACP (to start). I've also got some future ideas for the site, experimenting with Simple Email Service, updating the existing visit counter to monitor unique visits instead of page loads, adding Cloudfront invalidations to my existing front end CD process... you know, spit &amp;amp; polish.  &lt;/p&gt;

&lt;p&gt;My word of advice for those who choose to tackle this challenge, especially with AWS, is to look for the most updated research material available.  More than once i found aged answers to obstacles which only led me in a direction no longer necessary/applicable. AWS continues to update their services, some of which directly affect how one can complete this challenge - &lt;a href="https://aws.amazon.com/blogs/aws/announcing-aws-lambda-function-urls-built-in-https-endpoints-for-single-function-microservices/" rel="noopener noreferrer"&gt;Lambda Function URLs&lt;/a&gt;, for example. &lt;/p&gt;

&lt;p&gt;I'm really glad i undertook this challenge and recommend it to anyone looking to learn more about cloud services and web development.  I look forward to completing my remaining steps for this challenge, implementing further improvements and moving forward to the next cloud challenge.  &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>webdev</category>
      <category>aws</category>
      <category>cloud</category>
    </item>
    <item>
      <title>An Old Noob #3 - Cloud Resume Challenge, that ol' 403</title>
      <dc:creator>Zachary Wilson</dc:creator>
      <pubDate>Sun, 10 Apr 2022 21:55:05 +0000</pubDate>
      <link>https://dev.to/zjgrey/an-old-noob-3-3egh</link>
      <guid>https://dev.to/zjgrey/an-old-noob-3-3egh</guid>
      <description>&lt;p&gt;It's been a week.&lt;/p&gt;

&lt;p&gt;My intention was to post weekly on the progress i've made completing the &lt;a href="https://cloudresumechallenge.dev/docs/the-challenge/" rel="noopener noreferrer"&gt;Cloud Resume Challenge&lt;/a&gt;.  This week is unfortunately more about obstacles than progress.&lt;/p&gt;

&lt;p&gt;In retrospect, it hasn't been an entirely unproductive time.  I completed the javascript for my visitor counter which successfully increments my DynamoDB table, and was (previously) thinking i was prepared to say, "here world!  it's a good start!".  As i'm progressing though, i realize that there are plenty of guides out there for the steps to complete the challenge, but not necessarily as securely as i'd prefer.  I'm also discovering that the documentation is ...hit or miss.  And it's not for a lack of looking.&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%2Fgfiweco3n1ctrtjmcdse.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%2Fgfiweco3n1ctrtjmcdse.jpg" alt="Search results" width="800" height="1186"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While i had also originally said my intention was to stick to the specific challenge objectives, security is kinda my thing.  I don't want people to be able to access my content directly from an S3 URL, i want them to go through CloudFront.  I created an origin access identity on my bucket, an API gateway to forward the requests, and eventually built a Lamda@Edge after having read that was required to deliver the correct host value to the API...&lt;/p&gt;

&lt;p&gt;Sadly, with public access disabled on my bucket, i continue to get the Missing Authentication Token error.  Even sadder, the number of things i've found and attempted to resolve this (20 at least? no exaggeration) have all been unsuccessful.&lt;/p&gt;

&lt;p&gt;So this week finds an old noob a little discouraged.  &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%2F50vh4r3axlmodr4s2qyf.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%2F50vh4r3axlmodr4s2qyf.png" alt="1 Hour Later" width="320" height="210"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;...and i'm still parsing settings and search results, trying to find that piece i'm missing.  &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>webdev</category>
      <category>cloud</category>
      <category>aws</category>
    </item>
    <item>
      <title>An Old Noob #2 - Cloud Resume Challenge, Responsive Design</title>
      <dc:creator>Zachary Wilson</dc:creator>
      <pubDate>Sun, 03 Apr 2022 20:05:02 +0000</pubDate>
      <link>https://dev.to/zjgrey/an-old-noob-2-o9h</link>
      <guid>https://dev.to/zjgrey/an-old-noob-2-o9h</guid>
      <description>&lt;p&gt;Thank you for joining me for the second installment of my journeys through beginner cloud development.&lt;/p&gt;

&lt;p&gt;You probably guessed by now. Mobile scalability took a bit longer than i anticipated.  &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Quite&lt;/em&gt; a bit longer.&lt;/p&gt;

&lt;p&gt;The reason for this is two-fold.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I'm trying to stay as true to the tasks of &lt;a href="https://cloudresumechallenge.dev/docs/the-challenge/" rel="noopener noreferrer"&gt;The Cloud Resume Challenge&lt;/a&gt; as possible. This did not include learning &lt;a href="https://getbootstrap.com/" rel="noopener noreferrer"&gt;Bootstrap&lt;/a&gt;. I've seen some really slick cloud resumes out there, a lot of which were developed with the Bootstrap framework. If i decide to explore web development further than this challenge, learning Bootstrap or something similar seems the intelligent decision.
&lt;/li&gt;
&lt;li&gt;I'm using as much of my own code here as possible. I've never before written a CSS file from scratch, or designed a site using only on what i learned from &lt;a href="https://www.w3schools.com/" rel="noopener noreferrer"&gt;W3Schools&lt;/a&gt;. I didn't want to drop in a Bootstrap template, i wanted to own what i'm publishing and learn from it. Thus i have to balance my impatience with my initial purpose for undertaking this challenge to begin with: to boldly go where no me has gone before.
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you're unsure where this ship is heading, allow me to introduce you to the wonderful world of viewports.  Per &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Viewport_concepts" rel="noopener noreferrer"&gt;Mozilla&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A viewport represents the area in computer graphics being currently viewed. In web browser terms, it is generally the same as the browser window, excluding the UI, menu bar, etc.&lt;br&gt;
The size of the viewport depends on the size of the screen, whether the browser is in fullscreen mode or not, and whether or not the user zoomed in.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It can sound pretty complicated. Especially the first time you look at just &lt;a href="https://yesviz.com/viewport/" rel="noopener noreferrer"&gt;how many devices and viewports&lt;/a&gt; are out there. I spent more than a couple hours toggling different mobile viewports in my browser's developer mode trying to figure out why my resume looked as expected on my iPhone XR but not on my wife's iPhone 12 or my son's Pixel. Even after &lt;a href="https://www.w3schools.com/css/css_rwd_mediaqueries.asp" rel="noopener noreferrer"&gt;researching&lt;/a&gt; i was still a bit confused. &lt;/p&gt;

&lt;p&gt;Ultimately, after numerous trials, errors, and comedies, i determined that i needed to modify my content width and margin sizes individually for various smaller screen sizes. In the interest of simplicity, i chose to stick with what i feel are the three most prevalent viewports in the wild: 360px, 375px, and 414px.  I created an &lt;a class="mentioned-user" href="https://dev.to/media"&gt;@media&lt;/a&gt; rule in my CSS for each of these sizes and...&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;center&gt;Success!&lt;/center&gt;
&lt;/h4&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%2Fq8u26a9nxb1bz6ml84wv.gif" 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%2Fq8u26a9nxb1bz6ml84wv.gif" alt="Yay me" width="429" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'll take no shame in admitting my exhilaration when i loaded my local file to each viewport size in my developer console and saw my page render precisely as i've been wanting all these weeks. I didn't cry, but it was touch and go there for a moment.&lt;/p&gt;




&lt;h3&gt;
  
  
  Productivity Points
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Huge&lt;/em&gt; thanks to the developers of &lt;a href="https://jsfiddle.net/" rel="noopener noreferrer"&gt;JSFiddle&lt;/a&gt; - this site has saved me so much time and i can't recommend it enough for beginners to web development.  &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>aws</category>
      <category>webdev</category>
      <category>cloud</category>
    </item>
    <item>
      <title>An Old Noob - Issue 1, The Cloud Resume Challenge</title>
      <dc:creator>Zachary Wilson</dc:creator>
      <pubDate>Sun, 27 Mar 2022 20:07:00 +0000</pubDate>
      <link>https://dev.to/zjgrey/an-old-noob-issue-1-1k4l</link>
      <guid>https://dev.to/zjgrey/an-old-noob-issue-1-1k4l</guid>
      <description>&lt;p&gt;Pretty sure i'm in the right place, because it feels completely unknown.&lt;/p&gt;

&lt;p&gt;First things first... i'm a little rusty on my creative writing.  While my purpose here is to document my journey as i complete the various tasks of the &lt;a href="https://cloudresumechallenge.dev/docs/the-challenge/" rel="noopener noreferrer"&gt;Cloud Resume Challenge&lt;/a&gt;, thus perhaps not entirely &lt;em&gt;creative&lt;/em&gt; writing, this is a bit less formal than the emails and a bit less structured than the scripts i'm used to writing these days.  &lt;/p&gt;

&lt;p&gt;I've been in IT for a while and i'm finding myself inexplicably drawn to learning more about cloud architecture.  So, a bit of research later and i find myself tackling the Cloud Resume Challenge.  I've had a hobby site for years but it was mostly unkempt code that i hadn't looked at since first published.  But since i had a domain already, the rest should be a piece of cake  =]&lt;/p&gt;

&lt;p&gt;My first couple days were spent going over the code in my existing pages before undertaking the task of writing a new .css and .html for the resume.  This is because i didn't realize how utterly ugly my code was.  Sure it rendered the way i expected in the browser, but in a code editor it was nothing short of Lovecraftian.  I should also admit here that I didn't write this previous code, it was borrowed and modified to fit my hobbyist needs.  (I also feel compelled here to assert that my resume HTML &amp;amp; CSS are my own, as i'm certain one can tell rather quickly).&lt;/p&gt;

&lt;p&gt;As it turns out, this was a bit of a blessing.  Without realizing it, i had learned enough in my time away from my HTML of old that i could instantly see ways to improve it when i went back and looked. Plus it allowed me to update a few things that were well in need of updating - let's face it, i'm not the same person i was 14 years ago when i registered my domain.  In fact, thanks to projects like this one, i'm not the same person i was last week.&lt;/p&gt;

&lt;p&gt;So in the interest of keeping these entries bite-sized but quasi-regular, how has the beginning of this project looked so far?  It looks familiar, yet foreign. Complex, yet completable.  Somewhat frightening, utterly fascinating.  &lt;/p&gt;

&lt;p&gt;I'm still polishing the resume page but it's very close to releasing to the wild.  I've got a couple smaller things i've learned (which I intend to include in a future installment) and certainly a few larger things i've yet to learn.&lt;/p&gt;

&lt;p&gt;Here's to the journey!&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%2Fkhq7fi3zcrovyxlygsj7.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%2Fkhq7fi3zcrovyxlygsj7.jpg" alt="Image description" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>aws</category>
      <category>cloud</category>
      <category>cloudresumechallenge</category>
    </item>
  </channel>
</rss>
