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.


  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 16384 --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 Data Center 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 Data Center component has sufficient memory to run efficiently. See System Requirements.

  7. Open the console of the NSX-T Data Center component to track the boot process.
  8. After the NSX-T Data Center 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 Data Center component has the required connectivity.

    Make sure that you can perform the following tasks.

    • Ping your NSX-T Data Center component from another machine.

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

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

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

    • If you enabled SSH, make sure that you can SSH to your NSX-T Data Center 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.