Class Curriculum

Introduction to DevOps

Duration: 32 weeks (2 sessions per week - Tuesday & Thursday at 18:30 - 20:00)

Learning Objectives

  • Understand the fundamentals of DevOps, working in team, and associated tools.

  • Gain hands-on experience with Linux, programming, containers, cloud technologies, and CI/CD pipelines.

  • Develop a comprehensive DevOps project by integrating learned concepts and tools.

Module 1: Introduction to DevOps and Linux

Weeks 1-2: Introduction to DevOps and Linux

Learning Objectives:

  • Define DevOps and understand its principles and practices.

  • Gain foundational knowledge of Linux and its role in DevOps environments.

Content:

  • Overview of DevOps Concepts and Agile Principles

  • Environments: Development, Testing, Acceptance,and Production

  • Introduction to the Linux operating system

  • Basic Linux commands and file system navigation

  • Configuring Linux: permissions, users, and environment variables

Practical Examples:

  • Setting up a basic Linux environment on a virtual machine.

  • Hands-on with basic Linux commands (ls, cd, cp, mv, etc.).

Weeks 3-4: Shell Scripting

Learning Objectives:

  • Automate repetitive tasks using shell scripting.

  • Write and debug Bash scripts with control structures and functions.

Content:

  • Introduction to shell scripting

  • Bash scripting fundamentals

  • Control structures, loops, I/O, and functions

  • Writing and executing shell scripts

Practical Examples:

  • Automate a task to create and organize project directories.

  • Create a script to monitor disk usage and send alerts.

Weeks 5: Advanced Linux and Networking Basics

Learning Objectives:

  • Utilize advanced Linux commands for system administration.

  • Understand basic networking concepts and configure network settings.

Content:

  • Advanced Linux commands and scripting techniques

  • Linux system administration essentials

  • Introduction to networking concepts

  • Configuring network settings in Linux

  • Basic troubleshooting and network tools

Practical Examples:

  • Write a script to manage system logs.

  • Set up and troubleshoot a basic local network.

Module 2: Introduction to Programming: Python and Git

Weeks 6-8: Python for DevOps

Learning Objectives:

  • Understand Python basics and its application in DevOps workflows.

  • Develop scripts to automate tasks and processes.

Content:

  • Introduction to Python programming language

  • Python data types, variables, and operators

  • Control structures, functions, and classes

  • Python modules and libraries for DevOps

  • Automation scripts using invoke

  • Building, Testing, and Releasing Python

Practical Examples:

  • Create a Python script to parse logs, scrape data,and generate reports.

  • Automate deployment tasks using Python scripts.

Weeks 9-10: Git and GitHub

Learning Objectives:

  • Master version control with Git and collaborate using GitHub.

  • Resolve conflicts and maintain a clean commit history.

Content:

  • Introduction to version control systems

  • Git basics: init, add, commit, status, log, diff

  • Branching, merging, and conflict resolution

  • Working with GitHub and remote repositories

Practical Examples:

  • Create and manage a project repository.

  • Collaborate with peers using Git branches.

Week 11: Introduction to DocOps

Learning Objectives:

  • Document processes effectively and integrate documentation into CI/CD workflows.

Content:

  • Overview of DocOps methodology

  • Technical documentation best practices

  • Managing documentation with Git and GitHub

  • Integrating documentation into CI/CD workflows

Practical Examples:

  • Create project documentation using Markdown.

  • Automate the deployment of documentation updates.

Weeks 12-14: GitHub Actions

Learning Objectives:

  • Automate CI/CD pipelines using GitHub Actions.

  • Integrate external tools into workflows for enhanced automation.

Content:

  • Introduction to GitHub Actions

  • Creating custom GitHub Actions workflows

  • Implementing continuous integration and deployment (CI/CD)

  • Code reusability using actions and workflow environments

  • Integrating GitHub Actions with external tools

Practical Examples:

  • Create a GitHub Actions workflow for linting and testing code.

  • Deploy a simple application using GitHub Actions.

Week 15: Mid-term Project and Retrospective

Content:

  • Develop a CI Pipeline project using learned tools.

  • Reflect on challenges, successes, and areas for improvement.

Module 3: Containers: Docker and Kubernetes

Weeks 16-18: Docker and Containerization

Learning Objectives:

  • Learn the fundamentals of containerization and Docker.

  • Build and manage Docker-based applications.

Content:

  • Introduction to Docker and Containerization

  • Docker basics: images, containers, registries

  • Creating and managing Dockerfiles

  • Docker Compose and multi-container applications

Practical Examples:

  • Build and deploy a simple web application in a Docker container.

  • Create a Docker Compose file for a multi-container setup.

Weeks 19-22: Kubernetes and Container Orchestration

Learning Objectives:

  • Deploy and manage applications at scale using Kubernetes.

  • Understand Kubernetes architecture and resource management.

Content:

  • Introduction to Kubernetes

  • Kubernetes architecture and components

  • Deploying and managing applications with Kubernetes

  • Kubernetes services, deployments, and pods

  • Scaling, monitoring, and troubleshooting Kubernetes applications

Practical Examples:

  • Deploy a web application to a Kubernetes cluster.

  • Monitor and scale a Kubernetes deployment.

Weeks 23-24: Helm and Kubernetes Operators

Learning Objectives:

  • Simplify Kubernetes deployments using Helm and Operators.

Content:

  • Introduction to Helm

  • Creating and managing Helm charts

  • Helm templating and package management

  • Introduction to Kubernetes Operators

Practical Examples:

  • Package an application using Helm.

  • Use an Operator to manage a Kubernetes resource.

Module 4: Cloud Technologies

Weeks 25-26: Cloud Technologies

Learning Objectives:

  • Understand cloud computing basics and major cloud providers.

Content:

  • Introduction to cloud computing

  • Overview of major cloud providers (AWS, Azure, GCP)

  • Key cloud services and concepts

  • Deploying applications and infrastructure to the cloud

Practical Examples:

  • Deploy an application to AWS using EC2.

  • Use Azure Functions to create a simple cloud function.

Weeks 27-31: Infrastructure as Code with Terraform and Ansible

Learning Objectives:

  • Automate infrastructure deployment using Terraform and Ansible.

Content:

  • Introduction to infrastructure as code (IaC) and configuration management

  • Terraform basics: providers, resources, modules

  • Writing and deploying Terraform configurations

  • Ansible basics: inventory, playbooks, roles, modules

  • Writing and executing Ansible playbooks

Practical Examples:

  • Provision infrastructure using Terraform and configure it with Ansible.

  • Write a playbook to install and configure an application.

Week 32: Advanced Cloud and Final Project

Content:

  • Advanced cloud services and automation

  • Introduction to cloud security and monitoring

  • Developing a comprehensive DevOps project using the skills acquired in the course

  • Project presentations and peer review

  • Course review and future learning resources

  • Q&A and course completion