MaruOpsInfrastructure and AI notes

About (Korean)Contact (Korean)

Install NGT on a Nutanix Linux VM and Verify Connectivity

Server rack fronts and overhead cable trays at the NERSC data center

Reference photo · Server rack fronts and overhead cable trays at the NERSC data center · Photo: Derrick Coetzee / Source / CC0 1.0 · Resized for listings; illustrative photo, not the tested environment

To install Nutanix Guest Tools (NGT) in a Linux VM, enable NGT for that VM in Prism, attach its ISO, and run the installer inside the guest OS. Afterward, verify the installed package, guest agent service, and communication with the Controller VM (CVM) separately.

This guide uses supplied CentOS 7.2 and 7.4 package inventories and CentOS 7.4 and Rocky Linux 9.4 installation records dated October 9, 2025. Commands and requirements were compared with Prism Element 7.6 and Prism Central pc.7.6 documentation on October 27, 2026. NGT 4.3-1 is the version in those records, not a statement about the latest release.

On this page

Separate installation methods and support requirements

The main procedure here is a manual ISO installation on one VM. Check the AOS, hypervisor, guest OS, and NGT combination in the Nutanix NGT compatibility matrix. A historical successful installation does not establish current vendor support.

MethodWhere installation executesRequirements to establish first
Manual installation after attaching an ISO in Prism ElementLinux guest VMPer-VM NGT enablement, ISO, and supported guest combination
Remote installation through Prism CentralManagement operation connects to the guestLinux SSH, account privileges, CD-ROM, and network access
Post-migration installation through Nutanix MoveMove migration workflowDestination cluster and guest requirements for that Move release

The supplied Move prerequisites list an external IP on the target cluster, dmidecode, LVM2 2.02.109, Python 2 or 3, and repository access for missing packages. The Move 6.3 migration plan documentation contains the same conditions. They apply to Move’s option to install NGT on target VMs, rather than defining a universal minimum AOS release for every manual installation.

That document uses both greater than 6.7 and greater than or equal to 6.7. Do not determine support for the AOS 6.7 boundary from those phrases alone; establish the supported destination combination for the installed Move version. Move describes target NGT installation as best effort, so perform the installation and communication checks below after migration too.

Do not interpret external IP as a requirement to expose a VM or CVM to the public internet. For IP-based NGT communication, establish reachability between the guest and the cluster virtual IP (VIP). Repository access is a separate concern and can use an approved internal repository.

1. Check packages and Python in the guest

Run these commands inside the Linux VM where NGT will be installed. This is not a package installation procedure for a CVM or AHV host.

cat /etc/os-release
uname -m
rpm -q lvm2 lvm2-libs dmidecode
rpm -q python python2 python3
python --version
python3 --version

Missing packages can report is not installed, and missing commands can report command not found. This does not mean both Python 2 and 3 are required. Identify the interpreter you will use and the versions supported by the ISO installer.

The rpm -qa and grep naming trap

rpm -qa | grep python-3 does not identify all Python 3 installations. A package named python3 produces output such as python3-3.9..., which may not match python-3. Conversely, the 2.5 in libselinux-python-2.5-11.el7, matched by grep python-2, is that package’s version, not the Python interpreter version.

To inspect Python-related package names more broadly, use the following query. Determine the executable’s version with the earlier --version commands.

rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' | grep -E '^python|^libselinux-python'

What the supplied CentOS Minimal inventories show

These versions come from the supplied query results. They do not describe every CentOS Minimal installation.

OS recordlvm2 and lvm2-libsdmidecodePython package
CentOS 7.2 Minimal2.02.130-5.el7.x86_642.12-9.el7.x86_64python-2.7.5-34.el7.x86_64
CentOS 7.4 Minimal2.02.171-8.el7.x86_643.0-5.el7.x86_64python-2.7.5-58.el7.x86_64

Both recorded LVM2 versions are newer than the supplied 2.02.109 reference. That comparison alone does not establish complete OS and NGT compatibility. Interpret the empty Python 3 search results in light of the naming issue above.

CentOS Linux 7 reached end of life on June 30, 2024. Its examples here help interpret maintenance and migration records for existing VMs; they are not a recommendation for a new deployment.

