NSX Controller serves as the central control point for all logical switches within a network and maintains information about all hosts, logical switches, and distributed logical routers.

The QCOW2 installation procedure uses guestfish, a Linux command-line tool to write virtual machine settings into the QCOW2 file.


  • KVM set up. See Set Up KVM.

  • Privileges to deploy a QCOW2 image on the KVM host.

  • Verify that the system requirements are met. See System Requirements.

  • Verify that the required ports are open. See Ports and Protocols.

  • If you do not already have one, create the target VM port group network. It is recommended to place NSX-T appliances on a management VM network.

    If you have multiple management networks, you can add static routes to the other networks from the NSX-T appliance.

  • Plan your IPv4 IP address scheme. In this release of NSX-T, IPv6 is not supported.


  1. Download the NSX Controller QCOW2 image to the /var/lib/libvirt/images directory.
  2. (Ubuntu only) Add the currently logged in user as a libvirtd user:
    adduser $USER libvirtd
  3. In the same directory where you saved the QCOW2 image, create a file called guestinfo (with no file extension) and populate it with the NSX Controller VM's properties.

    For example:

    <?xml version="1.0" encoding="UTF-8"?>
             <Property oe:key="nsx_allowSSHRootLogin" oe:value="True"/>
    									<Property oe:key="nsx_cli_audit_passwd_0" oe:value="<password>"/>
             <Property oe:key="nsx_cli_passwd_0" oe:value="<password>"/>
             <Property oe:key="nsx_dns1_0" oe:value=""/>
             <Property oe:key="nsx_domain_0" oe:value="corp.local"/>
             <Property oe:key="nsx_gateway_0" oe:value=""/>
             <Property oe:key="nsx_hostname" oe:value="nsx-Controller1"/>
             <Property oe:key="nsx_ip_0" oe:value=""/>
             <Property oe:key="nsx_isSSHEnabled" oe:value="True"/>
             <Property oe:key="nsx_netmask_0" oe:value=""/>
             <Property oe:key="nsx_ntp_0" oe:value=""/>
             <Property oe:key="nsx_passwd_0" oe:value="<password>"/>

    In the example, nsx_isSSHEnabled and nsx_allowSSHRootLogin are both enabled. When they are disabled, you cannot SSH or log in to the NSX Controller command line. If you enable nsx_isSSHEnabled but not nsx_allowSSHRootLogin, you can SSH to NSX Controller but you cannot log in as root.

  4. Use guestfish to write the guestinfo file into the QCOW2 image.

    If you are making multiple NSX Controllers, make a separate copy of the QCOW2 image for each controller. After the guestinfo information is written into a QCOW2 image, the information cannot be overwritten.

    sudo guestfish --rw -i -a nsx-controller1-build.qcow2 upload guestinfo /config/guestinfo
  5. Deploy the QCOW2 image with the virt-install command.
    user@ubuntu1604:/var/lib/libvirt/images$ sudo virt-install --import --name nsx-controller1 --ram 16348 --vcpus 2 --network=bridge:br0,model=e1000 --disk path=/var/lib/libvirt/images/nsx-controller-release_version_number.qcow2,format=qcow2 --nographics --noautoconsole

    After the NSX Controller boots up, the NSX Controller console appears.

  6. (Optional) For optimal performance, reserve memory for the NSX-T component.

    A memory reservation is a guaranteed lower bound on the amount of physical memory that the host reserves for a virtual machine, even when memory is overcommitted. Set the reservation to a level that ensures the NSX-T component has sufficient memory to run efficiently. See System Requirements.

  7. Open the console of the NSX-T component to track the boot process.
  8. After the NSX-T component boots, log in to the CLI as admin and run the get interface eth0 command to verify that the IP address was applied as expected.
    nsx-component> get interface eth0
    Interface: eth0
      MAC address: 00:50:56:86:7b:1b
      MTU: 1500
      Default gateway:
      Broadcast address:
  9. Verify that your NSX-T component has the required connectivity.

    Make sure that you can perform the following tasks.

    • Ping your NSX-T component from another machine.

    • The NSX-T component can ping its default gateway.

    • The NSX-T component can ping the hypervisor hosts that are in the same network as the NSX-T component using the management interface.

    • The NSX-T component can ping its DNS server and its NTP server.

    • If you enabled SSH, make sure that you can SSH to your NSX-T component.

    If connectivity is not established, make sure the network adapter of the virtual appliance is in the proper network or VLAN.

What to do next

Join the NSX Controller with the management plane. See Join NSX Controllers with the NSX Manager.