VMware Photon Platform is an opensource cloud platform build by VMware on top for ESXi. It is specifically build to run containerized and cloud native applications. As such it pushes a lot of features into the application layer and out of the infrastructure. For example: It doesn’t support VMware HA or DRS. Or even vMotion. In this post I’ll help you getting started with VMware Photon Platform.

Update 19-04-2017: This post was based on Photon platform 1.1.1. As of today the current version is Photon platform 1.2. The only supported ESXi version is now ESXi 6.5, Patch 201701001. The steps in this post may or may not work for version 1.2.

The platform

The Photon platform contains a few different components:

Photon installation appliance: Deploy this appliance first an use it to deploy other photon components

Lightwave: This is similar to VMware SSO

Photon Controller: This is basically a vCenter replacement. It has a scale-out architecture and provides the Photon API, multi tenancy and resource management

HA Proxy: Loadbalances requests to the Photon Controllers

Photon OS: A tiny Linux distribution optimized to run Docker containers

Photon Agent: This is running on each ESXi host managed by Photon controller

Photon supports the following VMware technologies:

vSAN: aggregate your local disks into a large storage pool. Since there is no vCenter server in a photon deployment you need an additional appliance to manage vSAN

NSX: Photon integrates with VMwares SDN platform. But again: not vCenter. So you’ll only be able to use NSX-T, not the wel known NSX-v

Getting Photon Platform up and running

There is a quickstart guide which gives you most information you need t deploy Photon Platform. Use the steps below to save some time and fill in some blanks.

Prepare your lab

Download the installer OVA here. Download ESXi 6.0.0 here (note: 6.5 is not supported at the moment of writing) Download patch with build number4600944 here (yes, photon only supports this specific build nr sadly…) Install two ESXi 6.0.0 hosts. I run them as virtual machines on my home lab. DO NOT CONNECT THEM TO A VCENTER! Both ESxi hosts need a local or shared datastore If you’re following my instruction you’ll have to name them “local02”. I used 150GB datastores which is sufficient to deploy the Photon components on one host. I have 23.4GB left on host running the platform. SCP the patch to the fresh hosts and use this KB article for instructions on how to deploy the patch Make sure you have at least 1 static IP available in the network where you’ll be deploying Photon. Obviously that IP should be able to reach the ESXi hosts

Deploy Photon