Install missing prerequisites when necessary

On a supported Rocky or RHEL-family environment, check the configured repositories and install the packages needed. The following example uses dnf.

sudo dnf repolist
sudo dnf install dmidecode lvm2 python3

When maintaining an existing CentOS 7 VM, use repositories approved for that environment. There is no need to add Python 3 if the supported installer combination can use the existing Python 2.

sudo yum repolist
sudo yum install dmidecode lvm2

The package manager must handle metadata, signatures, and dependencies correctly. Do not assume the ISO includes every OS dependency. The official NGT requirements call for a working package manager configuration and appropriate write access to /usr/local, the ISO mount location, and /tmp.

2. Enable NGT and attach the ISO in Prism

Select the intended VM in Prism Element and follow these steps. They are based on the official enablement and mounting procedure; compare UI labels with your installed version.

  1. Open VM, choose the Table view, and select the target VM.
  2. Under Manage Guest Tools, select Enable Nutanix Guest Tools.
  3. Select Mount Nutanix Guest Tools, review the supported features needed, and apply the settings.
  4. Check NGT Enabled and NGT Mounted in the VM details.

NGT Enabled set to Yes does not mean installation inside the guest is complete. With the Prism Element ISO method, log in to the VM and run the installer. Do not select features on the assumption that Windows VSS applies to Linux.

The per-VM ISO can contain configuration specific to its VM. Follow enablement and mounting for each target rather than reusing an ISO copied from a different VM. Cloned VMs also require their own configuration and communication checks.

3. Identify and mount NUTANIX_TOOLS in Linux

The supplied commands use /dev/sr0, but the CD-ROM device does not always have that name. Find the device with the NUTANIX_TOOLS label first.

lsblk -o NAME,TYPE,FSTYPE,LABEL,MOUNTPOINT
sudo blkid -L NUTANIX_TOOLS

If it is already mounted automatically, use that location. The following example assumes the device is confirmed as /dev/sr0 and will be mounted manually at /mnt/ngt.

sudo mkdir -p /mnt/ngt
sudo mount -o ro /dev/sr0 /mnt/ngt
findmnt /mnt/ngt
ls -l /mnt/ngt/installer/linux/install_ngt.py

If the installer is absent, check the attached ISO and actual mount location before running Python. Read-only mounting is normal for the ISO. The supplied source write-protected, mounted read-only message does not itself establish an installation failure.

4. Run the installer with the appropriate Python

The official Linux NGT installation procedure distinguishes commands by Python version. Run only the alternative appropriate to your environment.

For a supported environment using Python 3, run the following and capture the exit status immediately after the installer.

sudo python3 /mnt/ngt/installer/linux/install_ngt.py --operation install
ngt_install_rc=$?
printf 'NGT installer exit code: %s\n' "$ngt_install_rc"

For an environment like the supplied CentOS 7.4 record, where python is Python 2 and the installer supports it, use this alternative. This is not an instruction to add Python 2 to a new server.

sudo python /mnt/ngt/installer/linux/install_ngt.py --operation install

Do not change system symlinks or replace the Python used by yum merely because the python command is missing. When Python 3 is supported, specify python3 explicitly.

System Python and NGT’s internal Python are separate

The supplied CentOS 7.4 record starts installation with system Python 2.7.5, but its installed service runs through /usr/local/nutanix/ngt/python311/python3. Distinguish the bootstrap interpreter from the runtime included with NGT. That path does not mean the system’s Python installation has been replaced by Python 3.11.

5. Verify the package, service, and CVM connection separately

In the guest VM: RPM and services

Query the installed RPM and compare its version with the installation log.

rpm -q nutanix-guest-agent
rpm -qi nutanix-guest-agent
sudo systemctl status ngt_guest_agent.service --no-pager
sudo journalctl -u ngt_guest_agent.service -n 100 --no-pager

The supplied CentOS 7.4 record shows nutanix-guest-agent 4.3-1 installed and ngt_guest_agent.service as active (running). The Rocky Linux 9.4 record shows the same RPM installed and service restarts completed. It does not include a subsequent status query or CVM communication result, so those stages cannot be confirmed from that record.

The supplied material also shows ngt_self_service_restore.service running. Inspect it where that service is installed.

sudo systemctl status ngt_self_service_restore.service --no-pager
pgrep -af 'guest_agent_monitor_linux.py|ssr_gateway_linux_service.py'

An SSR service file being present or running does not establish feature support for that Linux and NGT combination. Check the matrix for the current distribution’s SSR support. Windows VSS support does not apply to Linux VMs. If a status query reports Unit ... could not be found, investigate feature, version, and package composition rather than creating a service file yourself.

On a CVM: verify the actual communication link

Run this read-only query in a cluster CVM shell as nutanix, not inside the Linux guest. Replace linux-vm01 with the actual VM name registered in Prism.

nutanix_guest_tools_cli list_vm_tools_entities include_vm_info=true vm_name=linux-vm01

Inspect these attributes as described in the official CLI communication verification procedure.

AttributeMeaning
communication_link_active = trueNGA and CVM communication is active
communication_link_over_serial_port_active = trueIP-less communication over the serial port
Link active with the serial attribute falseIP-based communication is in use

The package and service can be present while the CVM link remains inactive. Include the link check before recording installation as complete.

IP-based TCP 2074 versus AHV IP-less communication

IP-based communication requires guest VM → cluster VIP on TCP 2074. This differs in purpose and direction from SSH TCP 22 used for remote installation through Prism Central. The VIP can be a reachable private address; it need not be exposed to the internet.

AHV’s IP-less method uses a guest serial port when its prerequisites are satisfied. The official documentation describes AOS 6.6 or later, NGT 3.0 or later, and the required serial port configuration. Converting an existing VM can require a full power cycle; a reboot from inside the guest may be insufficient. Include this in a maintenance window rather than immediately powering off an operational VM.

Do not reduce every communication failure to a TCP 2074 firewall issue. Establish the actual method from the CVM query first. IP-less communication also does not provide repository access for missing OS packages. See the NGA and CVM communication documentation.

Interpret the warnings in the supplied logs

Both supplied installation logs show Complete!, package installation, and service restarts followed by ERROR - Failure and GPG key-related output. This combination cannot be judged from the final line alone. It does not mean the error can be ignored.

Message or symptomWhat to check
which dpkg failsWhether this was package-manager detection on an RPM system and RPM installation continued
Read-only mount warningWhether the ISO is mounted and the installer exists
NOKEY or GPG import outputOfficial ISO and key provenance, signature verification, and actual RPM transaction result
Both ERROR - Failure and Installed appearExit status, package query, service journal, and CVM communication together
Dependency or repository access errorRepository URL, metadata, key, and package access from the VM
python: command not foundSupported use of python3 and the actual interpreter path

Do not use gpgcheck=0 or --nogpgcheck in response to NOKEY. Compare the key fingerprint with trusted Nutanix distribution information, and do not mark installation complete while signature verification failures remain. The supplied records do not establish either VM’s final CVM link or installer process exit code.

For unresolved issues, collect OS, AOS, and NGT versions, actual ISO provenance, exit status, package results, service journals, and the CVM query output. Review environment identifiers and secrets before publishing complete logs.

Finish the work and understand the verification scope

After installation and communication are confirmed, you can remove a mount you created manually. Leave the mount directory first.

cd /
sudo umount /mnt/ngt

Some versions can detach the NGT ISO automatically. If the mount has already disappeared, not mounted does not establish an installation failure. Keep NGT enablement separate from attachment of its installation media.

This guide compares the supplied installation records with official documentation. During preparation, shell syntax and RPM/Python queries in an isolated Rocky Linux 9 container were checked. NGT was not newly installed on an actual Nutanix VM, and CVM communication was not independently retested. The referenced Prism 7.6 and pc.7.6 documents were updated on October 22, 2026; use documentation matching your installed release.

The cover is a general data center photograph, not the equipment in the supplied NGT records. Photo: Derrick Coetzee · original · CC0 1.0. The existing locally hosted image is reused with its aspect ratio retained. Listing thumbnails may be cropped.