Skip to content

Repository files navigation

DevOps Assignments

Author: Kartikey (@Json604) · Enrollment No: 10121

Completed assignments for the DevOps sessions in Nency-Ravaliya/devops-heros.

Every command in every write-up was actually executed, and the output is copied in verbatim — nothing is illustrative or reconstructed. Raw transcripts and the scripts that produced them are in each assignment's evidence/ folder.

Assignments

# Assignment Session Covers
1 Linux Basics session2-linux Soft vs hard links, adduser vs useradd, journalctl, command cheat sheet
2 System Information Script session3-shell-scripting sysinfo.sh — variables, read -p, mkdir, touch, > redirection
3 Networking session4-networking IP addressing & subnetting, plus ~30 networking commands with output
4 Git session5-git-github commit -a -m vs commit -m, and cherry-pick
5 Docker Hello World ×6 session6-7-docker Node.js, Python, Java, Apache, React and Nginx apps
6 Multi-Stage Dockerfile session6-7-docker Multi-stage build on port 8080 + 3-application deployment
7 Docker Networking & Volumes session8-docker-networking-volume 3 networks, host network, bind mounts, overlay networks

How things were verified

Assignment Environment Verification
1, 2, 3 Ubuntu 24.04 (aarch64) with systemd as PID 1 in Docker journalctl/adduser/useradd need real Linux; the container boots systemd properly so the journal is genuine
4 Local Git 2.50.1 Throwaway repos; cherry-pick verified with matching git patch-id and differing commit hashes
5, 6 Docker Desktop 29.3.1 HTTP 200 from every app plus browser screenshots — React renders client-side, so curl alone cannot verify it
7 Docker Desktop 29.3.1 Network isolation proven both by DNS (NXDOMAIN) and by raw IP (100% packet loss); no-restart proven by unchanged StartedAt/PID/RestartCount

Things worth flagging

A few findings that came out of doing the work rather than describing it:

  • git commit -a -m silently skips new files. Assignment 4 demonstrates a commit that reports "1 file changed" while the untracked file the user meant to add is left behind.
  • Multi-stage builds only pay off when the runtime base differs. The session's own multi-stage Dockerfile saves 6 MB (249 → 243 MB) because both stages use node:24-alpine. The React app in Assignment 5 drops 248 MB → 76 MB, because Nginx replaces Node entirely. Measured and explained in Assignment 6.
  • traceroute showing * * * is not a broken path. ping to the same host succeeds; the hops simply do not return ICMP. Using traceroute -T -p 443 gets a real answer. See Assignment 3.
  • A failing database client is not always a network problem. In Assignment 7, Alpine's mysql-client (really MariaDB) failed on TLS and then on caching_sha2_password — while nc proved port 3306 was open the whole time.
  • The repo's python-app/Dockerfile does not build. apt install pip3 is not a valid package and the requirements.txt it copies does not exist in that folder; app.py also only prints to stdout rather than serving a page. Assignment 5 contains a working replacement.

Environment

macOS (Darwin 25.5.0, arm64)
Docker Desktop 29.3.1 / Engine 29.2.0
Git 2.50.1
Ubuntu 24.04 container with systemd for the Linux exercises

About

DevOps assignments: Linux, shell scripting, networking, Git, Docker

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages