DEV Community

Cover image for Solved: What else could i be doing in excel?
Darian Vance
Darian Vance

Posted on • Originally published at wp.me

Solved: What else could i be doing in excel?

🚀 Executive Summary

TL;DR: Managing critical infrastructure like firewall rules and server inventories in Excel poses significant risks due to lack of version control, audit trails, and data stagnation. The solution involves moving towards professional DevOps tools and practices, starting with Git for basic versioning and progressing to Infrastructure as Code (IaC) tools like Ansible or dynamic discovery via cloud APIs for scalable, auditable, and automated systems.

🎯 Key Takeaways

  • Using spreadsheets for infrastructure management creates operational risk by lacking version control, audit trails, and promoting data stagnation and manual toil.
  • A pragmatic first step to improve infrastructure tracking is to store structured data (e.g., CSV) in a Git repository to gain versioning, an audit trail, and enable peer review via Pull Requests.
  • For permanent solutions, adopt Configuration Management tools like Ansible to define desired state, or leverage cloud provider APIs with disciplined tagging for dynamic inventory discovery in ephemeral, cloud-native environments.

Stop managing your infrastructure with spreadsheets. Learn why this common practice is a huge risk and discover the professional DevOps tools and methods you should be using for a scalable, auditable, and automated system.

I Found Our Production Firewall Rules in an Excel File, and I Nearly Had a Heart Attack

I’m not kidding. A few years back at a previous gig, I was trying to debug a weird network connectivity issue between our new microservice and the legacy prod-db-01 cluster. After an hour of chasing my tail, I asked a senior network admin where I could find the definitive list of firewall rules. He pointed me to a network share: S:\IT\Network\firewall\_rules\_MASTER\_v3\_final\_USE\_THIS\_ONE.xlsx. My blood ran cold. The single source of truth for our entire production security posture was a spreadsheet with no version history, no audit trail, and a filename that screamed “danger”. That was the day I started my crusade against running infrastructure on Excel.

I see this question pop up on forums like Reddit all the time: “What else could I be doing in Excel?” People are using it to track servers, manage IP addresses, list user permissions, and even store secrets. And I get it. Excel is familiar, it’s installed everywhere, and it feels like a quick way to get organized. But you’re building a house of cards on a shaky foundation. You’re one accidental ‘delete’ key press away from a major outage.

The Real Problem: Spreadsheets Aren’t Databases

The core issue is that we’re using a tool designed for financial modeling and data analysis to manage critical, stateful infrastructure information. This approach is fundamentally flawed for a few key reasons:

  • No Version Control: Who changed the IP for qa-web-app-03? When? Why? With an Excel file, you’ll never know.
  • No Audit Trail: In a post-breach analysis, being able to prove who had access and who made changes is non-negotiable for compliance and security. A spreadsheet offers you none of that.
  • Data Stagnation: The data is stale the second you save the file. The server you just documented might have been deprovisioned by an autoscaling group two minutes later.
  • It Encourages Manual Toil: Every time you need to update something, you’re manually opening a file, finding a row, and typing. This is slow, tedious, and incredibly error-prone.

You’re not just creating technical debt; you’re creating operational risk. It’s time to move up the maturity ladder. Here’s how we do it.

The Path Forward: From Spreadsheets to Sanity

Getting your team off the “Excel as a CMDB” train isn’t a single step, it’s a journey. I’m not going to tell you to boil the ocean and implement a million-dollar system overnight. Let’s be realistic. Here are three pragmatic steps you can take, from a quick fix to a permanent solution.

Solution 1: The Quick Fix (Get it in Git)

If you do nothing else, do this. The immediate goal is to get versioning and an audit trail. Take the data from your spreadsheet and save it as a structured text file—like a CSV (Comma-Separated Values) or a Markdown table—and commit it to a Git repository.

Yes, it’s still a flat file. Yes, it can still get out of date. But now, every single change is captured in a commit. You have a history. You can see who changed what and when. You can even use Pull Requests to have a review process before changes are merged.

# Filename: server_inventory.csv
hostname,ip_address,environment,os,owner
prod-api-gateway-01,10.1.5.10,production,Ubuntu 22.04,team-alpha
prod-api-gateway-02,10.1.5.11,production,Ubuntu 22.04,team-alpha
staging-db-01,10.2.8.50,staging,Ubuntu 20.04,team-bravo
Enter fullscreen mode Exit fullscreen mode

Pro Tip: This is a “hacky” but incredibly effective first step. It introduces the concepts of version control and peer review to your operations team without requiring them to learn a whole new, complex system. It’s the perfect stepping stone.

Solution 2: The Permanent Fix (Use the Right Tool)

The next level of maturity is to stop documenting what you have and start defining what you want. This is the world of Configuration Management and Infrastructure as Code (IaC). Instead of a CSV, your source of truth becomes a definition file that a tool can use to actually build and configure your environment.

For configuration management, a tool like Ansible is perfect. Its inventory file is human-readable (INI or YAML format) and lets you group hosts and assign variables. It’s not just a list; it’s an actionable inventory.

# Filename: inventory.ini
[webservers]
prod-api-gateway-01 ansible_host=10.1.5.10
prod-api-gateway-02 ansible_host=10.1.5.11

[databases]
staging-db-01 ansible_host=10.2.8.50

[ubuntu:children]
webservers
databases
Enter fullscreen mode Exit fullscreen mode

This inventory file can now be used to run commands, deploy applications, and enforce state across your entire fleet. The file becomes the “desired state” of your world.

Solution 3: The ‘Cloud-Native’ Option (Don’t Track, Discover)

This is the holy grail. In a dynamic cloud environment, servers are cattle, not pets. They come and they go. A static inventory file, even in Git, is a fool’s errand. The ultimate source of truth is the cloud provider’s API itself.

Instead of maintaining a list, you generate it dynamically when you need it. This relies on a disciplined tagging strategy. For example, if you need to patch all production web servers, you don’t look up a list. You ask your cloud provider, “Give me all instances tagged with Environment=Production and Role=WebServer.”

Here’s how you’d do that with the AWS CLI:

aws ec2 describe-instances \
    --filters "Name=tag:Environment,Values=production" "Name=tag:Role,Values=webserver" \
    --query "Reservations[*].Instances[*].[PrivateIpAddress, InstanceId]" \
    --output text
Enter fullscreen mode Exit fullscreen mode

Tools like Ansible and Terraform have “dynamic inventory” scripts that do exactly this. There is no list to maintain. The source of truth is reality. This eliminates data drift entirely.

Warning: This approach only works if your team is absolutely religious about tagging resources correctly. A sloppy tagging strategy makes dynamic discovery useless. Garbage in, garbage out.

Which Path is Right for You?

Here’s a quick breakdown to help you decide where to start.

Solution Effort Benefit Best For
1. Get it in Git Low Medium (Auditability) Immediate improvement for any team stuck on network shares.
2. Use IaC/CM Tools Medium High (Automation) Teams ready to move from manual changes to automated configuration.
3. Dynamic Discovery High (Requires Discipline) Very High (Scalability) Cloud-native teams with ephemeral infrastructure.

So, the next time you feel the urge to open Excel to “just quickly track something,” stop. Think about the risk you’re introducing. Take that first step, even if it’s just a simple git commit. Your future self, trying to debug an outage at 3 AM, will thank you.


Darian Vance

👉 Read the original article on TechResolve.blog


☕ Support my work

If this article helped you, you can buy me a coffee:

👉 https://buymeacoffee.com/darianvance

Top comments (0)