################ Class Curriculum ################ ====================== Introduction to DevOps ====================== Duration: 72 classes - 36 weeks (2 sessions per week) =================== 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 0: DevOps Concepts and Tools =================================== ++++++++++++++++++++++++++++++ Week 1: Introduction to DevOps ++++++++++++++++++++++++++++++ - Class overview, lectors introduction, and expectations - Overview of DevOps Concepts and Agile Principles - DevOps Tools and Technologies - Environments - Open Source and Community =============================== Module 1: Introduction to Linux =============================== +++++++++++++++++++++++++++++++++++++++++++ Weeks 2-6: 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 7-8: 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 9-10: 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 11-14: 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 15: 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 16: 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 17-18: 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 19: 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 20-22: 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 23-25: 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 26-28: 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 29-30: 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 30-35: 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 36: 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