OK, you got me. Really. I uploaded a few screenshots of some web pages on Twitter and people start asking me if I could blog about it. I wish I had more time to blog and yes, I know, I’m long overdue on the new Office 7.0 pictures and will definitely get that done as soon as the summer light (which is awful for pictures) stops being a problem. So instead, I’ll just write on the blog a little.


I use WordPress. I use it a lot. I use it for most of my personal sites, business sites, I hack around with it and contort things to do what I need them to do. I’m not, however, one of those WordPress fanatics. In fact, you will hear me say a lot of nice things about Drupal, for example, even in public and even when talking to WordPress fans. I believe in using the right tool for the right job and in this case you can consider platforms of choice to be no different from any tool.
One way I use WordPress is for something that nobody ever gets to really see (unless you visit my office and I happen to show you how I manage and control things): managing my vast number of systems, laptops, devices, and most of all the growing deployment of virtual machines.
I used to keep track of network port diagrams via Microsoft Visio but since I am not using Windows as much these days and also don’t want to go back to keeping ASCII notes or document files I decided to put together a more proprietary and automated way to keep track of IP addresses, services provided systems and VM’s, passwords, installation and deployment notes, hardware notes, driver information, etc. And for that I decided to go with WordPress.
I bought a copy of the Skematik theme because I didn’t want to create a whole theme from scratch based on the Twitter Bootstrap. I then spent a few days writing the “Ignyter Network” WordPress Plugin (as well as a few others in relation to it) which introduces several different Custom Post Types (CPT’s) into it as well as highly granular controls for creating relationships between different CPT’s and various fields of those CPT’s.
The reason is that I only want to enter information once, share and relate it to other information, and when the original information updates, everything else updates accordingly.
Well, that took a little more time to hack together but I got it working in a decent enough shape. Decent enough considering that this is something only available within the LAN of my home office, not outside of it, never elsewhere.
Everything on the pages rendered through WordPress is highly interactive and just about everything is clickable. So clicking on a port on a layout of a switch will get me the page relating to the system that’s hooked to that port, etc.
Keeping track of hardware, virtual machine configuration details, drivers, shared folders, services that are accessible and by what means, incl. password information (which is protected from view just in case anyone would casually look over my shoulder in the office), has never been easier. It took me a little while to put this solution together but it will easily save me all that time dozens of times over in years to come.


The next stage will include feeds from servers that will provide direct overview and information on running servers and services straight into the WordPress “application”. This will include integration with Nagios, which I’m currently using to monitor things. Also on the todo list is integration with Puppet.
Now, there are unfortunately some parts that I can’t show you screenshots of because I would have to blur out too many details to make it worth the time. This part of the site involves being able to directly control some of the servers and services from the site. Why not just shell into a system? Why not just do it through the terminal, you ask? Well, because I’m lazy and I like to use my time as efficiently as possible and while the command line is exactly good for that, it’s not as good for doing too many repetitive things to clusters of virtual machines.
The controls are not that complicated, though, and it’s one of those things that’s an organically growing thing that will essentially prove itself over time. Right now there’s basic functions for shutting down a server, rebooting, changing some configuration details and restarting services on it, etc. And yes, I know I could do that through control panels like Webmin but I’d like to just stay within one environment where all the relevant details are at my fingertips and doesn’t require a dozen browser tabs to be open.
Also, because I want to not depend on large screens if I want to reboot a server from my iPhone outside of the house (why, I have no idea, but I can do that!) the choice for making the controls web-based made perfect sense. And even more so considering that the entire site is fully mobile responsive. 🙂
Since I can’t show you the interesting pages (and we all know, the NSA is watching everything!) I’ll show you something else that should communicate the basic idea. It’s a WordPress Plugin I put together (I have a strong aversion to using the word “developed” in relation to “WordPress” and anything relating to PHP) to help with some LAMP/LEMP related matters. In this case all I wanted was a central plugin for WordPress development that would allow me (and Sallie, mostly) to do some basic things without having to open a terminal and shell into the servers directly. The result was the Ignytion DDT (Debug and Development Tools) Plugin for WordPress.


All this is very similar to what the Ignyter Network plugin and theme do and how it turned WordPress into a “command console” for the kind of local network that is otherwise tedious and cumbersome to handle and deal with under the best of circumstances.
In addition to all of the above I’m also using several WordPress installations on the local network that are running Capsule and Capsule Server. If you haven’t seen it or heard of it before and you’re into collecting tons of your own snippets of code and other interesting parts you should give this thing a look. For small teams this is really an interesting way of dealing with “artifacts” that are project centric.
OK, enough about all that for now. Questions? Leave a comment and I’ll get to them as soon as I can. Not the coming weekend, though, since we’re going to be busy! 🙂
That’s an absolutely fantastic idea! 🙂 🙂
Do you plan to publish the code behind this? Its definitely something I’m interested in running considering the amount of ASCII files that I have for systems and VMs :\
Unfortunately, I don’t think it’ll ever be published. The whole thing depends on a few commercial plugins on top of a ton of custom code for WordPress that probably won’t suit everyone’s setup or infrastructure. The even more detailed part is that it relies heavily on a bunch of custom linux scripts and one or two custom Windows based .NET services. Since it was never designed to be “secure” a lot of the scripts would require a lot of “censorship” that it would take anyone else a ton of time to recreate and recompose the things that fit their particular infrastructure.
Oh, and to make things even crazier… some of the parts that rely on automated SSH connections between systems and the server rely on a few custom Ruby Gems that help with the whole SSH management part.