Home

Awesome

<p align="center"><img src="images/devops_resources.png"/></p>

:information_source:  This repository is about gathering any useful resources and information regarding DevOps and secondly, provide some roadmap for those who want to practice DevOps.

:pencil:  Feel free to add more resources by submitting pull requests


<!-- ALL-TOPICS-LIST:START --> <!-- prettier-ignore-start --> <!-- markdownlint-disable --> <center> <table> <tr> <td align="center"><a href="#devops"><img src="images/devops.png" width="70px;" height="75px;" alt="DevOps" /><br /><b>DevOps</b></a></td> <td align="center"><a href="resources/jenkins/README.md"><img src="images/jenkins.png" width="70px;" height="85px;" alt="Jenkins"/><br /><b>Jenkins</b></a></td> <td align="center"><a href="resources/git.md"><img src="images/git.png" width="75px;" height="75px;" alt="Git"/><br /><b>Git</b></a></td> <td align="center"><a href="resources/ansible.md"><img src="images/ansible.png" width="65px;" height="75px;" alt="Ansible"/><br /><b>Ansible</b></a></td> <td align="center"><a href="resources/network.md"><img src="images/network.png" width="80x;" height="75px;" alt="Network"/><br /><b>Network</b></a></td> <td align="center"><a href="resources/linux.md"><img src="images/linux.png" width="75x;" height="75px;" alt="Linux"/><br /><b>Linux</b></a></td> <td align="center"><a href="resources/terraform.md"><img src="images/terraform.png" width="75px;" height="75px;" alt="Terraform"/><br /><b>Terraform</b></a></td> </tr> <tr> <td align="center"><a href="resources/coding.md"><img src="images/coding.png" width="75px;" height="75px;" alt="coding"/><br /><b>Coding</b></a></td> <td align="center"><a href="resources/python.md"><img src="images/python.png" width="70px;" height="75px;" alt="Python"/><br /><b>Python</b></a></td> <td align="center"><a href="resources/go.md"><img src="images/go.png" width="80px;" height="75px;" alt="Go"/><br /><b>Go</b></a></td> <td align="center"><a href="resources/bash.md"><img src="images/bash.png" width="70px;" height="75px;" alt="Bash"/><br /><b>Shell Scripting</b></a></td> <td align="center"><a href="resources/kubernetes.md"><img src="images/kubernetes.png" width="75px;" height="75px;" alt="kubernetes"/><br /><b>Kubernetes</b></a></td> <td align="center"><a href="resources/victoriametrics.md"><img src="images/victoriametrics.png" width="64px;" height="75px;" alt="VictoriaMetrics"/><br /><b>VictoriaMetrics</b></a></td> <td align="center"><a href="resources/prometheus.md"><img src="images/prometheus.png" width="75px;" height="75px;" alt="Prometheus"/><br /><b>Prometheus</b></a></td> <td align="center"><a href="resources/mongo.md"><img src="images/mongo.png" width="75px;" height="75px;" alt="Mongo"/><br /><b>Mongo</b></a></td> </tr> <tr> <td align="center"><a href="resources/cloud.md"><img src="images/cloud.png" width="90px;" height="85px;" alt="Cloud"/><br /><b>Cloud</b></a></td> <td align="center"><a href="resources/aws.md"><img src="images/aws.png" width="100px;" height="75px;" alt="AWS"/><br /><b>AWS</b></a></td> <td align="center"><a href="resources/azure.md"><img src="images/azure.png" width="80px;" height="75px;" alt="azure"/><br /><b>Azure</b></a></td> <td align="center"><a href="resources/gcp.md"><img src="images/gcp.png" width="75px;" height="75px;" alt="gcp"/><br /><b>Google Cloud Platform</b></a></td> <td align="center"><a href="resources/openstack.md"><img src="images/openstack.png" width="75px;" height="75px;" alt="openstack"/><br /><b>OpenStack</b></a></td> <td align="center"><a href="resources/security.md"><img src="images/security.png" width="75px;" height="75px;" alt="security"/><br /><b>Security</b></a></td> <td align="center"><a href="resources/puppet.md"><img src="images/puppet.png" width="75px;" height="75px;" alt="puppet"/><br /><b>Puppet</b></a></td> </tr> <tr> <td align="center"><a href="resources/elk.md"><img src="images/elk.png" width="75px;" height="75px;" alt="ELK"/><br /><b>ELK</b></a></td> <td align="center"><a href="resources/dataops.md"><img src="images/dataops.png" width="75px;" height="75px;" alt="ELK"/><br /><b>DataOps</b></a></td> <td align="center"><a href="resources/openshift.md"><img src="images/openshift.png" width="75px;" height="75px;" alt="OpenShift"/><br /><b>OpenShift</b></a></td> <td align="center"><a href="resources/sql.md"><img src="images/sql.png" width="75px;" height="75px;" alt="sql"/><br /><b>SQL</b></a></td> <td align="center"><a href="resources/containers.md"><img src="images/containers.png" width="75px;" height="75px;" alt="Containers"/><br /><b>Containers</b></a></td> </tr> </table> </center> <!-- markdownlint-enable --> <!-- prettier-ignore-end --> <!-- ALL-TOPICS-LIST:END -->

