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 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 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 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 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 1
☐ Lab 001 - Jenkins Installation
☐ Lab 002 - Jenkins Plugins
☐ Lab 003 - Jenkins Create Users
☐ Lab 004 - Jenkins Folders
☐ Lab 005 - Jenkins Install Packages