ra2 studio - Fotolia


Getting acquainted with the VMware Photon Controller

VMware Photon Controller has created quite a lot of buzz. Learn how to get started and manage your Photon images.

Photon Controller came out of the VMware skunkworks that was Project Bonneville. One half of the VMware container-based Photon Platform, Photon Controller's purpose is to effectively manage Photon images and the Docker instances that sit on it.

Photon Controller is currently provided as a self-contained Open Virtualization Format (OVF) file that is deployed onto the host. Think of Photon Controller as the central management server for Docker instances.

In a departure from what one might consider classic VMware, Photon Controller is not primarily managed through the graphical user interface, but is console-driven. The command line is a first class citizen in the new VMware "Docker-centric" world. All interactions are also application programming interface (API) driven, which is more in keeping with the way scaling infrastructure works. Photon Controller is also agnostic about available clustering technology and includes Swarm, Mesos and Kubernetes -- Google's open source clustering technology.

Photon Controller isn't currently generally available (GA); the GA release is due within the next few weeks. For this demo, I will be using VMware Workstation and the beta version of Photon Controller.

Testing out the beta version of Photon Controller
To get started, download the Controller OVF file from GitHub to your workstation; at present, this is the only deployment method, though this will change during the production release. For a basic installation, you will need a desktop with at least 16 GB of RAM and 50 GB of available storage.

Before deploying the infrastructure, the Network Address Translation (NAT) network needs to be modified. From the Workstation main menu, select "Edit/Virtual Network Editor." Select "VMnet8" and modify the subnet details as following:

Subnet IP
Subnet Mask

You will also need to edit the Dynamic Host Configuration Protocol scope to start at

Once the network portion is configured we can start to deploy the hosts. To deploy a test ESXi host, create a custom VM with ESXi 6, 8 GB of RAM and 40 GB of disk space; the rest may be left as standard. Next, attach the ISO image and assign two CPUs. For networking, select NAT as the default. Next, attach an ESXi 6 install ISO to the server, boot it and follow through to install ESXi. As the Photon Controller is not currently customizable, you must ensure that the ESXi host is set up with the following IP details:

IP Address:
Network mask

Once this has been completed, deploy the Photon Controller as you would any other OVF and power it on. Deploying this server will take several minutes. Assuming all goes according to plan, you may now log in to the console using the username "root" and password "vmware." Assuming the networking is correct, you should be able to ping the Photon Controller on

At this point we can configure the Photon Controller part of the application. To log in to the server using a Web browser, go to the following URL:

This is the Swagger interface, which allows you to see the status of the Photon Controller. It may take several minutes to start up. Once this is complete, download the Photon Controller CLI application to the local hard drive. At this point, the Photon Controller should be up and running but does not manage any hosts yet. This is done using the Photon Controller CLI. Using the application in a command shell, issue the following command:

photon target set

You will need to trust the certificate offered. The command shown above effectively specifies the controller we wish to manage. After all, you could eventually manage several controllers.

Specifying controller management settings
Figure A. Specify which controller you wish to manage with a Photon Controller CLI command.

At this point, we can quite simply add the hosts to the controller. Again, using the Photon Controller CLI, enter the following command:

Photon host create –-root –-password "password for ESXi host" –-tag CLOUD –address

When prompted for metadata, just hit the enter key, as it isn't important at this stage. At this point, Photon will install the Photon vSphere Installation Bundle that allows Photon Controller to manage it. To check the status of the installation, you can use this Photon command:

Photon host list

Hopefully, it should show the status of the host listed as ready.

Specifying Docker tenant and project with Photon Controller CLI

As you know, Docker is all about cloud and multi-tenancy setups. In the current version, the tenant and project are limited to the ones preinstalled.

We need to use the Photon Controller CLI to set these options to specify the tenant and the project in question. To do so, enter the following commands:

Photon tenant set demo
Photon project set dev-project

This is all well and good but without clustering, it's a bit limited. As discussed in my previous article on Photon Platform, it is essentially a Docker platform host with VMware APIs and features built in. On top of this, Docker has its own native clustering technology, Swarm.

To implement a Swarm cluster, we can use some pre-configured disks that VMware has provided. First, we must download the Swarm Virtual Machine Disk (VMDK) file and upload it to our ESXi host. Once this is completed, use the Photon command listed below to register them on the server:

 photon image create photon-swarm-vm.vmdk -n photon-swarm

vm.vmdk –I EAGER

Implementing a Swarm cluster
Figure B. Implement a Swarm cluster with a Photon command.

Unfortunately, at present, the name function (-n) requires the name to be photon-swarm-vm.vmdk. Hopefully, this will not be the case when it becomes GA. Also note that you need to specify the location. Mine is in the same directory as in my Photon executable:

photon cluster create –n Swarm –k Swarm –-dns – gateway –-netmask –-etcd1 – s 2

You could run this again without options and it will ask all the questions we just answered on the command line. At this stage, we have a cluster and the final step is deploying the actual application.

Once you've deployed Photon Controller and implemented a Swarm cluster, you can use the standard Docker tools to install applications. If you look at the ESXi host using the vSphere Client, you will see all the hosts we created during this task.

Looking at the ESXi host with vSphere Client
Figure C. A list of hosts shown on the ESXi host with vSphere Client.

All of the names appear random due to the fact that Docker doesn't use "nice names," but rather pseudo-randomly generated host names. Now you can see why we use the Photon tool to manage the instances. Photon Platform is poised to be the new wave of VMware computing focusing on container-based virtualization. As such, I wholeheartedly recommend playing around with it to see how it all fits together.

Next Steps

Photon Controller makes VMware containers a reality

VMware's reaction to the cloud and containerization

VMware containerized apps owe a lot to virtualization

Dig Deeper on VMware new releases and updates