<a name="devops"></a>

DevOps

DevOps Roadmap

The must list

TopicWhat to learnAlternativesDescription
Version ControlGit-Version Control is used everywhere and Git is the leading version control technology
ProgrammingAt least one programming languageNone. Don't settle for learning only shell scriptingAnyone who practice DevOps should know programming to some extent
Operating SystemLinuxOther distribution of Linux :DOperating Systems is another must when it comes to DevOps
ProtocolsDHCP, UDP, TCP, HTTP, SSHNot as an alternative, you can simply learn later: NFS, NTP, FTPLearn how these protocols work and what they are used for
ApplicationsWeb Server, Load Balancer, Cache, DatabaseLearn how they work and try out some implementations (e.g. MySQL for databases and httpd for web servers)
System DesignAvailability, Reliability, Scalability, PerformanceLearn how to design infrastructure and systems

The second must list :) Seriously though, don't try to master everything in this list and start with something that you are interested in. The order has no meaning in this case.

TopicWhat to learnAlternativesDescription
Configuration Management and IaCAnsible and TerraformCM: Chef, Puppet and Salt. IaC: Pulumi and CloudFormation
CloudAzure, AWS, GCP-
ContainersPodman and KubernetesDocker instead of Podman. Nomad instead of Kubernetes
CI/CDJenkins, GitHub ActionsGitlab CI, Circle CI, Argo CD
Logging and DashboardsElastic Stack, Report Portal, GrafanaGraylog, Splunk
MonitoringVictoriaMetrics, PrometheusNagios, Centreon, Datadog

Alternative Roadmaps

There are other DevOps roadmaps and learning plans out there. If you feel the one above is little bit too much or just want to look at other options, maybe you'll find the following useful

NameDescription
DevOps RoadmapDevOps skills roadmap. What to to learn at each step.
DevOps 3 Weeks PlanDetailed plan on what to do at each day
How to Become a DevOps Engineer in Six Months?Skills you need to become DevOps Engineer

Learn about DevOps

NameDescription
What is DevOps? - AmazonLearn what is DevOps by Amazon and which AWS services can help you to practice DevOps
What is DevOps? - Red HatLearn what is DevOps by Red Hat, including many interesting articles
What is DevOps? - MicrosoftLearn what is DevOps by Microsofy, including Azure DevOps service
What is DevOps? - GoogleLearn what is DevOps by Google
Who is DevOps? - SpaceliftWho is DevOps? Is it Worth it to Become a DevOps Engineer?

Learn Git

Make sure you are comfortable with the following list once you done learning Git basics

NameDescription
Interactive Git Branching LearningVisual and interactive way to learn Git branching
Learn git concepts, not commandsArticle on Git concepts
Codeacademy Learn GitNot Free

Programming

Practicing DevOps without knowing programming is like eating cornflakes with ketchup - it's just doesn't makes sense (yes, my analogies are the worst).<br> Here is a list of some good sites to practice programming in general:

NameComments
HackerRankPractice Coding skills
ExercismOver 48 languages and 2600 exercises
LeetCodePractice programming online

A better approach might be to actually write some DevOps related scripts or projects. Start simple. Here are some ideas:

Operating Systems

Deep dive into operation system internals. Linux should be your first choice. Here is a list of resources that will help you learn Linux.<br> Also, don't waste a second on picking the right distribution. For learning OS concepts and internals, any distribution would work fine.

NameComments
Linux JourneyWritten guides + exercises + quiz
Techmint LinuxWritten articles/lessons
Linux SurvivalInteractive guide

Once you are familiar with the commands and feel comfortable enough to keep deep diving, learn some OS concepts:

Linux Master Application

A completely free application for testing your knowledge on Linux

<a href="https://play.google.com/store/apps/details?id=com.codingshell.linuxmaster"><img src="images/linux_master.jpeg"/></a>

System Design

