Tuesday, March 23, 2010

RackTables Datacenter Asset Management

Since my last post a lot has transpired, after the new year I started a new - old position, returning to a former employer as a Network Security Engineer. I was pleasantly surprised at how much knowledge I retained of the environment even after being away for more than two years. Since I left the network has grown significantly and documenting such a complex environment has moved beyond Word and Excel documents. So I started researching methods for documenting IP Address allocations and came across a wonderful open source project called RackTables.  The application installs very easily on a LAMP (Linux Apache MySQL PHP) server and maintains equipment (Objects), IP Address allocation, rack usage, and Load Balancer information. So far my experience has been very positive. The advantage over a spreadsheet is that each IP address allocation can be tied to an object. If for example that object is a Windows server you can document each IP address assigned to it. If that server is ever reallocated or renamed you simple rename the object in RackTables and all the associated IP addresses, and Racks are updated automatically. This way you will never have the one network that didn’t get updated to the new server name. Retire an object and the IP address and rack space are automatically made available for new assignments. It is also very customizable with different Dictionaries, Attributes, and Tags.

Tags for lack of a better term are meta data you can assign to different objects within RackTables. For example you can create different tags for various locations or organizational groups. I’ve also created tags for various VLAN IDs and Network Types (Corporate, Production, Internet, DMZ, etc.) This enables you to filter the various screens within RackTables to specific tags. For example under the IP allocation screen I can limit the IP block to a specific location or to a specific VLAN. This makes finding the network or object you’re looking for much easier. Also filtering this way in the Rack Space screen limits the racks to a given location. Which comes in handy if you have multiple data centers or even document multiple small offices with one or two racks each.

Attributes and Dictionaries go hand in hand. Attributes are informational items that can be added to objects. For example one of the predefined attributes is “contact person” which is then defined for specific types of objects such as Server, Routers, etc. Attributes can have different types of values, a string, an integer, or a dictionary record. When set to a dictionary record you specify which dictionary to use for a given object type. For example for object type “Network security” the  “Hardware Type” attribute uses values from the dictionary “network security models.” Now in the “network security models” dictionary is a list of various vendor's security equipment. Each one of the dictionaries can be customized to add equipment that does not exist by default.

Another nice feature is the ability to link server interfaces to patch panels, or switches together. You can really document your entire infrastructure with this tool.

As wonderful an application as RakeTables is I do have one complaint. The reporting functionality is very limited. I would love to have the ability to export some of the data to PDF or CSV based on selected tags. For example it would be nice to generate a rack usage report which has a page for each rack and the specific objects in it. Another would be port utilization, for example generate a report that shows which ports on a switch are utilized and which are free. With all the information this system stores there are a number of reports that should be easy to generate.

Lastly some recommendations for future versions:

  1. Allow for the automatic parsing of “show interface” from Cisco equipment to add Interfaces. On the same note ifconfig and ipconfig in the Linux and Windows world respectfully. I’ve made a spread sheet to speed this up for now but it still takes time when you need to add a switch with 300 ports.
  2. Allow for multiple blank “L2 Addresses” for ports that do not have L2 addresses such as Consoles (RS-232), KVM, etc. Here’s a simple solution (inc/database.php):

      function alreadyUsedL2Address ($address, $my_object_id)
      {
              if($address == '')
              {
                      return false;
              }
      ....

  3. Custom IP Address allocation types. This is currently a fixed enum in table IPv4Allocation.
  4. Add Attributes to IP address blocks.
  5. Provide a mechanism  for NAT IP linking. Have a physical address on a server which is NATed to an outside IP address. I’d like to see a NAT from and NAT to link in the IP address allocation field. It would also need to allow for multiple translations.
  6. Have a virtualization area that allows virtual servers to be assigned to a physical hardware. I would basically like to document which Virtual Servers are on which physical servers or server farms if they can be migrated automatically with tools such as vMotion. Also to link the virtual NIC with the physical ones would be nice. This isn’t currently possible since you can only link one port with another.

So to wrap this all up RackTables is a great tool and those that have worked on the development have done an excellent job. I highly recommend it to anyone looking for an Open Source solution for documenting the various aspects of their Data Center.

I hope this article was useful to you and as always if you have any comments or suggestions I’d be happy to hear from you.

No comments:

Post a Comment