DevOps in 21 Days!

About Me

  • I am Mohammed Daoudi AKA iduoad
  • I am a DevOps engineer
  • weCanTalkAbout([🐧, 🐳, 🦊, …])
  • More about me here !

Disclaimers

  • Work in progess
  • Subjective
  • Interactive

Prerequisites

  • Good English (or not)
  • Programming
  • Problem Solving
  • Googling
  • Prompt engineering

Tools and techniques

Day 1

  • Get a linux box
  • Use a VM
    • Don’t use VBox/VMware WS
    • Vagrant is better
  • SSH into the machine
  • Picnic 101 (file manipulation, power management, search, pagers, text editors …)
  • Install a something (e.g. nginx).
    • Package Management 101 (apt, yum, pacman)
    • Service Management 101 (systemd)
  • Expose 80 port to your machine.
  • Access the something (nginx).

Homework

Bonus

  • Read a book about DevOps.

Effective Devops

Day 2

  • Read about UNIX, shells, POSIX,…
  • Write your first script.
    • Learn bash basics (variables, conditionals, loops, args, …)
  • Git 101
    • git init
    • git add
    • git commit
    • git log/show

Homework

  • Version you script and push it to gitlab/github
    • git init/clone
    • git remote
    • git push/pull

Bonus

  • Watch some Geeksblabla’s episodes about Linux and DevOps …

Day 3

  • RegEx 101
  • Unix Filters: pick a file and play
    • grep: get a [dictionary](english corpus inurl:gist.github.com)(/usr/share/groff/1.22.4/eign)
    • cut/paste: get a csv file
    • sort, uniq, tr, head, tail, wc, split, tee …
    • learn pipes and redirections

Homework

Bonus

The Phoenix project

Day 4

  • sed 101
  • awk 101

Homework

Bonus

The Unicorn Project

Day 5

  • Picnic 102
    • User management (CRUD, config files, …)
    • File permission and access control (chmod, chown, sudo …)

Homework

Bonus

  • Follow some people and communities in Social Media.

Day 6

  • Learn about the kernel
    • What is it ?
    • What is does ?
    • Where is it ?
    • How to play with it?

Homework

Bonus

Day 7

  • Learn about Linux processes
    • What is a process
    • Linux process table (/proc/, /sys/proc …)
    • Process states, priority, nice, ulimit …
  • Manage you processes (ps, top, htop, kill, pkill, pgrep…)

Homework

No Homework

Day 8

Break

Day 9

  • Learn about the LFS (Linux FileSystem)
    • /etc, /dev/, /proc, sys, /tmp, /home
  • Learn about linux filesystems
    • ext4, xfs, btrfs, zfs(on Linux), …
    • Learn the features.

Homework

  • Read some config files, and tinker with them.
  • Learn about volume management (LVM, Btrfs, ZFS)
  • Pick a database (SQLite, PostgreSQL, MySQL) and practice SQL basics in SQLBolt

Bonus

  • Learn about storage hardware. Good Intro in the videos here.

Day 10

  • Figure out how to add a disk to your machine.
    • vagrant: you should use provider or plugin
    • cloud: easy but can cost some money (not if you are using free tier).
  • Partition your new disk (lsblk, *fdisk, parted)
  • Format your partitions (mkfs)
  • Start using them (mount, umount, df, du, fstab …)

Homework

  • LVM 101
    • pvcreate
    • vgcreate
    • lvcreate
  • RAID 101 with mdadm
    • Add a new disk
    • Explore RAID level (at least 0 and 1) with mdadm

Bonus

Day 11: It is NETWORKING day 🎉

  • Watch this (13/13)
    • Make sure you understand IP and TCP and all the mentioned protocols
    • Read about OSI
  • Install wireshark on your host machine.
    • Did you see that ?
    • Profile some protocols

Homework

  • Read some RFCs
  • Play with the protocols using common servers and clients:
    • http: nginx with firefox network tools.
    • dns: Bind DNS server
    • tls: Setup a PKI using OpenSSL.
    • ftp, ntp, arp, …

Bonus

Computer Networking

Day 12: Mooore networking 🎉

  • Learn about addressing and subnetting
    • Practice! Practice!
    • Use Cloud !

Homework

  • Create networks and subnets.
    • vagrant: netmask
    • Use Cloud !

Bonus

  • Learn IAC and use it to manage your cloud resources (Terraform, CDK, Pulumi …)

Day 13: Mooooore networking 🎉

Homework

  • Learn about Linux network interfaces
  • Learn about Linux firewalls
  • Implement your own protocol on top of TCP using Linux Sockets.

Bonus

Day 14: Let’s be our sysadmins

  • LAMP stack is a very good start
    • Install Apache2, PHP and Mysql
    • Configure them all (you remember /etc ?)
  • Install vsftpd.
  • Install and configure as much things as you can (LDAP, DNS, Media …)
  • DO community blog is a good friend here!

Homework

  • UFW 101
  • Cronjobs 101: Cron or systemd-timers

Bonus

  • Xavki: Good and extensive French content, if you need to learn about some DevOps tools.

Day 15: Containers 101

  • Take this or this (longer and better)
  • Install Docker or Podman
    • Docker pull
    • Docker images
    • Docker run
    • Docker ps
    • Docker exec
  • Enjoy your new superpowers !!

Homework

  • Create your own containers and have fun!

Bonus

Day 16: Container 102

  • Learn more about container internals (Namespaces, Cgroups, Overlay filesystems, …)
  • Learn about OCI (Open Container Initiative)!

Homework

  • Make your own container engine !

Bonus

Day 17

Container 103

  • READ A LOT OF DOCKERFILES!!!!
  • Create you own! it is so easy now!

Homework

  • Learn multi-stage builds
  • Learn about kaniko and buildah

Bonus

  • Learn about System containers (LXC/LXD, Incus, Systemd-nspawn, …)

Day 18

Compose is so easy!

  • Read as many compose files as you can.
  • Run examples.
  • Make your own.

Homework

  • Redo Day 14 with compose!

Bonus

Day 19

Break

Day 20

Git 102

  • Pick a stack and a project (java, javascript, python …)
  • git clone -> rm -rf .git -> git init
  • Push the code into gitlab
  • Practice (branching, Merge Requests, …)

Homework

Bonus

Day 21

  • Create a CI/CD pipeline for your project.
  • Test the code, build it and package it.

Homework

  • Create a deploy job to deploy to a PAAS.
  • Optimize your pipelines.

Bonus

Day 21 -

There still more things to learn, maybe next time!

Thank you

Let’s be friends! 🤗