This repository contains all my notes for past Kodekloud Engineer tasks which are all performed in a live Linux environment. These tasks simulate actual enterprise challenges and mimics the day-to-day work of System Administrators and Devops Engineers.
For each task, a set of requirements are given. The documentations for the servers are also provided. It is up for the "engineer" to find the solution for each problem.
To learn more, check out the following links:
Role/Level | Points Needed |
---|---|
Systems Administrator | Entry-level |
DevOps Engineer | 25,000 |
Senior DevOps Engineer | 75,000 |
DevOps Architect | 150,000 |
More details can be found here.
[2022-Nov-29] - Mechanics
Here's how the "Kodekloud Engineer" gamified learning works:
- The tasks are given in a random order.
- Some tasks are given more than once.
- For tasks with buggy lab, better to skip them.
- You will need to wait for 24 hours for the next task to arrive.
[2022-Nov-29] - Markdown for tasks 57 and onwards
When I started going deep into Linux two years ago at the start of 2020, I didn't know much about markdown files so I just dump all the notes for each tasks in ".sh" files. I've learn so much about markdown since then and I've been using this format in all my documentations, both for my personal notes and work notes.
Having said, you will see tasks 1 to 56 are all in ".sh" files. I didn't want to edit them because they showed how much I don't know before and the tasks 57 and onwards shows how much I've grown since.
[2022-Nov-29] - Public Profile
Profiles can now be shared publicly. These allows engineers to showcase the challenges they have solved.
See my public profile here: Kodekloud Engineer
[2023-July-26] - Change in mechanics
There's been a change in how Kodekloud "gives tasks" to engineers. Previously the tasks are given one at a time, and the engineer needs to finish the current task, and then wait for 24 hours for the next task to arrive.
Kodekloud has change the approach by:
- Setting different levels for separate categories
- The engineer can answer as many tasks as they can, as long as they have "Kodekloud coins".
- Each task cost a number of coins and it is also equivalent to a number of experience points
See screenshot below:
[2023-July-31] - Mark Level as Complete
Once you have finished all tasks for a level, click the Mark Complete to unlock the next level tasks.
βοΈ Task 001 - Create a Linux User with Non-Interactive Shell
βοΈ Task 002 - Linux Run levels
βοΈ Task 003 - Linux SSH Authentication
βοΈ Task 004 - Create a Cron job
βοΈ Task 005 - Create a user
βοΈ Task 006 - MariaDB Troubleshooting
βοΈ Task 007 - Linux Banner
βοΈ Task 008 - Selinux Installation
βοΈ Task 009 - DNS Troubleshooting
βοΈ Task 010 - Linux Services
βοΈ Task 011 - NFS Troubleshooting
βοΈ Task 012 - Linux User without Home
βοΈ Task 013 - Linux User Expiry
βοΈ Task 014 - Linux Archives
βοΈ Task 015 - Disable Root Login
βοΈ Task 016 - Apache Troubleshooting
βοΈ Task 017 - Create a group
βοΈ Task 018 - Linux String Substitute
βοΈ Task 019 - Linux Firewalld Rules
βοΈ Task 020 - Linux Remote Copy
βοΈ Task 021 - HAproxy LBR Troubleshooting
βοΈ Task 022 - Linux Bash Scripts
βοΈ Task 023 - Configure Local Yum Repos
βοΈ Task 024 - Linux Resource Limits
βοΈ Task 025 - Configure Protected Directories
βοΈ Task 026 - Linux NGINX as Reverse Proxy
βοΈ Task 027 - Web Server Security
βοΈ Task 028 - Setup SSL for NGINX
βοΈ Task 029 - Application Security
βοΈ Task 030 - Install a package - git
βοΈ Task 031 - Linux Find Command
βοΈ Task 032 - Install and Configure HAproxy LBR
βοΈ Task 033 - Linux Firewalld Setup
βοΈ Task 034 - Install and Configure NFS Server
βοΈ Task 035 - PAM Authentication for Apache
βοΈ Task 036 - Install and Configure PostgreSQL
βοΈ Task 037 - Linux Process Troubleshooting
βοΈ Task 038 - Install and Configure SFTP
βοΈ Task 039 - Install and Configure Tomcat
βοΈ Task 040 - IPTables Installation and Configuration
βοΈ Task 041 - Linux network Services
βοΈ Task 042 - Install and Configure Web Application
βοΈ Task 043 - Install and Configure DB Server
βοΈ Task 044 - Linux SSH Authentication
βοΈ Task 045 - MariaDB Troubleshooting
βοΈ Task 046 - Install and Configure Web Application
βοΈ Task 047 - Create a Linux User with Non-Interactive Shell
βοΈ Task 048 - Configure Local Yum Repos
βοΈ Task 049 - Linux Firewalld Setup
βοΈ Task 050 - Install and Configure PostgreSQL
βοΈ Task 051 - Linux Firewalld Rules
βοΈ Task 052 - Apache Troubleshooting
βοΈ Task 053 - Create a Linux User with Non-Interactive Shell
βοΈ Task 054 - Setup SSL for NGINX
βοΈ Task 055 - Install and Configure HAProxy LBR
βοΈ Task 056 - Save. Load, and Transfer Docker Image
βοΈ Task 057 - Manage Secrets in Kubernetes
βοΈ Task 058 - Creating Soft Links Using Ansible
βοΈ Task 059 - Ansible Basic Playbook
βοΈ Task 060 - Git Fork a Repository
βοΈ Task 061 - Deploy Grafana on Kubernetes Cluster
βοΈ Task 062 - Deploy Jenkins on Kubernetes
βοΈ Task 063 - Create Namespaces on Kubernetes Cluster
βοΈ Task 064 - Ansible Copy Module
βοΈ Task 065 - Manage Git Repositories
βοΈ Task 066 - Update an Existing Deployment in Kubernetes
βοΈ Task 067 - Managing Jinja2 Templates Using Ansible
βοΈ Task 068 - Puppet Install a Package
βοΈ Task 069 - Ansible Lineinfile Module
βοΈ Task 070 - Setup Puppet Certs Autosign
βοΈ Task 071 - Create a Docker Network
βοΈ Task 072 - Create Deployments in Kubernetes Cluster
βοΈ Task 073 - Ansible Inventory Update
βοΈ Task 074 - Create Replicaset in Kubernetes Cluster
βοΈ Task 075 - Puppet String Manipulation
βοΈ Task 076 - Run a Docker Container
βοΈ Task 077 - Init Containers in Kubernetes
βοΈ Task 078 - Rollback a Deployment in Kubernetes
βοΈ Task 079 - Puppet Setup SSH Keys
βοΈ Task 080 - Deploy MySQL on Kubernetes
βοΈ Task 081 - Ansible Facts Gathering
βοΈ Task 082 - Create Cronjobs in Kubernetes
βοΈ Task 083 - Deploy Tomcat App on Kubernetes
βοΈ Task 084 - Fix Python App Deployed on Kubernetes Cluster
βοΈ Task 085 - Rolling Updates in Kubernetes
βοΈ Task 086 - Ansible Archive Module
βοΈ Task 087 - Ansible Config File Update
βοΈ Task 088 - Ansible Create Users and Groups
βοΈ Task 089 - Kubernetes Sidecar Containers
βοΈ Task 090 - Using Ansible Conditionals
βοΈ Task 091 - Ansible Setup Httpd and PHP
βοΈ Task 092 - Print Environment Variables
βοΈ Task 093 - Set Limits for Resources in Kubernetes
βοΈ Task 094 - Kubernetes Troubleshooting
βοΈ Task 095 - Ansible Blockinfile Module
βοΈ Task 096 - Countdown job in Kubernetes
βοΈ Task 097 - Docker Ports Mapping
βοΈ Task 098 - Troubleshoot Issue With Pods
βοΈ Task 099 - Ansible Replace Module
βοΈ Task 100 - Puppet Create a FIle
βοΈ Task 101 - ReplicationController in Kubernetes
βοΈ Task 102 - Puppet Setup Database
βοΈ Task 103 - Ansible Unarchive Module
βοΈ Task 104 - Puppet Multi-Packages Installation
βοΈ Task 105 - Git Create Branches
βοΈ Task 106 - Puppet Setup File Permissions
βοΈ Task 107 - Create Pods in Kubernetes Cluster
βοΈ Task 108 - Persistent Volumes in Kubernetes
βοΈ Task 109 - Git Revert Some Changes
βοΈ Task 110 - Fix issue with PhpFpm Application Deployed on Kubernetes
βοΈ Task 111 - Fix Issue with VolumeMounts in Kubernetes
βοΈ Task 112 - Git Manage Remotes
βοΈ Task 113 - Troubleshoot Deployment issues in Kubernetes
βοΈ Task 114 - Resolve Git Merge Conflicts
βοΈ Task 115 - Git Install and Create Repository
βοΈ Task 116 - Rolling Updates And Rolling Back Deployments in Kubernetes
βοΈ Task 117 - Ansible Ping Module Usage
βοΈ Task 118 - Deploy Node App on Kubernetes
βοΈ Task 119 - Pull Docker Image
βοΈ Task 120 - Deploy Nginx and Phpfpm on Kubernetes
βοΈ Task 121 - Git Setup from Scratch
βοΈ Task 122 - Kubernetes Redis Deployment
βοΈ Task 123 - Puppet Manage Services
βοΈ Task 124 - Install Docker Package
βοΈ Task 125 - Environment Variables in Kubernetes
βοΈ Task 126 - Managing ACLs Using Ansible
βοΈ Task 127 - Kubernetes Time Check Pod
βοΈ Task 128 - Deploy Guest Book App on Kubernetes
β Task 129 - Setup Puppet Certs
βοΈ Task 130 - Git Repository Update
βοΈ Task 131 - Deploy Nginx Web Server on Kubernetes Cluster
βοΈ Task 132 - Puppet Create Symlinks
βοΈ Task 133 - Puppet Setup NTP Server
βοΈ Task 134 - Deploy Nagios on Kubernetes
βοΈ Task 135 - Git Merge Branches
βοΈ Task 136 - Ansible File Module
βοΈ Task 137 - Docker Volumes Mapping
βοΈ Task 138 - Git Clone Repositories
βοΈ Task 139 - Create a Docker Image From Container
βοΈ Task 140 - Docker Copy Operations
βοΈ Task 141 - Docker EXEC Operations
βοΈ Task 142 - Deploy Apache Web Server on Kubernetes Cluster
βοΈ Task 143 - Puppet Add Users
βοΈ Task 144 - Git Install and Create Bare Repository
βοΈ Task 145 - Kubernetes Shared Volumes
βοΈ Task 146 - Puppet Setup NTP Server (Repeat task)
βοΈ Task 147 - Ansible Inventory Update (Repeat task)
βοΈ Task 148 - Ansible Basic Playbook (Repeat task)
βοΈ Task 149 - Ansible Setup Httpd and PHP (Repeat task)
βοΈ Task 150 - Create Replicaset in Kubernetes Cluster (Repeat task)
βοΈ Task 151 - Fix Python App Deployed on Kubernetes Cluster (Repeat task)
βοΈ Task 152 - Puppet Install a Package (Repeat task)
βοΈ Task 153 - Puppet Setup NTP Server (Repeat task)
Starting July 2023, the mechanics has been changed. Tasks are no longer provisioned individually, but rather engineers are provided Kodekloud coins which can then be used to unlock a number of tasks. In addition to this, engineers can work on multiple labs on different levels across categories. See updates section above
Level 1
βοΈ Lab 001 - Create a user
βοΈ Lab 002 - Create a group
βοΈ Lab 003 - Create a Linux User with non-interactive shell
βοΈ Lab 004 - Linux User Without Home
βοΈ Lab 005 - Linux User Expiry
βοΈ Lab 006 - Linux User Files
βοΈ Lab 007 - Disable Root Login
βοΈ Lab 008 - Linux Archives
βοΈ Lab 009 - Linux File Permissions
βοΈ Lab 010 - Linux Access Control List
βοΈ Lab 011 - Linux String Substitute
βοΈ Lab 012 - Linux Remote Copy
βοΈ Lab 013 - Cron schedule deny to users
βοΈ Lab 014 - Linux Run Levels
βοΈ Lab 015 - Linux TimeZones Setting
βοΈ Lab 016 - Linux NTP Setup
βοΈ Lab 017 - Linux Firewalld Rules
βοΈ Lab 018 - Linux Resource Limits
βοΈ Lab 019 - Selinux Installation
Level 2
βοΈ Lab 001 - Create a Cron Job
β Lab 002 - Linux Banner
β Lab 003 - Linux Collaborative Directories
β Lab 004 - Linux String Substitute (sed)
β Lab 005 - Linux SSH Authentication
β Lab 006 - Linux Find Command
β Lab 007 - Install a package
β Lab 008 - Install Ansible
β Lab 009 - Configure Local Yum repos
β Lab 010 - Linux Services
β Lab 011 - Linux Configure sudo
β Lab 012 - DNS Troubleshooting
β Lab 013 - Linux Firewalld Setup
β Lab 014 - Linux Postfix Mail Server
β Lab 015 - Linux Postfix Troubleshooting
β Lab 016 - Install and Configure HaProxy LBR
β Lab 017 - Haproxy LBR Troubleshooting
β Lab 018 - MariaDB Troubleshooting
β Lab 019 - Linux Bash Scripts
β Lab 020 - Add Response Headers in Apache
β Lab 021 - Apache Troubleshooting
β Lab 022 - Linux GPG Encryption
β Lab 023 - Linux LogRotate
β Lab 024 - Application Security
Level 3
β Lab 001 - Apache Redirects
β Lab 002 - Install And Configure SFTP
β Lab 003 - Install and Configure Tomcat Server
β Lab 004 - Linux Network Services
β Lab 005 - IPtables Installation And Configuration
β Lab 006 - Linux Nginx as Reverse Proxy
β Lab 007 - Configure protected directories in Apache
β Lab 008 - Linux Process Troubleshooting
β Lab 009 - PAM Authentication For Apache
β Lab 010 - Setup SSL for Nginx
Level 4
β Lab 001 - Install and Configure Nginx as an LBR
β Lab 002 - LEMP Troubleshooting
β Lab 003 - Install and Configure PostgreSQL
β Lab 004 - Bash scripts if/else statements
β Lab 005 - Configure LAMP server
β Lab 006 - Install and Configure DB Server
β Lab 007 - Install and Configure Web Application
β Lab 008 - Install and Configure PHP-FPM
β Lab 009 - Configure Nginx + PHP-FPM Using Unix Sock
Level 1
βοΈ Lab 001 - Git Install and Create Bare Repository
βοΈ Lab 002 - Git Clone Repositories
βοΈ Lab 003 - Git Fork a Repository
βοΈ Lab 004 - Git Repository Update
βοΈ Lab 005 - Git Delete Branches
Level 2
βοΈ Lab 001 - Git Install and Create Repository
βοΈ Lab 002 - Git Create Branches
βοΈ Lab 003 - Git Merge Branches
βοΈ Lab 004 - Git Manage Remotes
βοΈ Lab 005 - Git Revert Some Changes
Level 3
β Lab 001 - Git Cherry Pick
β Lab 002 - Manage Git Pull Requests
β Lab 003 - Git hard reset
β Lab 004 - Git Clean
β Lab 005 - Git Stash
Level 4
β Lab 001 - Git Rebase
β Lab 002 - Manage Git Repositories
β Lab 003 - Resolve Git Merge Conflicts
β Lab 004 - Git Hook
β Lab 005 - Git Setup from Scratch
Level 1
βοΈ Lab 001 - Ansible Basic Playbook
βοΈ Lab 002 - Ansible Inventory Update
βοΈ Lab 003 - Ansible Config File Update
βοΈ Lab 004 - Ansible Copy Module
βοΈ Lab 005 - Ansible File Module
Level 2
βοΈ Lab 001 - Ansible Ping Module Usage
βοΈ Lab 002 - Ansible Install Package
βοΈ Lab 003 - Ansible Archive Module
βοΈ Lab 004 - Ansible Unarchive Module
βοΈ Lab 005 - Ansible Blockinfile Module
Level 3
βοΈ Lab 001 - Creating Soft Links Using Ansible
βοΈ Lab 002 - Managing ACLs Using Ansible
βοΈ Lab 003 - Ansible Manage Services
βοΈ Lab 004 - Ansible Lineinfile Module
βοΈ Lab 005 - Ansible Replace Module
Level 4
βοΈ Lab 001 - Ansible Facts Gathering
βοΈ Lab 002 - Ansible Create Users and Groups
βοΈ Lab 003 - Managing Jinja2 Templates Using Ansible
βοΈ Lab 004 - Ansible Setup Httpd and PHP
βοΈ Lab 005 - Using Ansible Conditionals
Level 1
βοΈ Lab 001 - Install Docker Package
βοΈ Lab 002 - Run a Docker Container
βοΈ Lab 003 - Docker Delete Container
βοΈ Lab 004 - Docker Copy Operations
βοΈ Lab 005 - Docker Container Issue
Level 2
βοΈ Lab 001 - Pull Docker Image
βοΈ Lab 002 - Docker Update Permissions
βοΈ Lab 003 - Create a Docker Image From Container
βοΈ Lab 004 - Docker EXEC Operations
βοΈ Lab 005 - Write a Docker File
Level 3
βοΈ Lab 001 - Create a Docker Network
βοΈ Lab 002 - Docker Volumes Mapping
βοΈ Lab 003 - Docker Ports Mapping
βοΈ Lab 004 - Save, Load and Transfer Docker Image
βοΈ Lab 005 - Write a Docker Compose File
Level 4
β Lab 001 - Resolve Dockerfile Issues
β Lab 002 - Resolve Docker Compose Issues
β Lab 003 - Deploy an App on Docker Containers
β Lab 004 - Docker Node App
β Lab 005 - Docker Python App
Level 1
βοΈ Lab 001 - Create Pods in Kubernetes Cluster
βοΈ Lab 002 - Create Deployments in Kubernetes Cluster
βοΈ Lab 003 - Create Namespaces in Kubernetes Cluster
βοΈ Lab 004 - Set Limits for Resources in Kubernetes
βοΈ Lab 005 - Rolling Updates in Kubernetes
βοΈ Lab 006 - Rollback a Deployment in Kubernetes
βοΈ Lab 007 - Create Replicaset in Kubernetes Cluster
βοΈ Lab 008 - Create Cronjobs in Kubernetes
βοΈ Lab 009 - Countdown job in Kubernetes
βοΈ Lab 010 - Kubernetes Time Check Pod
βοΈ Lab 011 - Troubleshoot Issue With Pods
βοΈ Lab 012 - Update an Existing Deployment in Kubernetes
βοΈ Lab 013 - ReplicationController in Kubernetes
βοΈ Lab 014 - Fix Issue with VolumeMounts in Kubernetes
Level 2
βοΈ Lab 001 - Kubernetes Shared Volumes
βοΈ Lab 002 - Kubernetes Sidecar Containers
βοΈ Lab 003 - Deploy Nginx Web Server on Kubernetes Cluster
βοΈ Lab 004 - Print Environment Variables
βοΈ Lab 005 - Rolling Updates And Rolling Back Deployments in Kubernetes
βοΈ Lab 006 - Deploy Jenkins on Kubernetes
βοΈ Lab 007 - Deploy Grafana on Kubernetes Cluster
βοΈ Lab 008 - Deploy Tomcat App on Kubernetes
βοΈ Lab 009 - Deploy Node App on Kubernetes
βοΈ Lab 010 - Troubleshoot Deployment issues in Kubernetes
βοΈ Lab 011 - Fix issue with LAMP Environment in Kubernetes
Level 3
βοΈ Lab 001 - Deploy Apache Web Server on Kubernetes Cluster
βοΈ Lab 002 - Deploy Lamp Stack on Kubernetes Cluster
βοΈ Lab 003 - Init Containers in Kubernetes
βοΈ Lab 004 - Persistent Volumes in Kubernetes
βοΈ Lab 005 - Manage Secrets in Kubernetes
βοΈ Lab 006 - Environment Variables in Kubernetes
βοΈ Lab 007 - Kubernetes LEMP Setup
βοΈ Lab 008 - Kubernetes Troubleshooting
βοΈ Lab 009 - Deploy Iron Gallery App on Kubernetes
βοΈ Lab 010 - Fix Python App Deployed on Kubernetes Cluster
Level 4
βοΈ Lab 001 - Deploy Redis Deployment on Kubernetes
βοΈ Lab 002 - Deploy MySQL on Kubernetes
βοΈ Lab 003 - Kubernetes Nginx and PhpFPM Setup
βοΈ Lab 004 - Deploy Drupal App on Kubernetes
βοΈ Lab 005 - Deploy Guest Book App on Kubernetes
Level 1
βοΈ Lab 001 - Jenkins Installation
βοΈ Lab 002 - Jenkins Plugins
βοΈ Lab 003 - [Jenkins Create Users](./Tasks_Jenkins/Le vel_1/Lab_003_Jenkins_Create_Users.md)
βοΈ Lab 004 - Jenkins Folders
β Lab 005 - Jenkins Install Packages
Level 2
β Lab 001 - Jenkins Views
β Lab 002 - Jenkins Parameterized Builds
β Lab 003 - Jenkins Workspaces
β Lab 004 - Jenkins Database Backup Job
β Lab 005 - Jenkins Scheduled Jobs
Level 3
β Lab 001 - Jenkins Slave Nodes
β Lab 002 - Jenkins Project Security
β Lab 003 - Jenkins Build Images
β Lab 004 - Jenkins Deploy Pipeline
β Lab 005 - Jenkins Conditional Pipeline
Level 4
β Lab 001 - Jenkins Deployment Job
β Lab 002 - Jenkins Chained Builds
β Lab 003 - Jenkins MR Jobs
β Lab 004 - Jenkins Multistage Pipeline
β Lab 005 - Jenkins Setup Node App