Skip to main content

What does "DevOps" mean to me?

These opinions are simply opinions. I know that everyone has a different idea of what DevOps is. My hope in this blog post is to help educate others and share with the community.

A few months ago I decided to take a week off and rent a beach house with my son for his first long vacation. As I'm sitting here at 6:30AM, breakfast in front of me and waiting for the little guy to wake up. I got to thinking "what does DevOps mean to me".

What is the role?

What is the role of DevOps? It's a lot different than other technology-related positions. Backend developers write code for the backend application. Sysadmins manage the systems in the environment. Security admins manage the compliance and in most cases blue team for organization. Of course these positions have MUCH more going on than just a simple one sentence. All three of these jobs are incredibly needed throughout all organizations. My point to bringing them up was DevOps isn't just a role. DevOps is practicing a methodology and spreading it across the organization. To me, I don't think you "do a DevOps role". I think you "Practice a DevOps Role".

Ship the product

What does "ship the product" mean? Well this is where A LOT of DevOps practices come in. Shipping the product could be ANY of your products. It could be the software that your organization writes to push out to the world. It could be the application written internally for the finance department. It could be spinning up environments for the database team. DevOps isn't just about making release pipelines and using Infrastructure-As-Code. It's about bringing all teams together to have the fastest way to "ship the product" throughout the organization and for everyone in the organization.


Automation is something that is a crucial tool to DevOps. How else would we ship our product so fast to ensure we're practicing DevOps methodologies? Automation can come in many flavors. This could be your Infrastructure As Code (for example Ansible). This could be your software development practices with things like PowerShell, Python, the AZ CLI, etc.(I say Software Development practices in the sense of the way you plan a piece of software, how it should be written and how it should be tested). Without automation, your ability to deliver the product would be slower and more of a manual task.

Knowing the business

Knowing the business in my opinion is one of the biggest goals that you should set for yourself. Without knowing the business, you don't know what product you should be shipping and what's the most critical thing to be shipping at that time. There could be technology goals within the department (implementing new tools, updating practices, making things more efficient) but that may not be what the business needs to keep the lights on. The key to practicing DevOps is understanding what your environment needs to thrive and what your organization needs to not only grow, but to keep the engine running.

DevOps is not the tools you use

If someone gives you a hammer, nails, and says to build them a house, what built the house? The hammer and nails or the person using those tools? The person using the tools. Sure the tools were absolutely necessary and perhaps you couldn't do it without those tools, but it's the person wielding those tools that builds the house. Your tools are important but the way you decide to use those tools are more important.


Now we're at the tooling. Without the tooling you can't properly ship your product. Without the tools to automate you can't ship the product fast and efficiently. Without knowing the business you don't know what tools will be best suited for your organization. I'm going to provide a list of tools that I believe are the leaders in the industry right now. You're encouraged to research these tools.

1) Infrastructure-As-Code: Terraform, Ansible ARM Templates, and CloudFormation templates are the most popular at the time of writing this. Organizations are also starting to use AZ CLI to replace ARM templates.

2) CI/CD: The most popular at this time is Jenkins. It's the standard at the moment. More and more organizations are moving towards Gitlab CI and Azure DevOps. I also wanted to point out just because Azure DevOps is a Microsoft product doesn't mean you can only use it with Microsoft products. You can use Azure DevOps to push to AWS as well.

3) Scripting/Software Development. I would say for DevOps the three biggest programming languages are Python, PowerShell, and Ruby. This is because of the ease of use to implement for automation. For DevOps in general you should have a basic understanding of software development. You don't have to know how to write an application. You just have to have an understanding of what the code is doing. You should absolutely know how to script though.

4) Cloud based technology: AWS, Azure, or both. You will see at least one of these in your organization. If you don't, you may be using VMWare ESXi or Microsofts Hyper-V which isn't bad to know either. I personally love virtualization and my home server proves that.

