Skip to content

Instantly share code, notes, and snippets.

@KSiig
Created April 11, 2019 16:51
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save KSiig/7373cad8aa4b176a40bc51135919a1f8 to your computer and use it in GitHub Desktop.
Save KSiig/7373cad8aa4b176a40bc51135919a1f8 to your computer and use it in GitHub Desktop.
There are few places to start. If you're not experienced with linux, I highly recommend starting with this course:
https://eu.udacity.com/course/linux-command-line-basics--ud595
Even if you are familiar with linux, but (like me) have learned by doing, I still recommend starting with it. It has some great little tips.
Then you can move on to Docker. If you have some old projects, try turning them into Docker containers. Now that you've done that, set up a docker-compose.yaml file. If you haven't heard of it, you should look into 'Docker-Compose'.
Working with docker-compose, you'll get used to the idea of bringing up your entire infrastrucure with a single command. 'docker-compose up -d' in this case.
That is probably one of the most critical ideas in a DevOps mindset: Infrastructure as Code. Personally I have a goal that I should be able to bring up all my infrastructure, in less than 10 commands, and with the tools available today, that's actually realistic. Anyway, let's move on.
Once you are comfortable with docker and docker-compose, there are many ways you can go. One thing that will help you in almost anything you do, is networking knowledge. If you don't have any prior training in network, I highly suggest you find some. Here's a list of what I think is not necessary, but can really help understand some weird problems:
- subnetting
- ip routes
- DNS
- Layer 2 and 3 in the OSI networking model
Again, they are not necessary, but can give you a huge advantage. Here are some troubleshooting tools that can also help debug networking problems:
- ping
- curl
- traceroute
Here is where you will get to the real divider. Do you want to work with the more Dev oriented side of DevOps, or do you want the more Operations side of DevOps? Personally I like the Dev oriented side more, so here's how I've progressed:
Learn about CI/CD (Continous Integration/Continuos Delivery). This is the heart and soul of a good DevOps setup. You can do so many things, but if you don't have CI/CD, you are severely hindered in how much progress you can make.
When you know what CI/CD is, and maybe even have tried setting it up, you can move onto Kubernetes. No respectable company will just use plain Docker in production. You have to use some kind of orchestrator, which is exactly what Kubernetes is (and probably one of the most popular right now). It takes care of monitoring your services, health checking, starting new container if the old one dies and so on.
Once you've spent a long time learning Kubernetes, you can try setting up your CI/CD pipeline on a Kubernetes cluster. When you're at that point, you should start looking into making Helm packages. Helm is the package manager for Kubernetes. Just like you would use apt, npm, yarn, pip. Helm is just a repository of packages.
If that isn't as exciting to you, there's also the more Operations oriented side of it. I haven't personally ventured much into it, so take what I'm saying with a grain of salt, but here's what I've gathered.
Sticking with the Infrastructure as Code mindset, you'll need tools to bring up your entire infrastructure with just a few commands. To 'simply' bring up your servers, there's are two popular tools: Terraform and Vagrant.
Terraform is a tool that will help you set up resources on a number of Cloud Providers (AWS, GCP, Azure etc.). This is what most people use, since it'll set up many different kind of resources at once, whereas Vagrant is more focused on one server.
Vagrant defines what is called a Vagrantfile. This file defines a virtual machine, and different settings in it. This is great if you haven't worked much with virtualization, and want a relatively easy start into it. Can't say for sure, but it seems more people are using Terraform instead of Vagrant, seeing as how Terraform is focused on cloud providers.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment