I was recently asked whether it was possible to add a non-supported ESXi host into VIN (vSphere Infrastructure Navigator)? The reason for this request is if you are running an ESX(i) build which is not on the list of supported builds, VIN would fail to discover virtual machines on that host. You may see the following error "Access failed. Unsupported ESX version"
The latest release of VIN 1.2 supports the following ESX(i) builds:
- ESX/ESXi 3.5 (builds 425420, 408533, and 409724)
- ESX/ESXi 4.0 (builds 398348, 403553, and 403554)
- ESX/ESXi 4.1 (builds 433742, 433803, and 433804)
- and all builds of ESXi 5.x.
If you happen to be running an ESX(i) build which is not listed but the build number is greater than the ones shown above, then there is a workaround. You can add the non-supported ESX(i) build into VIN's whitelist which would allow VIN to discover the virtual machines. In the example below I will be adding an ESXi 4.1 Update 3 Build 800380 which is not listed as a supported build.
Disclaimer: ESX(i) hosts with build numbers that are smaller than the ones listed may still be added, but this will most likely not be supported as the list of default build numbers are the minimum requirements. Please thoroughly test this in a lab environment before applying to your production environment.
You will need SSH access to your VIN appliance and before we get started, we will quickly verify the list of supported ESX(i) build versions by querying the VIN database (I was able to find the details in /var/log/vadm/dbconfig.log). Run the following command which will connect to VIN Postgres DB:
psql -h 127.0.0.1 -U vadm -d inception
The password for the database is vadm
Next, we will run the following SQL query to display the list of supported ESX(i) build numbers which should match the release notes. Run the following command:
select * from valid_host_build;
As you can see from the screenshot, the ESX(i) build numbers matches those listed in the VIN 1.2 release notes and we can also see that a wildcard is also a valid input value for ESXi 5.x which denotes any build of 5.x supported as noted in the release notes.
To add a non-supported ESXi build number into VIN's DB, we will be using the following script /opt/vadm-engine/set_valid_host_versions.sh which is located in the VIN appliance.
Note: You do not need to stop or restart the VIN service to run the command.
The script accepts a very simple XML file that contains the list of supported ESX(i) build numbers and it is very IMPORTANT to note that this will override the original defaults. This is part of the reason we performed a query to the VIN DB to ensure we have a copy of the original build numbers as a reference.
To add our additional ESXi build number, we will need to construct an XML file containing both the original build numbers as well as our non-supported. In this example, I created a file called myHostVersion.xml (based on the original DB data) which contains following:
Next we will pass in our XML input file to the set_valid_host_versions.sh script. Here is a screenshot of what that looks like after the operation has been successfully completed:
If we log back into the VIN DB and query the list of supported ESX(i) builds, we should be able to see our new build number that we inserted into the DB along with the original defaults:
During the next automatic discovery cycle, VIN should now be able to discover virtual machines running on the ESXi host that was not supported earlier.
Ramazan Kilimci says
Thank you very much. This is what I'm looking for.
To exit the psql tool, type \q and you will be at the command prompt.
With VIN 2.0 the set_valid_host_versions.sh is located under /opt/vadm-engine/bin/set_valid_host_versions.sh
Thanks a lot for your article, I'm planning a migration from ESXi 4.1 to ESXi 5.1, but I need to create an application map of all VM traffic prior to the migration. So I need unsupported ESXi build in VIN 2.0.
I did install a vCenter 5.1 Update 1a and the latest VIN 2.0 appliance. All hosts are still in 4.1
I tried applying your article using a myHostVerions.xml, but I ran in parsing issues of my XML file.
So I adapted my strategy, and after having a close look at SELECT * from valid_build_hosts; I created an Multi-Row INSERT command and it worked for me.
I had to adapt the value so that it added my hosts at the end of the list.
INSERT INTO valid_host_build (id, host_version, host_build, version) VALUES
('85', '4.1', '260247', '0'),
('86', '4.1', '348481', '0');
('87', '4.1', '348841', '0'),
('88', '4.1', '1050704', '0');
(I'm trying to get rid of the 260247 and 348xxx build, but there are some huge Oracle VM that I can't vMotion right now)
Now it's mapping the VMs and I will get application map prior to the migraton to ESXi 5.1