This action requires saving a cookie to remember the page's state. You can read more about that on the cookies page.

 

devOpsDream - Mass, evolved

Released on: 2024-01-30

TL;DR

From the devOpsDream GitHub repo:

devOpsDream is the next evolution from Mass, which is about quickly and easily getting the information you need about your infrastructure, and doing something with it so you can get back to what’s important. It

  • Brings organisation and understanding to the reality of environments with mixed legacy and current naming conventions.
  • Presents the information in a clear and concise manner, with the ability to quickly get --more information when needed.
  • Provides an effective way to share information about what parts of the infrastructure are and what they do.
  • Gives you fast access so you can get on with dealing with the task at hand.
  • Can export everything it knows (or a selection of it) in many standard formats such as json.

This is a retro-active post. I first released under the devOpsDream branding in around 2015 after someone made a competitor that used the same name as mass, while being incompatible, and unable to be installed concurrently.

Table of contents

Video of it in action

This is a demo from a little while before the name change.

Examples

Importing hosts

There are several supposed sources for importing hosts. The ones that you’re probably most interested in are:

Import from Flag Comment
AWS -v --awsGetAll Uses the aws command line tool. This command must be logged in and have access to list everything that you want to import.
Google Cloud -v --gcGetAll gcloud command line tool. This command must be logged in and have access to list everything that you want to import.
Puppet -v --importFromPuppet Relies on knowledge in /var/lib/puppet/yaml/node. Must have an active puppet installation on the local machine, and have read access to /var/lib/puppet.
Chef -v --getChefHosts Uses the knife comment line tool. This command must be logged in and have access to list everything that you want to import.

Where possible, it’s worth using the cloud-provider to get first-hand up-to-date information. But when that’s not viable, the Puppet and Chef options are there.

NOTE: Since attention died down, I’ve been keeping it working at a works-for-me level. Which means that code that isn’t relevant to the infrastructures that I work on is less likely to work. If you spot a bug, please report it via a github issue, and I’ll be happy to work through it with you.

Listing available hosts

There are several tools available to help you search for the information you need. Here are a couple:

A few ways to search through hosts.
Above: A few ways to search through hosts.

SSHing to multiple servers at once

Historically, my favourite way to connect to several servers at once has been to use --cssh which uses clusterSSH. But more recently, I’m preferring --xpanes (or -x for short) which uses XPanes via TMux:

XPanes in action.
Above: XPanes in action.

With these tools, keyboard input goes to all of the servers at once, unless you instruct otherwise. This is useful when you want to interactively perform the same action across multiple hosts, or visualise how the hosts compare in some way.

You can also use tools like --term to bring up a single terminal window per host.

Interacting with servers

In the following example, I:

  • Download the hosts file from each server.
  • Confirm that I have the files.
  • Upload one of the downloaded files to both servers.
  • Run the ls command on both servers to confirm that the file is there.

Doing a few interactions with the servers.
Above: Doing a few interactions with the servers.

Exporting data

Exporting data is as easy as adding --json to the end of the command that lists the information you want.

You might want something more precise that you can parse with command line tools, you can do something like this

d --list --toString="~%IP%~ ~%hostName%~" -s

Which looks like this:

Exporting the IP address and hostName.
Above: Exporting the IP address and hostName.

You can use --nested to find out which fields are available. Eg

The --nested view showing available fields.
Above: The –nested view showing available fields.

NOTE: In the above example I’ve selected a host with very few fields to keep the screenshot to a reasonable size. If you show a host from AWS, you’ll get many more fields. And even then, many more are possible. - I actually strip out most of them during import to keep the stored data small.

But let’s say you want to make things difficult for yourself and you want to parse the human readable output that is subject to change… Have I dropped enough hints that you shouldn’t do this yet? You can do so with the --noColor parameter:

Using --noColor to remove ANSI colour characters. Seriously, don't do this.
Above: Using –noColor to remove ANSI colour characters. Seriously, don’t do this.

Keeping it up-to-date

In its heyday, mass was getting a lot of attention via word-of-mouth. At the time, I was flat out implementing user requests. I kept this up for a while after interest died down. But eventually moved to works-for-me quality so that I could focus on other projects. I still use it, but I don’t think many other people do any more.

Code that I use is likely to work. Other code is more luck-of-the-draw. Github issues and Pull Requests are welcome.

If this becomes more popular again in the future, I may give it more attention again.

This post references

Achel is a programming language that I have been working on for the past 13 years (I said 12 in the video, it has been a long time!) There has been growing interest in the programs I have been writing using it, so I have now released it as open ...
Well over a year ago I introduced mass which is a tool for managing large numbers of servers. It's come along way in that time, and it's well and truly time for another look. From the users' point of view, the most interesting things are probably that you can now ...
1970-01-01
I've done a few software projects over the years. Here's a collection of some of them.

Posts using the same tags

An Android game like 2048, but 3D, and requiring a different strategy.
It was time for a much needed update to the resolution app. Here's what I've improved.
Getting the information and access you need to your infrastructure quickly, so that you can get back to sleep.
It's time to blow the dust off machine learning, and apply it to a dataset that I know.
I've just released the biggest, most exciting, update since the first public release of handWavey. The learning curve is dramatically reduced!
The story of where Achel came from, and where it's going.
My CV had gained so much weight that it was hard to do anything with it any more, and it was hard to read. So I did something about it...
Control your computer using a Leap Motion controller, but with an every-day-quality implementation.
What began as 3 tripods on a hill, and hours per photo, ended with way better results in seconds, hand held.
I accidentally automated Javelining a plane into the ground. And I learnt a huge amount along the way.
How much of your phone's screen resolution can you actually see? This app helps you quantify it.
Over the last few years, there has been a lot of talk about whether you can make use of the full resolution on a phone with a 4K display. Let's dig in and actually understand this.
An easy way to get a dark theme for kmail content, that reliably works on pretty much everything.
calibrate multiple touch and non touch screens on a single linux system." This is to address the issue on multi-display Linux desktops where the touch panel is automatically calibrated to operate over all of the displays, and even if you get the calibration right, it's then wrong again when you ...
DoneIt is a time tracker for working out where your time is going. For me there were a few things I wanted to achieve with it - Be able to say what I've been doing all day. - See how much time is lost to time ...
Well over a year ago I introduced mass which is a tool for managing large numbers of servers. It's come along way in that time, and it's well and truly time for another look. From the users' point of view, the most interesting things are probably that you can now ...
Achel is a programming language that I have been working on for the past 13 years (I said 12 in the video, it has been a long time!) There has been growing interest in the programs I have been writing using it, so I have now released it as open ...
1970-01-01
I've done a few software projects over the years. Here's a collection of some of them.

More...

Home | About | Contact | Cookies