first, learn at a high level what is DevOps: https://aws.amazon.com/devops/what-is-devops/
i'm gonna be strongly opinionated and direct your learning towards Linux, since companies that are based on Linux tend to be better places to work for IT folks. that said, you'll want to setup a Linux virtual machine to play in. follow this tutorial to setup your sandbox: https://brb.nci.nih.gov/seqtools/installUbuntu.html after that, we can get started with the actual learning.
- Linux Basics for Beginners: https://www.udemy.com/course/linux-basics-for-beginners/
- Shell Scripting basics: https://www.tutorialspoint.com/unix/shell_scripting.htm
after these courses, i recommend writing up some scripts to do random/useful things.
- Git basic skills https://www.simplilearn.com/learn-git-basics-skillup
- Git branching strategies
- Git flow: https://www.gitkraken.com/learn/git/git-flow
- Github flow: https://githubflow.github.io/
- Gitlab flow: https://docs.gitlab.com/ee/topics/gitlab_flow.html
- Conventional Commits (not required, but good practice): https://www.conventionalcommits.org/en/
after these, track your scripts in a Git repository and put it up on Github or Gitlab or BitBucket. get used to working in this area.
- What is automated testing? https://www.educba.com/what-is-automated-testing/
- Write some new scripts to test that the scripts you wrote previously work properly
- What is CI/CD? https://www.redhat.com/en/topics/devops/what-is-ci-cd
- Get started with CircleCI https://circleci.com/docs/2.0/ (CircleCI is just one of many, many options. shop around if you want)
at this point, you have valuable skills. these things are pretty basic, but many teams still need them
now let's do some infrastructure stuff
- getting started with docker https://docs.docker.com/get-started/overview/
- learn docker https://www.docker.com/101-tutorial
at this point, you can branch out into cloud or on-premise. cloud is more in demand, but on-premise is cheaper to learn because you have a computer already. i'll link some resources for both. be aware that this next step is huge. you're not expected to know everything, but some familiarity is necessary. you can go deeper in projects / on the job.
- (Cloud) AWS https://aws.amazon.com/getting-started/
- (Private/On-premise Cloud; less common) OpenStack https://docs.openstack.org/xena/
- you may want to pick up Vagrant to easily setup and teardown many virtual machines to do on-premise stuff with: https://www.vagrantup.com/
- (On-premise) Ansible getting started https://www.ansible.com/resources/get-started
now, you'll need to learn the big, scary one: Kubernetes (or k8s for short). if you can master this, you basically win.
- Kubernetes documentation site: https://kubernetes.io/docs/home/
- Kubeadm for installing Kubernetes on-premise https://kubernetes.io/docs/reference/setup-tools/kubeadm/
- bear in mind that if you're doing cloud, cloud providers have a managed version of kubernetes that saves you the immense pain of installing it yourself
- i happened to setup a repository that sets up some Vagrant servers, installs Kubernetes on them with Ansible, and installs Kubernetes with kubeadm https://github.com/TheBeege/kubeadm-ansible be aware that it's old at this point, so you may need to fix up some parts. (i'd love a PR if you fix anything)
- Helm https://helm.sh/docs/ this is a packaging system for Kubernetes
at this point, you're really valuable!
monitoring time!
learn about the elastic stack (ElasticSearch, Logstash, and Kibana [ELK]) for collecting logs and monitoring: https://www.elastic.co/guide/index.html learn about Prometheus for collecting app metrics: https://prometheus.io/docs/introduction/overview/ and grafana for visualizing metrics https://grafana.com/
at this point, your pretty awesome, but there's still plenty more to branch out!