I created a customizable Photon OS OVA to make deploying a new Photon VM in vSphere easier. Instead of deploying the appliance, signing in with a default password, and then configuring the guest, I can enter the network and access settings directly in the vCenter deployment wizard.
The appliance is available in my public photon-ova GitHub repository. The v1.0.0 release includes the deployable OVA, a SHA-256 checksum, and the build sources.
Why I built a customizable Photon OVA
VMware’s standard Photon OS OVA provides a quick way to deploy the operating system, but it does not expose the network, SSH, NTP, and firewall fields I wanted in the deployment wizard. VMware’s Photon OS OVA import guide describes signing in with the default root account and changeme password, followed by an immediate password change.
My custom OVA lets you set your own root password during deployment. It applies that password on first boot, so there is no default-password login or forced initial password change. The username remains root.
I also added DHCP or static IPv4 configuration, DNS settings, NTP servers, SSH access controls, and a selectable guest firewall. Photon supports other customization approaches, including cloud-init and guest customization; this project packages the settings into a single appliance with a straightforward vCenter wizard workflow.
What you can configure during deployment
The Customize template screen organizes the settings into three categories: Network, Time, and Access.
| Category | Setting | Purpose and default |
|---|---|---|
| Network | Hostname | Set a single DNS label, such as photon01. Default: photon. |
| Network | Network mode | Choose DHCP or static IPv4. Default: DHCP. |
| Network | Static IPv4 address / prefix | Required for static addressing, for example 192.168.10.20/24. |
| Network | IPv4 gateway | Required for static addressing; use a gateway in the same subnet. |
| Network | DNS servers | Comma-separated IP addresses. Required for static mode; optional for DHCP. |
| Network | DNS search domains | Optional comma-separated suffixes, such as lab.example.com. |
| Time | NTP servers | Optional comma-separated hostnames or IP addresses. Blank retains Photon defaults. |
| Access | Root password | Required; at least 12 characters. Sets the password for root. |
| Access | Root SSH public key | Optional single OpenSSH public key; required for key-only SSH access. |
| Access | Enable SSH | Enable or disable remote SSH access. Enabled by default. |
| Access | Allow SSH password login | Enabled by default. Clear this option to use key-only SSH when SSH is enabled. |
| Access | Enable firewall | Enabled by default. Clear this option to disable the Photon guest firewall. |
There is no timezone field. Disabling SSH or SSH password login does not disable root password login through the VM console.
Before you deploy
This guide uses the vCenter Deploy OVF Template workflow. The appliance is Photon OS 5.0 x86-64 with EFI firmware, VMware virtual hardware version 15, 1 vCPU, 2 GB of memory, and a 16 GB virtual disk. Choose a compatible vSphere environment, a datastore, and the destination network before starting.
For a static deployment, reserve an unused IPv4 address and collect its prefix length, gateway, and DNS servers. For DHCP, confirm that the destination network actually provides DHCP. If you are attaching the VM to a VPC subnet, make sure the DHCP server is enabled on that subnet.
Step-by-step deployment in vCenter
1. Download the OVA and checksum
Open the GitHub release page and expand Assets. Download Photon-OS-5.0-Configurable.ova and Photon-OS-5.0-Configurable.ova.sha256. You only need the OVA to deploy; the source ZIP is available if you want to inspect or rebuild the appliance.
On Windows, calculate the downloaded file’s hash in PowerShell and compare it with the checksum file:
Get-FileHash .\Photon-OS-5.0-Configurable.ova -Algorithm SHA256
Get-Content .\Photon-OS-5.0-Configurable.ova.sha2562. Start Deploy OVF Template
Sign in to the vSphere Client connected to vCenter. Right-click the destination cluster, host, or resource pool and select Deploy OVF Template. Choose Local file, select the downloaded OVA, and click Next.
3. Name the VM and select its location
Enter a VM name, such as photon01, and select the inventory folder. Continue to the compute-resource screen and select the destination cluster, host, or resource pool. The inventory name and the guest hostname are separate settings; you will configure the hostname later.
4. Review the template and license
Review the appliance details and any compatibility messages. Read the included license agreement and accept it if you agree, then continue.
5. Select storage
Select the datastore and the appropriate VM storage policy. Choose the virtual disk provisioning format that suits your environment. Thin provisioning is useful in a lab because it allocates storage as the guest uses it.
6. Map the appliance network
Map the OVA’s single source network to the destination port group or VPC subnet. The source network may be listed as None; select the actual destination network rather than leaving the VM disconnected.
7. Configure Network settings
On Customize template, expand Network. Enter the hostname and select dhcp or static.
For DHCP, leave the static address and gateway blank. DNS servers and search domains are optional. If supplied, they override their DHCP-provided counterparts.
For static IPv4, enter the address with its prefix length, the gateway, and at least one DNS server. For example, use address 192.168.10.20/24, gateway 192.168.10.1, DNS servers 192.168.10.10,192.168.10.11, and search domain lab.example.com. Replace these examples with values for your network.
8. Configure Time settings
Expand Time and enter your NTP server hostnames or IP addresses, separated by commas. Leave the field blank to retain Photon’s existing defaults.
9. Configure Access and the firewall
Expand Access and enter a root password of at least 12 characters. If you want key-based SSH, paste a single OpenSSH public key into Root SSH public key.
Leave Enable SSH checked for remote access. For key-only SSH, supply the public key and clear Allow SSH password login. To disable SSH entirely, clear Enable SSH; console root login remains available.
Enable firewall is checked by default. If your deployment calls for disabling the guest firewall, clear it. This disables firewall startup, clears IPv4 and IPv6 rules, and persists across reboots. It does not disable an NSX or VPC firewall.
10. Finish deployment and power on
Review the final settings and click Finish. Wait for the deployment task to complete, then power on the VM. On first boot, the appliance reads the wizard properties and applies the configuration automatically.
What to know after deployment
These properties are first-boot settings. Changing vApp properties after a successful initialization does not reconfigure the VM. Make later changes inside Photon, or deploy a fresh instance with different wizard values. Cloud-init is disabled in this appliance to prevent it from competing with the first-boot configuration.
The image retains Photon OS 5.0 GA packages; it is not a fully updated OS image. Apply the updates appropriate to your environment. Local VMware testing covered import/checksum validation, DHCP and static networking, root and SSH key authentication, SSH controls, firewall on/off, and reboot persistence. Custom NTP configuration was verified, but synchronization against an external time server was not tested.
You can download the appliance, review the scripts, and follow future changes in my photon-ova repository. The original VMware guide remains a useful reference for the standard image; this custom build adds the deployment-time settings I wanted for repeatable Photon deployments.
