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

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 (nginx).
    • Package Management 101
    • Service Management 101
  • Expose 80 port to your machine.
  • Access the something (nginx).
  • Start reading a book.

Homework

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
  • Daily read.

Homework

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

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
  • Daily read

Homework

Day 4

  • sed 101
  • awk 101
  • Daily read

Homework

Day 5

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

Homework

  • Learn about ACLs (getfacl, setfacl, …)

Day 6

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

Homework

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)
  • Learn about storage hardware.

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

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
  • Implement your own protocol on top of TCP.

Day 12

Mooore networking 🎉

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

Homework

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

Day 13

Mooooore networking 🎉

Homework

Day 14

Let’s be our system administrators

  • 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

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!

Day 16

Container 102

  • Learn how containers work !
  • Learn about OCI (Open Container Initiative)!

Homework

  • Make your own container engine !

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

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!

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

Day 21

  • Create a CI/CD pipeline for your project.
  • Test the code, build it and package it.
  • Create a deploy job to deploy to a PAAS.
  • Optimize your pipelines.

Day 21 -

There still more things to learn, maybe next time!

Thank you

Let’s be friends! 🤗