DevOps Training Path
A practical route from Linux basics to Kubernetes and delivery metrics. Ten phases, five labs, five exercises and a quiz.
Roadmap: 10 phases
Follow the phases in order. Each one builds on the previous. Time estimates are suggestions for someone studying part-time, not measurements.
Linux and Shell Scripting
Goal: Be productive on a Linux server and write shell scripts that fail safely.
- Filesystem layout, permissions, users and groups
- Processes, signals, systemd units and journald
- Bash scripting: quoting, exit codes,
set -euo pipefail - cron and systemd timers
Git and Collaboration
Goal: Work in a team with reviewable, reversible changes.
- Branching, merge requests, protected branches
- Merge versus rebase, and why not to rewrite shared history
git revertfor undoing published commits- Small commits, trunk-based development
Networking and Web Basics
Goal: Reason about a request from the client to the service and back.
- DNS resolution, TCP, HTTP, TLS certificates
- Reverse proxies and load balancers (nginx)
- Diagnostics:
curl -v,dig,ss,openssl s_client
Docker and Images
Goal: Build small, reproducible, non-root container images.
- Dockerfile, layers and build cache
- Multi-stage builds
- Registries and tagging strategy
- Docker Compose for local environments
Continuous Integration with GitLab CI
Goal: Automate build and test on every change.
.gitlab-ci.yml: stages, jobs, rules- Artifacts and cache
- Runners and CI/CD variables
- Pipeline as a quality gate for merge requests
Infrastructure as Code with Terraform
Goal: Describe infrastructure declaratively and review changes before applying.
- Providers, resources, variables, outputs
- State, remote backends and state locking
- Modules and reuse
- Reading a plan carefully before
apply
Configuration Management with Ansible
Goal: Configure servers repeatably and idempotently.
- Inventory, playbooks, roles
- Idempotency and handlers
- Templates with Jinja2
- Ansible Vault for secrets
Kubernetes and GitOps
Goal: Deploy and operate workloads declaratively.
- Pods, Deployments, Services, Ingress
- ConfigMaps and Secrets
- Liveness, readiness probes, resource requests and limits
- Rollouts and rollbacks
- GitOps with Argo CD: Git as the source of truth
Observability Basics
Goal: Know whether the system works before users tell you.
- Metrics, logs and traces: what each is for
- Prometheus and Grafana fundamentals
- Alerting on symptoms, not on causes
DevSecOps and Delivery Metrics
Goal: Ship safely and measure how well delivery performs.
- Secrets management and least-privilege access
- Image scanning and dependency updates
- The classic DORA delivery metrics: deployment frequency, lead time for changes, change failure rate, time to restore service
Progress is saved in this browser only.
Free video courses
A curated order of free YouTube courses, about 48 hours in total. They are made by independent creators and are not affiliated with this site. Durations and titles were checked on 20 September 2026 and can change.
All courses are in English as far as could be checked: on 20 September 2026 the automatic caption language shown by YouTube was English for each video. This indicates the spoken language, it is not a guarantee. Do not just watch: build, break and fix things as you go.
Hands-on labs
Five labs, one per major tool. Use a free tier or local environments only.
Lab 1: Merge request workflow
Git, GitLab
Practise a review-driven workflow with a protected main branch.
Steps
- Create a project and protect the
mainbranch (no direct pushes). - Create a feature branch, commit a change, open a merge request.
- Introduce a conflict on purpose and resolve it.
- Undo a merged commit with
git revert.
Success criteria
Main history is linear or merge-based by rule, and you can explain why the revert did not rewrite history.
Lab 2: Multi-stage Docker image
Docker
Cut image size by separating build and runtime stages.
Steps
- Build a small application in a single-stage image and record its size (
docker images). - Rewrite it as a multi-stage build with a minimal runtime image and a non-root user.
- Compare sizes and confirm the container still runs.
Success criteria
The final image contains no compiler or build cache and runs as a non-root user.
Lab 3: GitLab CI pipeline
GitLab CI
Build, test and publish an image from a pipeline.
Steps
- Write a
.gitlab-ci.ymlwithbuildandteststages. - Pass a build output to the test job with
artifacts. - Add a job that builds and pushes the image to the project registry on
mainonly (rules). - Break a test on purpose and confirm the merge request is blocked.
Success criteria
A failing test prevents the merge, and images are only pushed from main.
Lab 4: Terraform workflow
Terraform
Learn the init, plan, apply cycle without spending money.
Steps
- Start with the
localprovider and alocal_fileresource. - Add an input variable and an output, then re-run
planand read the diff. - Move the configuration into a module and call it twice with different inputs.
- Run
terraform destroyand check the resources are gone.
Success criteria
You can predict the result of a plan before running it.
Lab 5: Idempotent Ansible role
Ansible
Configure a web server and prove the role is idempotent.
Steps
- Create a role that installs nginx and deploys a templated configuration.
- Add a handler that reloads nginx only when the configuration changes.
- Run the playbook twice.
Success criteria
The second run reports changed=0 and the handler does not fire.
Practical exercises
Open-ended tasks. There is no answer key: compare your result with a colleague or write up your reasoning.
Exercise 1: Fix a broken pipeline
Given a pipeline that fails on the second stage, read the job log, find the cause, and fix it in one merge request with a clear commit message.
Exercise 2: Script to role
Take a shell script that configures a server and convert it to an Ansible role. List what the script did that was not idempotent.
Exercise 3: Review a Terraform plan
Modify a resource in a way that forces replacement instead of an in-place update. Explain how you recognised it in the plan output and what the impact would be in production.
Exercise 4: Deploy with probes
Deploy an application to Kubernetes with readiness and liveness probes and resource requests and limits. Perform a rollout with a bad image tag, observe the failure, then roll back.
Exercise 5: Measure delivery
From the Git and pipeline history of one project, compute deployment frequency and lead time for changes over four weeks. State the limits of the data you used.
Training QCM
Ten questions, shuffled on every load. Click an answer to see the explanation.
Want more? The Quiz Hub has 100 questions in 10 topics.
benmabrouk.fr: free DevOps and SRE learning resources, written from production experience.