It’s 5AM… Do You Know Where Your DNS Tools Are?

by | December 10, 2019
It’s 5AM… Do You Know Where Your DNS Tools Are?

As a newcomer to software engineering (although not new to engineering itself, thanks to my mechanical engineering background), my primary goal has been to develop my software skills, while delivering value to both Itential and its customers. My early experiences have revealed that even relatively simple code contributions and tools can have a significant impact on how we deliver solutions to automate customers’ operations, as well as how they manage their daily networking tasks.

Collaborating with the Delivery Team at Itential to build the app-network_tools open source application empowered me to provide a simple Domain Name System (DNS) and port connection check tool that was vital to a customer’s DNS management and load balancer solution, which is now available via open source to the software community at large for its implementation and further contribution.

The use case here was straight-forward: when a customer wants to add a new virtual server, their network engineering team must assign that server an available IP address. Our task was to automate this process. For ease of use, IP addresses are associated with host names that are easier for human users to remember and manage, much like it’s easier to remember itential.com instead of its associated IP address. It’s possible to discover the host name associated with an IP address, and vice versa, using a command line domain information groper (“dig”) tool to query the DNS. The key to creating a solution that provides all of the benefits of this command line tool was to leverage the Itential Automation Platform (IAP) as well as the experience and skills of our Delivery Team to distill the dig command into separate methods that could be integrated into automated workflows in a flexible manner. Furthermore, it was crucial to perform the testing necessary to ensure the reliable operation of these methods in light of both the wide range of possibly provided variables and the total user experience with IAP.

As a result of this collaboration, app-network_tools incorporates the dig tool into four IAP Automation Builder tasks that may be adapted by IAP users, in countless workflow configurations, to automate network processes. Specifically, app-network_tools transforms what was merely a CLI command into an automation-ready implementation of the dig tool with tasks that:

  1. check the existence of an IP address (checkPTRRecordExists)
  2. check the domain associated with that address (reverseIpAddr)
  3. check the existence of a domain (checkRecordExists)
  4. check the IP address associated with that domain (resolveHostName)

In addition, app-network_tools includes a port connection check task, checkPortConnection, that checks the connection to a host name on a port, similar to available telnet CLI commands.

Each of these DNS tasks were used as part of a much larger workflow that the customer leveraged when adding multiple virtual servers to their network, and the port connection check task was used to pre-check whether a customer application’s virtual servers on a remote host and port were “live” before using them in load balancing. Once verified by the port connection check task, “live” virtual servers could then be added as node members in a Local Traffic Manager (LTM) pool, which a load balancer could then leverage to handle DNS requests. The benefit of these five workflow tasks was that the customer automated its prechecks of A and PTR records before creating them in their Infoblox DNS management platform, and it automated prechecks of whether its servers were “live” before a load balancer could use them to handle DNS requests.

In the quest to grow as a software engineer and provide timely, tangible value to real-world customers, eager coders like myself welcome the opportunity to contribute to Itential’s mission and assist the streamlining of daily operations for our customers. When presented with the challenge of building an open source application that would leverage dig and telnet CLI commands into IAP workflow tasks, I was excited to combine my coding skills with the networking and testing acumen of fellow Itentialites. Overall, building app-network_tools provided me with the opportunity to deliver a meaningful solution to the company, a customer, and the software and networking communities at large early in my tenure at Itential.

But the quest doesn’t end there. We welcome you to download, use, and continually improve app-network_tools, which you can find on Itential’s npm open source page.

Justin Cotton

Mechanical Engineer. MBA. Attorney. After representing software developers in his patent law practice, Justin became interested in becoming a software engineer himself. Today at Itential, Justin combines software and networking tools to develop full stack applications that automate physical, virtual, and cloud networks.

Read More Posts From Justin D. ›