Lessons Learned from our Nutanix Install

We received our 3 node Nutanix cluster last week. I did contract for professional services to help with the install, but given that professional services getting scheduled is still a week out I decided it was better if I started the process myself. I figured how difficult could it be to build out a Nutanix Cluster using AHV for the hypervisor. Really how difficult can it be to learn a new platform and everything that goes along with it. This is the list of things that I learned while doing the install myself and working through the problems that I encountered.

  • It helps to validate the port configuration on the back of the unit, the only support case I needed was to find out what ports were data, which were data/ipmi, and which were ipmi only. That wasn’t information that I was able to find on my own easily. So I opened a ticket with support and they gave me the exact information that I needed.

  • Make sure all of the ports are correctly configured on the network. Don’t just follow the QuickStart guide, because when it says you only need a data port in a dumb switch that isn’t necessarily correct or at least wasn’t in my case. I lost a few hours to the networking side, just figuring out that I needed the final trunked network connection to get everything talking correctly.
  • Put the IPMI onto it’s own network so that it is separate, and should be on a completely private network. In my case I hooked it up to our Opengear Serial Console with a 24 port switch that is a separate admin network.
  • Keep the Hypervisor and CVM on the same network and it will make life easier
  • Make sure to run the health check a few times and correct everything it says, just so things aren’t annoying. I had some that were info and just wanted them all cleaned up.
  • Realize that it will take time for all of the health alerts to cycle out of the console. So sometimes just waiting a day makes all the difference when trying to clear up the alerts. So if the health check comes back fine on the command line or console, it just might need some time.
  • Create a new local admin to resolve the annoying API alert that keeps popping up and that they don’t have you do anything with during the quick start install.
  • I’ll keep updating as I go and find new things, just as reminder for myself for the next install that we will most likely be doing in our Cold or Distribution Center.

    One Source of the truth for IP Addressing

    I’ve been working on my python programming skills and using scripts to configure all of my Meraki equipment through their API and cloud platform. It’s been a lot of work building the scripts and working through some of the limitations that are inherent in Meraki’s cloud and also in the way we manage our environment. I have over 1500 stores and use 2 /28 ranges for each store and I have been trying to use a formal IP management solution that would support it. Unfortunately after looking at Solarwinds, Bluecat, and other IPAMs I didn’t find what I wanted. I ended up going with a MS SQL Database that I can call via PYODBC and get the data based on the store#. This also allows me to put in other specialized information and I can basically build out what I need then call it from within my python programs.

    Obviously I would never be confused with a web designer of any sort. However what it is, is quick and easy to use. The asp page pulls up fast and things can be added and removed within a few minutes. The amount of time I was going to have to spend in a formal solution was just more time than I had. The downside of course is that if I leave someone else has to learn what I did and then take over the support of it. That will however be a problem for a different day, unless of course I find a great solution that allows me to treat everything separately and not as part of a huge network.

    Moving from Pymssql to Pyodbc

    I was in the process of updating one of my linux servers with Pymssql when I kept getting an error message about it trying to do the install:

    ERROR: Could not find a version that satisfies the requirement pymmssql (from versions: none)
    ERROR: No matching distribution found for pymmssql

    Turns out pymmsql had been deprecated and was no longer being supported. I use pymmsql to connect to my sql database in order to pull data for ip addresses and other network specific information to build my stores in the Meraki Portal.

    For the most part the conversion was fairly easy, I think the biggest issue I had was in getting the drivers installed for MS SQL for pyodbc. This site from MS was helpful in installing the ODBC drivers on Mac and Linux. Once I got the drivers installed I then had some issues with making https calls via my python programs. I had to reinstall python via pyenv reinstall. Once the version was reinstalled then it resolved the issues with the API calls and the requests module. Here is an example of the code I was running and the code that I am now running.


    import pymssql as mdb

    sql_host = cred.sql_host
    sql_username = cred.sql_username
    sql_password = cred.sql_password
    sql_database = cred.sql_database
    store = str(input(“What store are we creating?: “))
    sql_connection = mdb.connect(sql_host,sql_username,sql_password,sql_database)
    cursor = sql_connection.cursor()
    cursor.execute(“select [VID2GW] from tblDSlip where [Store #] = (%s)”, (store))
    VLAN2GW = str(cursor.fetchone()[0])


    import pyodbc
    store = str(input(“What store are we creating?: “))

    if len(store) == 2:
    sql_store = ’00’ + store
    elif len(store) == 3:
    sql_store = ‘0’ + store
    sql_store = store

    server = cred.sql_host
    database = cred.sql_database
    username = cred.sql_username
    password = cred.sql_password

    cnxn = pyodbc.connect(‘DRIVER={ODBC Driver 17 for SQL Server};SERVER=’+server+’;DATABASE=’+database+’;UID=’+username+’;PWD=’+ password)
    cursor = cnxn.cursor()
    cursor.execute(“select [VID2GW] from tblDSlip where [Store #] = ?”, sql_store)
    VLAN2GW = str(cursor.fetchone()[0])


    Planes of Fame January Living History Day – Focke-Wulf Fw 190

    The local Air Museum holds a living history day each month where they bring out the planes along with people that might have flown them or worked on them. It’s a great benefit living so close to the air museum that I can just drive over and in some cases shoot from my backyard. As I am trying to improve my airplane photography I took this as an opportunity to work on shooting at a slow shutter speed and working on my panning. Needless to say my panning needs some work so that I can get some sharp photographs.

    Date/Time Conversion in Python – ISO 8601 UTC to Pacific Standard Time

    I had an issue where I was getting an ISO 8601 UTC date back from one of my API requests and I was asked to convert it to Pacific time as I was providing the information in a report. Since I had no idea what I was doing I first had to figure out what kind of date I was dealing with so that I could then figure out what I was trying to get to.

    Here is what an ISO 8601 date looks like:  2019-12-24T15:04:18Z

    Here is what the format of the data will look like after the process has been run: 12-24-2019 7:04:18

    #Modules needed
    import datetime
    import pytz

    #set the variable for Pacific timezone
    pst = pytz.timezone(‘US/Pacific’)

    #create the time variable date_time that will be used throughout, the data is coming from an api request and I am getting back json data.
    date_time = (ISO 8601 Date)
    #set the format for the date time
    date_time = datetime.datetime.strptime(date_time, “%Y-%m-%dT%H:%M:%SZ”)
    #tell python the current timezone is UTC
    date_time = pytz.timezone(‘UTC’).localize(date_time)
    #tell python to change the timezone to Pacific
    date_time = date_time.astimezone(pst)
    #update the variable with the new time and date in the new format
    date_time = date_time.strftime(“%m-%d-%y %H:%M:%S”)

    2019 Reading List

    Listing of the books I managed to consume in 2019. I would say I don’t have a lot of time on my hands and that I don’t have time to read with my job and everything else that I have going on, but I think I managed to consume a good number of books this year. Some from different genres, some technical, and some that are just books I read over and over(The Martian). Without further ado, here is my list of books for 2019:

    Oath of Office
    The Pacific Crucible
    The devil in the white city
    The Magitech Chronicles books 1-4
    Mech Warriors: The complete series
    The True Measure
    A house Divided
    The Ibarra Sanctions
    Terran Strike Marines Books 1 and 2
    Iron Dragoons
    Ark Royal Series Books 1-12
    Complete book of the SR-71
    Hell Divers V
    Underwater Photography Masterclass
    Vengence of the Iron Dwarf
    Warrior King (Odyssey One Book 5)
    Odysseus Awakening (Odyssey One Book 6)
    Ferrum Corde (Terran Armor Corps Book 6)
    Odysseus Ascendant (Odyssey One Book 7)
    Krox Rises: The Magitech Chronicles Book 5
    Infinity War: Collected Edition
    Nefarius: The Magitech Chronicles Book 6
    The Ruins of Anthalas (The Ember War Saga Book 2)
    Blood of Heroes (The Ember War Saga Book 3)
    Earth Defiant (The Ember War Saga Book 4)
    The Gardens of Nibiru (The Ember War Saga Book 5)
    The Battle of the Void (The Ember War Saga Book 6)
    The Siege of Earth (The Ember War Saga Book 7)
    The Crucible (The Ember War Saga Book 8)
    Cartwright’s Cavaliers (The Revelations Cycle Book 1)
    Asbaran Solutions (The Revelations Cycle Book 2)
    Winged Hussars (The Revelations Cycle Book 3)
    The Dotari Salvation (Terran Strike Marines Book 1)
    The Golden Horde (The Revelations Cycle Book 4)
    Peacemaker (The Revelations Cycle Book 6)
    Karma Upsilon 4 (Jim Cartwright at Large Book 1)
    Valley of Loss (Jim Cartwright at Large Book 2)
    Empire of Machines (Jim Cartwright at Large Book 3)
    Eye of Minerva (Jim Cartwright at Large Book 4)
    The Midnight Sun (The Omega War Book 2)
    Rage of Winter (Terran Strike Marines Book 2)
    Valdar’s Hammer (Terran Strike Marines Book 3)
    Dark Moon Arisen (The Omega War Book 3)
    Sinclair’s Scorpions (The Omega War Book 5)
    The Beast of Eridu (Terran Strike Marines Book 4)
    Til Valhalla: An Ember War Novel
    When the Axe Falls (The Omega War Book 7)
    Archangel One
    Godswar: The Magitech Chronicles Book 7
    The Xaros Reckoning (The Ember War Saga Book 9)
    Alabaster Noon (The Omega War Book 12)
    Armageddon (Expeditionary Force Book 8)
    Renegades (Expeditionary Force Book 7)
    Storm Clouds (The Guild Wars Book 1)
    Hunted (Jim Cartwright at Large Book 5)
    Hollow Core (School of Swords and Serpents Book 1)
    Gott Mit Uns (Terran Strike Marines Book 5)
    Iron Dragoons (Terran Armor Corps Book 1)
    The Martian