System Design can be a complex topic. For that reason, I've created a separate repository for you to learn it properly.

<p align="center"><a href="https://github.com/bregman-arie/system-design-notebook"><img src="images/system_design_notebook.png"/></a></p>

Tooling, Apps & Services

NameDescription
Periodic table of DevOps toolsTable of DevOps tools per category
DevOps tool chestList of DevOps tools
DevOps BookmarksNSIA
CNCF Cloud Native Interactive LandscapeCNCF's recommended path through the cloud native landscape
DevOpsBookmarksTo discover tools in the devops landscape.

Interactive practice and learning sites

Learning by doing proved to be a very effective way to learn new things. If you are at a point where you don't feel comfortable enough to do it by yourself and you look for some guidance, the following sites might assist you

NameDescription
Kodekloud Engineerperform real tasks by working in a fictional organization
QWIKLBASAWS, GCP, ... lab practice

Community

Another great way to learn is to learn from the experience of others. For that, the are some excellent DevOps communities.

NameComments
Reddit DevOpsReddit DevOps Community
Linkedin DevOpsLinkedin DevOps Community
DevOps BitsFacebook DevOps group. Disclosure: I started it :)

Conferences

NameComments
DevOpsDaysDevOps Conferences around the world
VelocityOracle's DevOps conference

Books

Read book! Practice is important and the best way to learn practical things but reading about cultures, methods, concepts, ... has its own important role in your path towards mastering DevOps and SRE.

NameComments
The Phoenix ProjectDevOps explained through a story of a fictional company on the brink of a failure
The DevOps Handbook
Google SRE booksVery detailed books on the theory and also practice of SRE
Essential Infrastructure as CodeVBook about automating software infrastructure by capturing desired configurations as a set of scripts.

Blogs & News

My top picks:

NameDescription
Codefresh BlogProbably best GitOps content out there

Other DevOps & Software Engineering related blogs

NameDescription
Spacelift BlogExcellent tech blog on Kubernetes, Ansible, Terraform and Engineering in general
opensource.comopen source related articles including DevOps
CooperPressvarious newsletters on different topics
afreshcup"covering Ruby on Rails and whatever else I find interesting in the universe of software"
thisweekindevops.com"DevOps news without the hype"
Uber EngineeringNot only DevOps
Azure DevOps BlogMicrosoft DevOps Blog
DevOps Dudes"Shortening the system development life cycle"
Netflix Tech BlogNot Only DevOps
CloudBees Blog
Red Hat BlogNot only DevOps
Atlassian DevOps Blog
Facebook Engineering BlogNot only DevOps
DoorDash Engineering BlogNot only DevOps
Palark tech blogTech blog dedicated to DevOps & SRE

Articles

NameDescription
Infrastructure as Code, Part One
DevOps Best PracticesWhat is DevOps + list of resources
Infrastructure as Code: Examples, Best Practices & Tools

DevOps Snippets

NameDescription
DevOpsnippSharing DevOps Snippets
GistNot DevOps specific

Other Great Projects

NameComments
DevOps Wiki"A wiki of Devops Tools, Tutorials and Scripts"
cheat-sheet-pdf"Cheat-Sheet Collection for DevOps, Engineers, IT and more"
System Design Primer"Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards."
awesome-sreA curated list of Site Reliability and Production Engineering resources

Interview Questions

NameComments
System Design Primer"Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards."
kdn251Interviews
DevOps ExercisesBy topic, DevOps related questions and exercises

Misc

NameDescription
CheatSheetsCheatSeets for Kubernetes, Jenkins, YAML, Groovy, etc.
Codelabs"Codelabs provide a guided, tutorial, hands-on coding experience"

Design & Architecture

NameDescription
The 12 Factor Appmust-read in my opinion
A distributed Systems Reading List

DevOps Tooling

Note: "Provisioning" tools can be used to perform configuration management to some extent. The same applies for configuration management tools, which can be used for pprovisioning.

Monitoring

More Infra & DevOps projects

<p align="center"><a href="https://github.com/bregman-arie/sre-checklist"><img width="500px" src="images/sre_checklist.png"/></a></p> <p align="center"><a href="https://github.com/bregman-arie/howtheydevops"><img src="images/how_they_devops.png"/></a></p> <p align="center"><a href="https://github.com/bregman-arie/devops-exercises"><img src="images/devops_exercises.png"/></a></p> <p align="center"><a href="https://github.com/bregman-arie/infraverse"><img src="images/infraverse.png"/></a></p>

Credits

Images and icons attribution can be found here

License

License: CC BY-NC-ND 3.0