Week 6: Fundamentals of Linux + Working With CI/CD Pipelines

Week 6: Fundamentals of Linux + Working With CI/CD Pipelines

In this post, I'll be sharing a recap of my notes from Day 34 to 40 of learning in the Udacity Cloud DevOps Engineer Nanodegree classroom (and on Linux Journey).

These are compiled from my daily IG posts, as part of my #3MonthsOfCDE series and only slightly edited for platform suitability.

Day 34 - Fundamentals of CI/CD

  • For this week, I was back on track with focusing on a concept/lesson/material for at least 2 hours a day. I fully commenced the third course in the nanodegree - “Building CI/CD pipelines, monitoring and logging”

CI/CD is Continuous Integration/Continuous Deployment, together which forms Continuous Delivery.

  • As expected, the starting lessons give a general introduction and overview of what you’d be learning. I completed Lesson 1 and almost done with Lesson 2; the remaining sections will cover introduction to pipelines.

Day 35 - Linux Journey

  • For some reason, the videos on the Udacity course refused to load (kept failing midway), so I focused on my Linux learning. I channeled the rest of that time to exploring this resource that was shared in my SCA study group (our choice of focus for the week was Linux). I really do not have much experience with Linux or Linux commands (other than what I’d been exposed to by the nanodegree), so I have to take my time to fully get into it.

linux-journey-grasshopper-section-khairahscorner-hashnode.jpeg

  • This website has several resources to take you through fundamental concepts. I did a run-through of the basics; getting a clear understanding of what Linux even is, how it really is a kernel, the GNU OS and the collaboration of the two, how it all started, what even is a kernel/OS in layman terms, etc.

  • As expected, there is a lot to learn and this is just one aspect. Still, no other way but forward!

Resource: https://linuxjourney.com

Day 36 - Basic Linux Commands

  • On this day, I did a run through of Grasshopper section on the Linux Journey website. Some things already made sense to me and for others, I finally got better insights on what they were about.

  • My “thoroughness spirit” won’t allow me skip sections though, so it’s taking longer to get through it all. Either way, the resource is free and I can always go back to them.

Day 37 - Introduction to Continuous Integration (CI) Pipelines

  • Today, I focused on completing lesson 2 on the Udacity course and started Lesson 3 on Building a CI Pipeline.

  • So far, it has been an influx of theories to understand CI/CD and better communicate its role and benefits to a company’s structure. The real work begins on my next hour(s) with the course.

P.S It finally sunk in that GitHub Actions IS a CI/CD tool!

Day 38 - Minikube Practice Exercise

  • This weekend was spent on tasks outside of my current stage on the roadmap. I had a connect session yesterday and the image below was the task.

kubernetes-minikube-web-app-deployment-khairahscorner-hashnode.jpeg

  • I was a little thrown off because I missed the last connect session and I didn’t expect such a jump. However, like a friend advised:

    Everything you do is all part of the learning process, even if that’s not the stage you’re at.

  • Still, I spent today working on the task. I used a React app and it was “made easy” by the steps summary provided (but obviously, no one would give you that in real life).

  • A challenge I had was installing Linux on a Mac. Every resource I found online seemed like too much of a risk to take without actually understanding what I was doing (even the bootable USB stick route). Eventually, the same friend informed me that I could try skipping the Linux step since MacOS was Unix-based. I already knew this but it didn’t occur to me to actually try it out.

  • Anyways, that worked and I was able to carry out most of the steps. I did get stuck towards the end (deploying to minikube) but I am going to try things out again.

  • I may not fully know what I actually did but attempting the exercise and getting exposed to these tools was not soo bad.

Day 39 - Working with CI Pipelines

  • It has been exactly 2 weeks since I last shared my progress but during that time, I managed to put in some hours and I completed the lessons on Building CI pipelines.

  • I was never familiar with CircleCI so it took time to get through the exercises, as expected. Then there were the multiple errors and workflow failures, writing sample jobs, exploring different configuration setups, etc. It was a whole I don’t fully know what I’m doing but I’m going to do it anyway situation.

  • Then the bad news: My third project is already due but I still have at least 7 hours of content and practice to go through, + the project itself! Thankfully, I get 2 days of holiday this week so I plan to maximise those hours to the fullest!

Day 40 - Getting Started With Ansible

  • Today, I spent quite a number of hours on Lesson 4: Continuous Delivery With Deployment Pipelines, using Ansible.

  • First, I had to go through the installation that turned out to be series of debugging and eventually finished up successfully. Then, I explored some of the documentation to make sense of the example playbook used in the lessons, after which I tried the first two exercises.

  • For the second exercise though, I attempted the extra step of automating the “Build ansible inventory file” step with CircleCI.

The turnout? Let’s just say I’m going to give it another go tomorrow.

  • The job failed, and that was mainly because of the “temporary session token/federated user” Udacity setup. I had previously written a job to set up aws-cli and it worked successfully. However, this one requires more configuration with the temporary credentials and session token.

  • I plan to test the job with my personal account tomorrow (and I’m positive it’d run successfully), then look into how to run the workflow with the Udacity user scenario.

Spoiler: It ran successfully with my personal account.

Khairah Signature.gif