Skip to main content
Run these commands from the root of your orka-engine-orchestration clone. They use -i dev/inventory, the inventory next to dev/group_vars, so Ansible loads the variables you set there.

Setup Commands

Test Connectivity

Check Orka Engine Status

Verify Python Version


One-Liner Examples

Install/Upgrade Orka Engine

Plan Deployment (Dry Run)

Deploy VM

Set network_interface to the host’s network interface, for example en0, for bridged networking. Without it, the VM uses NAT, and Citrix Cloud and end users can’t reach it.
Deleting VMs matches names by prefix. delete.yml, and vm.yml with desired_state=absent, delete every VM whose name starts with the vm_name you pass, not only the VM with that exact name. For example, vm_name=citrix-vda-finance deletes every VM in that group. Before you delete, run list.yml and make sure no VM you want to keep has a name that starts with the value you’re passing.

Plan Deletion (Dry Run)

Delete VM

Stop VM

Start VM

Pass network_interface every time you start a VM, including when vm.yml starts a whole prefix group. Orka Engine doesn’t save the network interface with the VM, so a VM started without it comes up on NAT, where Citrix Cloud and end users can’t reach it.

Delete VMs by name prefix

List All VMs

List VMs by Name

Pull Image to All Hosts

Create and Push Custom Image

Create Image with OS Upgrade


Android Virtual Devices

Install Android SDK on Hosts

To force reinstallation on hosts where the SDK is already present:

Install SDK Platforms and System Images

With a specific platform and image types:

Create an AVD (Plan First)

Create an AVD

With custom platform, image type, and resources:

Manage AVD State

List AVDs

Delete AVD by Index

Uninstall SDK Platform


Common Variable Combinations

Deploy with Custom CPU and Memory

Deploy with Network Interface

Deploy to Specific Host

deploy.yml builds its plan on the Ansible control node, so include localhost in --limit.

Image Creation with Auth

Insecure Registry


Image Naming Patterns

MacStadium Public Images

  • Tahoe: ghcr.io/macstadium/orka-images/tahoe:latest
  • Sequoia: ghcr.io/macstadium/orka-images/sequoia:latest
  • Sonoma: ghcr.io/macstadium/orka-images/sonoma:latest

Private Registry Format

  • Full path: registry.example.com/organization/repository:tag
  • With port: registry.example.com:5000/orka/image:v1.0

VM Naming Convention

list.yml, vm.yml, and delete.yml match VM names by prefix, so give related VMs a shared name prefix, and don’t give a VM a name that is the start of another VM’s name. Use clear, descriptive names:
  • dev-desktop-01, dev-desktop-02
  • prod-build-runner-01, prod-build-runner-02
  • ci-macOS-sonoma
AVDs are named automatically based on the VM: {vm_name}-avd-0, {vm_name}-avd-1, etc.

Ansible Shortcuts

Run on Single Host

Playbooks that build a plan or list results on the Ansible control node, such as deploy.yml, delete.yml, and list.yml, also need localhost in the limit: --limit mac-node-1,localhost.

Dry run

The orchestration modules that query Orka Engine don’t support Ansible check mode, so --check fails. To preview changes, run deploy.yml, delete.yml, deploy_avd.yml, delete_avd.yml, or avd.yml with --tags plan:

Verbose Output

Skip Tags

The plays in create_image.yml that deploy the image-host build VM and add it to the inventory aren’t tagged, so --tags configure or --tags push on their own match no hosts and do nothing. To keep the build VM running after the image is pushed, skip the delete step instead:

Step Through Tasks


Best Practices Checklist

Planning and Safety

  • Always use --tags plan before production deployments
  • Test playbooks on single host first with --limit
  • Review deployment plan output before executing
  • Verify capacity before large deployments

Naming and Organization

  • Use clear, descriptive VM names (for example, prod-desktop-01, build-runner-sonoma)
  • Version your images with tags (:v1.0, :v2.0, not :latest in prod)
  • Document VM purposes in inventory comments

Capacity Management

  • Set appropriate max_vms_per_host limits
  • Monitor disk space on hosts regularly
  • Keep Orka Engine updated across all hosts
  • Track VM distribution across hosts

Image Management

  • Place custom configuration scripts in the scripts/ directory at the root of your orka-engine-orchestration clone
  • Test image builds in dev before production
  • Keep base images cached on all hosts
  • Implement regular image rebuild schedule

Security and Operations

  • Store credentials as secrets in the management UI, or pass them at run time with -e. Don’t commit them to Git
  • Maintain inventory file accuracy
  • Use SSH keys (not passwords) for host access
  • Rotate credentials regularly
  • Review deployment logs for errors

State and Tracking

  • Let Ansible manage VMs (use playbooks, not manual creation)
  • Use list.yml to verify state before changes
  • Keep group vars consistent across environments

Support Resources

  • Documentation: MacStadium
  • Support Portal: support@macstadium.com
  • CLI Reference: orka-engine --help
  • VM Commands: orka-engine vm --help
  • Image Commands: orka-engine image --help
  • Project README: Check your repository’s README.md for architecture details