Golden image lifecycle
Every VM in your fleet is deployed from a golden image, a versioned snapshot of macOS with Citrix VDA and your organization’s applications pre-installed. The lifecycle repeats with each update cycle:- Base image: Start from a MacStadium public base image (
ghcr.io/macstadium/orka-images/sequoia:latestor similar). - Build: Run
create_image.yml: it deploys a temporary VM, executes your scripts in the/scriptsdirectory, commits the result, pushes the image to your OCI registry, and cleans up. - Version: Tag the image with a version (
v1.0,v1.1, etc.) before pushing to your registry. Tag as:latestonce validated. - Cache: Run
pull_image.ymlto pre-pull the image to all hosts. This avoids download delays at deployment time. - Deploy: Run
deploy.ymlto provision VMs from the cached image. VMs are ready for Citrix VDA registration immediately. - Update: Apply patches or new applications, run
create_image.ymlagain with a new version tag, test, then repeat from step 4.
Creating a Golden Image with Citrix VDA
Golden images serve as templates for rapid VM deployment. A well-crafted golden image contains the base OS, Citrix VDA, and any additional software your users need, all pre-configured and ready to deploy. VMs that are deployed from a golden image are ready for immediate use, with no additional setup required.Golden Image Creation Workflow
Create a VM Image
-
Place your configuration scripts (VDA install, etc.) in the
/scriptsdirectory - Scripts will be executed in alphabetical order
- Example scripts:
Update a VM to a New Image
This implementation doesn’t have a dedicated playbook. To refresh VMs with a new image:Cache Management
Cache a VM Image
pull_image.yml automatically caches the image on all hosts in the inventory.
Version Control Best Practices
- Monitor image cache status
- Remove outdated images when new versions are released
- Establish proper version control for images, using semantic versioning for image tags and naming conventions
- Maintain multiple image tags for flexibility
- Maintain a CHANGELOG.MD or detailed README.MD file documenting changes for each released version of an image
- Commit changes before building VM images, tagging releases in Git to match the image version
- If problems arise with a new image, roll back to a previous version
-
Define your image retention policy by addressing the following questions:
- How long will you keep old image versions?
- Which images will you always want to retain for rollback purposes?
- When will you delete older image versions to free space if needed?
- Will you store major image versions indefinitely? (Strongly recommended for auditing/compliance.)
- When will you delete images tagged as dev/staging?
- Test before promoting images to production.
-
Communicate image updates:
- Notify all impacted stakeholders about updates to VM images.
- Announce new versions as needed in team channels.
- Document breaking changes.
- Schedule production deployments to take place during maintenance windows.
- Before updating an image, provide stakeholders with a rollback plan.

