- Routine capacity and image management
- User lifecycle operations
- Backup and recovery
- You’ve completed the initial deployment process
- You’re familiar with basic Orka operations
- You have admin access to Citrix Cloud, Orka hosts, and your Ansible control node
- Your environment is operational with active users
- SSH access to MacStadium VDI hosts
- Citrix Cloud admin credentials
- A project set up with an Ansible control node running Orka Engine
- You have access to your container registry
For advanced configuration topics (bridged networking, HDX tuning, automation, multi-tenancy), see Advanced Configuration. For incident response, change management, and compliance, see Incident Response & Change Management.
Routine operations
Capacity management
Monitoring host utilization:
Check the current VM distribution across your Orka hosts by running the following Ansible script:/var/orka.
Setting up basic monitoring
Use a cron job to capture daily stats on your Ansible control node. For example, the following cron job would add daily capacity to an existing Ansible node daily at 6:00 AM:Scaling up: Adding new Mac hosts
When you need to scale up:
- Your existing Orka hosts are consistently above 70% CPU utilization
- Users are reporting slowness during peak hours
- You are planning to add more desktops than your current host capacity supports
Steps to add a new Mac host:
-
Provision physical Mac hardware with MacStadium
- Contact MacStadium support to add nodes to your private cloud
- Request a host in same subnet as your existing infrastructure
- Install MacStadium VDI on your new Mac host machine(s)
- Add host to Ansible inventory
inventory.ini:
- Verify connectivity to the new host:
- Confirm the Orka Engine version matches existing host(s):
- Pull required images to the new host:
- Test VM deployment on the new host:
- Deploy production VMs
vm_name each time.
This may take anywhere between 2-4 hours for full host integration and testing.
Scaling Down: Decommissioning Hosts
When you might scale down:
- Your user count has reduced (for example, seasonal workers have been offboarded)
- You are consolidating to newer hardware
- Cost optimization during low-usage periods
Steps to decommission a host:
- Identify VMs on the target host:
- Choose your migration strategy:
- Notify users 48 hours in advance
- Have your users back up critical data to their network drives
- Take VM snapshots
- Delete VMs from the old host and redeploy them on the remaining hosts
- Restore your user data from existing backups Most environments avoid this by enforcing network storage policies where user data is never stored locally on VMs.
- Remove the host from your Ansible inventory
inventory.ini and remove the host:
- Verify VM distribution across hosts
- Contact MacStadium to decommission hardware
Image updates and patching
macOS Security Updates
Frequency: Monthly (as Apple releases updates) Testing requirement: Always test updates on non-production VMs before rolling out to users. Recommended workflow:Create a test image
- Deploy a test VM from your current golden image:
- Access the test VM and install updates
- Navigate to System Settings → General → Software Update
- Install all available updates
- Reboot as needed
- Verify Citrix VDA still functions:
- Check VDA registration: System Preferences → Citrix VDA
- Test user login through Citrix Workspace
- Test HDX features (clipboard, file transfer, USB)
- Run the following example Ansible playbook to capture the updated VM as a new image version:
- Delete the test VM
Pilot update rollout
You may want to deploy the updated image to a small group of users first, as seen in the following example Ansible playbook:vm_name each time.
You will want to monitor the updated image deployment for 3-5 business days, collecting user feedback on any new issues or errors, performance changes, and application compatibility issues that may arise.
Full production rollout
If the pilot succeeds, you can proceed to update all VMs in production. For pooled desktops, this process is straightforward, as seen in the following Ansible playbook example:Application Updates
Frequency: Varies by application (update applications quarterly or as-needed) Process: Same as the macOS updates process documented above, but you will want to modify the VM to install application updates before creating a new golden image. Example: Updating Xcode- Deploy a test VM from the current golden image
- Install new Xcode version from Mac App Store or Apple Developer
- Test Xcode functionality (build a test project)
- Create a new golden image
- Pilot the new golden image with your developer team
- Roll the new golden image out to production
registry.example.com/citrix-vda/dev-tools:v1.0- Xcode 14.3, Sonoma 14.0registry.example.com/citrix-vda/dev-tools:v1.1- Xcode 15.0, Sonoma 14.1registry.example.com/citrix-vda/dev-tools:v1.2- Xcode 15.2, Sonoma 14.3 You will want to store your CHANGELOG.MD file in your project’s git repository alongside your Ansible playbooks.
Citrix VDA Updates
Frequency: Quarterly (Citrix releases updates every 3-4 months) Check for updates: Citrix Cloud Console → Updates & Announcements Update Process:- Download the new VDA installer from Citrix
- Deploy a test VM from your current golden image
-
Install the new VDA version:
- Copy the VDA installer to the VM
- Run the VDA installer (this may require uninstalling the old version first)
- Reboot the VM
- Verify VDA registration and HDX functionality works as expected
- Create a new golden image with the updated Citrix VDA version
- Pilot the new image and roll out to production as described above
User Lifecycle
Onboarding New Users
Scenario: A new employee needs access to a macOS desktop. For pooled desktops:- Add the new user to a Citrix Delivery Group:
- Verify capacity
- User logs in
Reassigning Desktops
Scenario: A user moves to a different department and needs different applications. For pooled desktops:- Remove the user from their old Delivery Group
- Add user to the new Delivery Group
- User logs out and logs back in, and gets assigned a VM from the new pool
- Have the user back up their important files to network storage
- Delete the user’s old VM
- Deploy a new VM from the appropriate golden image
- Add the user to their new Delivery Group
- The user then restores their backed-up files
Offboarding and Data Retention
Scenario: An employee leaves the company or no longer needs macOS access. Process:- Remove user from the Citrix Delivery Group
- For dedicated desktops: handle data retention
- SSH to the Orka host running the VM
-
Use
orka-engine vm backupor host-level snapshots to capture the VM disk (if your environment supports this) - Store the VM backup for the required retention period (check your company’s data retention policies)
- Delete the VM
Backup and Recovery
VM Snapshot Strategies
Important limitation: Orka Engine does not have native VM snapshot functionality built into the Ansible playbooks. Snapshots must be handled at the host storage level. Available backup approaches: Approach 1: Golden image versioning (this is recommended for most environments) Rather than backing up individual VMs, maintain version history of your golden images. This works well for pooled desktops where user data isn’t stored on VMs. How it works:- Keep the last 3-4 versions of each golden image in your container registry
- If any issues arise, redeploy VMs from the previous golden image version
- User data is stored on network file shares, not on VMs
- Production images: It is recommended to keep the last four golden image versions (approximately 4-6 months)
- Development/test images: Keep the last two golden image versions
- SSH to your MacStadium VDI host
- Use APFS snapshot capabilities on the host:
- Restore the desktop by copying the image snapshot back to the VM disk location
Image Backup Procedures
Backup your golden images regularly:
Method 1: Container registry replication Configure your container registry to replicate to a secondary registry for disaster recovery. Primary:registry.example.comSecondary:
backup-registry.example.com (located in a different datacenter)
Most container registries (Docker, GitHub Container Registry, Harbor, JFrog Artifactory) support replication. Consult your registry’s official documentation for more information.
Method 2: Export images to file storage
Manually export images for offline backup:
Disaster Recovery Runbook
Scenario: Complete loss of Orka hosts (datacenter failure)
Prerequisites:- Secondary MacStadium VDI environment located in a different datacenter (requires MacStadium private cloud in multiple locations)
- Golden images replicated to a secondary registry accessible from the DR site
- Ansible inventory configured with DR hosts
Recovery steps:
- Update your Ansible inventory to point to the specified disaster recovery hosts
- Pull images to disaster recovery hosts
- Deploy VMs in the disaster recovery environment
vm_name each time.
4. Update Citrix Cloud configuration
VMs will automatically register with Citrix Cloud if:
- The specified disaster recovery VMs can reach Citrix Cloud (outbound HTTPS)
- Citrix VDA configuration includes the correct Cloud Connector details
- Notify users of temporary environment changes
- Different VM IP addresses (if you have IP-based network policies)
- Slightly different VM performance characteristics
- Needing to reconnect to their desktop through Citrix Workspace
With daily image backups: Expect up to 24 hours of configuration changes will be lost. Cost consideration: Most customers don’t maintain a full disaster recovery environment due to hardware costs. Alternatively, you can accept longer RTO periods and work with MacStadium to provision new hosts on-demand during disaster recovery.
Data Restoration Workflows
Scenario: User accidentally deletes important files
For pooled desktops:
User data should not be stored on VMs. Redirect users to restore from network file shares, OneDrive, or other corporate backup systems. If user data was incorrectly stored on a pooled VM and is now lost, there is no recovery path. Use this as a learning opportunity to reinforce data storage policies.For dedicated desktops:
Recovery depends on your backup approach. If you are using host-level snapshots:- SSH to the MacStadium VDI host
- Stop the affected VM:
- Restore VM disk from snapshot (manual process; depends on host storage configuration)