5) Containerization: Containers and implementing micro services is growing rapidly. With VM's you still need things like licenses, specific amount of RAM, specific amount of CPU, specific amount of hard drive space, etc. With containers, it shares the kernel of the host and also shares resources at the level that you don't have to specify what hardware resources will go to the container (although you could do this). This biggest containerization platform right now would be Docker. Docker brought an ease-of-use to the world. Containers were around way before that. If you're interested, check out LXC (Linux Containers). It's actually shipped with Linux by default.

6) Orchestration: To manage your containers, you should be using some sort of orchestration. Orchestration is simply the way you manage containers at scale. It still uses the Docker engine underneath (although, there has been talk of a certain orchestration system moving to containerd). The biggest orchestration system in the space is Kubernetes. Docker Swarm is quite good too in my opinion and does many of the things that Kubernetes does. 

7) Source control: Learn Git. Git is the standard in all source control. This essentially allows the ability to manage code in a centralized location and control/monitor how the code is changed. Git flow is also very important to understand. This will allow your organization to be on the same page with how to commit code, where to commit it, and how to review it.

8) Monitoring: Understanding how to monitor not only your infrastructure, but down to an application level. Prometheus and Nagios are very good at monitoring down to the container level and the binaries running within your container. Understanding proper altering is key to your business succeeding. 


  1. Great summarization - excellent point regarding Infrastructure-as-Code.


Post a Comment

Popular posts from this blog

Run PowerShell code with Ansible on a Windows Host

Ansible is one of the Configuration Manager kings in the game. With it's easy-to-understand syntax and even easier to use modules, Ansible is certainly a go-to when you're picking what Configuration Management you want to use for your organization. Your question may be "but Ansible is typically on Linux and what happens when I'm in a Windows environment?". Luckily I'm here to tell you that Ansible will still work! I was pleasantly surprised with how easy it is to use Ansible on Windows with a little WinRM magic. Let's get started.

Pre-requisites for this post:
1) WinRM set up to connect to your Windows host from Ansible
2) Ansible set up for Windows Remote Management
3) SSH access to the Ansible host
4) Proper firewall rules to allow WinRM (port 5985) access from your Ansible host to your Windows host
5) Hosts file set up in Ansible that has your IP or hostname of your Windows Server.
6) At least one Linux host running Ansible and one Windows Server host …

Running PowerShell commands in a Dockerfile

As Docker continues to grow we are starting to see the containerization engine more and more on Windows. With the need for containers on Windows, we also need the same automation we get in Linux with Dockerfiles. Today we're going to create a Dockerfile that runs PowerShell cmdlets.
Prerequisites; 1. Docker for Windows
2. A code editor (VSCode preferred)

Let's go ahead and get our Dockerfile set up. Below is the Dockerfile I used for this post.

from MAINTAINER Michael Levan RUN powershell -Command Install-WindowsFeature -Name Web-Server RUN powershell -Command New-Item -Type File -Path C:\ -Name config
As you can see from the above, this is a tiny Dockerfile. What this will do is install the IIS Windows 

Feature and create a new file in C:\ called "config".
You should see something very similar to the below screenshot;

Next let's create a running container out of our image. First we'll need to run docker container ls to

 get o…

DevOps tooling in the Microsoft realm

When I really started to dive into automation and practicing DevOps with specific tooling, there were a few key players. At the time Microsoft was not one of them. They were just starting to embrace the open source world, including the art and practice of DevOps. Since then Microsoft has went all in and the tech giant has made some incredible tooling. Recently I switched to a Microsoft-heavy environment and I love it. I went from AWS/Python/Ansible/Jenkins to Azure/PowerShell/ARM/Azure DevOps. My first programming language was PowerShell so being back in the saddle allowed me to do a full circle between all of the different types of tooling in both worlds. Today I want to share some of that tooling with you.

The first thing I want to talk about is ARM. What is ARM? ARM is a configuration management tool that allows you to perform software-defined-infrastructure. Much like Ansible and Terraform, ARM allows you to define what you want your environment to look like at scale. With ARM, yo…