Installing COT

System requirements

  • COT requires either Python 2.7 or Python 3.3 or later.
  • COT is tested to work under Mac OS X and Ubuntu Linux and similar distros.
  • COT now has limited support for CentOS and Python 2.6 as well.

On Mac OS X you can install COT from MacPorts, or you can install it manually by following the same steps as Linux, described below.

Download COT

You can download COT via Git or using HTTP.

git clone git://
cd cot


wget -O cot.tgz
tar zxf cot.tgz
cd cot-master


curl -o cot.tgz
tar zxf cot.tgz
cd cot-master

Install the COT libraries and script

sudo python install

Install helper programs

Certain COT features require helper programs - you can install these as part of the COT installation process, or they can be installed as-needed by COT:

  • COT uses qemu-img as a helper program for various operations involving the creation, inspection, and modification of hard disk image files packaged in an OVF.
  • The cot add-disk command requires either qemu-img (version 2.1 or later) or vmdktool as a helper program when adding hard disks to an OVF.
  • The cot inject-config command requires mkisofs (or its fork genisoimage) to create ISO (CD-ROM) images for platforms that use ISOs.
  • Similarly, for platforms using hard disks for bootstrap configuration, cot inject-config requires fatdisk to format hard disk images.
  • The cot deploy ... esxi command requires ovftool to communicate with an ESXi server. If ovftool is installed, COT’s automated unit tests will also make use of ovftool to perform additional verification that OVFs and OVAs created by COT align with VMware’s expectations for these file types.

COT can attempt to install these tools using the appropriate package manager for your platform (i.e., MacPorts for Mac OS X, and either apt-get or yum for Linux).


Unfortunately, VMware requires a site login to download ovftool, so if you need this tool, you will have to install it yourself. COT cannot install it for you at present.

To let COT attempt to pre-install all of the above helpers, you can optionally run:

cot install-helpers

See here for more details.

If you skip this step, then when you are running COT, and it encounters the need for a helper that has not been installed, COT will prompt you to allow it to install the helper in question.