Deploy the photon-installer ova file to one of the ESXi hosts. Just use the good ol’ vSphere C# client :). The quickstart guide mentions the web client but there is no webclient on ESXi 6.0…. Of course you can use the web client fling but that would add another step to this process. Prepare a YAML file. The quickstart guide describes the file you need. One thing the guide doesn’t mention is the fact that you need a complex password of at least 8 characters for the lightwave administrator. If you don’t the installer won’t throw an error, the installation of lightwave will just fail with a very generic error. something that is in de quickstart guide but I missed at first is the fact that all components need to use the lightwave server as their DNS server. Only the lightwave server itself uses your own DNS server. Below is the YAML I used. You’ll probably have to replace the IP addresses and it assumes that the root password for your ESXi hosts is “password”. It also assumes that your ESXi hosts have a datastore called “local02”. another thing you might notice: I’m not joining the host where the photon appliances are deployed to the photon controller. Somehow I can’t get that to work. compute: hypervisors: vesxi60: hostname: "vesxi60" ipaddress: "192.168.192.6" dns: "192.168.192.78" credential: username: "root" password: "password" vesxi60c01: hostname: "vesxi60c01" ipaddress: "192.168.192.23" dns: "192.168.192.78" credential: username: "root" password: "password" lightwave: domain: "photon.lab" credential: username: "administrator" password: "Passw0rd123!" controllers: lightwave: site: "homelab" appliance: hostref: "vesxi60" datastore: "local02" memoryMb: 2048 cpus: 2 credential: username: "root" password: "password" network-config: network: "NAT=VM Network" type: "static" hostname: "lightwave.photon.lab" ipaddress: "192.168.192.78" dns: "192.168.192.21" ntp: "nl.pool.ntp.org" netmask: "255.255.255.0" gateway: "192.168.192.1" photon: imagestore: img-store-1: datastore: "local02" enableimagestoreforvms: "true" cloud: hostref1: "vesxi60c01" controllers: pc: appliance: hostref: "vesxi60" datastore: "local02" memoryMb: 2048 cpus: 2 credential: username: "root" password: "password" network-config: network: "NAT=VM Network" type: "static" hostname: "pc.photon.lab" ipaddress: "192.168.192.77" netmask: "255.255.255.0" dns: "192.168.192.78" ntp: "95.211.160.148" gateway: "192.168.192.1" loadBalancer: plb: appliance: hostref: "vesxi60" datastore: "local02" credential: username: "root" password: "password" network-config: network: "NAT=VM Network" type: "static" hostname: "plb.photon.lab" ipaddress: "192.168.192.76" netmask: "255.255.255.0" dns: "192.168.192.78" ntp: "nl.pool.ntp.org" gateway: "192.168.192.1" 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 compute : hypervisors : vesxi60 : hostname : "vesxi60" ipaddress : "192.168.192.6" dns : "192.168.192.78" credential : username : "root" password : "password" vesxi60c01 : hostname : "vesxi60c01" ipaddress : "192.168.192.23" dns : "192.168.192.78" credential : username : "root" password : "password" lightwave : domain : "photon.lab" credential : username : "administrator" password : "Passw0rd123!" controllers : lightwave : site : "homelab" appliance : hostref : "vesxi60" datastore : "local02" memoryMb : 2048 cpus : 2 credential : username : "root" password : "password" network-config : network : "NAT=VM Network" type : "static" hostname : "lightwave.photon.lab" ipaddress : "192.168.192.78" dns : "192.168.192.21" ntp : "nl.pool.ntp.org" netmask : "255.255.255.0" gateway : "192.168.192.1" photon : imagestore : img-store-1 : datastore : "local02" enableimagestoreforvms : "true" cloud : hostref1 : "vesxi60c01" controllers : pc : appliance : hostref : "vesxi60" datastore : "local02" memoryMb : 2048 cpus : 2 credential : username : "root" password : "password" network-config : network : "NAT=VM Network" type : "static" hostname : "pc.photon.lab" ipaddress : "192.168.192.77" netmask : "255.255.255.0" dns : "192.168.192.78" ntp : "95.211.160.148" gateway : "192.168.192.1" loadBalancer : plb : appliance : hostref : "vesxi60" datastore : "local02" credential : username : "root" password : "password" network-config : network : "NAT=VM Network" type : "static" hostname : "plb.photon.lab" ipaddress : "192.168.192.76" netmask : "255.255.255.0" dns : "192.168.192.78" ntp : "nl.pool.ntp.org" gateway : "192.168.192.1" Save the yml above to a file and copy it to the photon installer appliance. The root password for the appliance is “changeme”. I stored the file in /root/photon.yml Log into the photon installer appliance over SSH (root/changeme) run: cd /opt/vmware/photon/controller/bin run: ./photon-setup platform install -config /root/photon.yml watch the magic happen 🙂 when the magic is finished connect a browser to the loadbalancer ip. If you used my yml go to: https://192.168.192.76:4343 Log in using the lightwave administrator credentials. If you used my yml that would be: administrator@photon.lab / Passw0rd123! Tadaa: The GUI is nice but a lot of features are still missing. If you want to use photon you’ll need the CLI. you can find it on the Github releases page and here are instructions on how to install it.

Using Photon

This post is lengthy enough as it is so I won’t go into details here. One of the features of Photon is that it can deploy a Kubernetes cluster for you. I’m also working on a post explaining how to use BOSH with photon.