Create and manage golden images for MacStadium VDI: build images with Citrix VDA pre-installed, automate builds with Ansible, and distribute across hosts.
Image management is critical for maintaining a scalable MacStadium VDI environment. This page covers creating a golden image with Citrix VDA pre-installed, automating image builds, distributing images across hosts, and version control practices for long-term maintenance.
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:latest or similar).
Build: Run create_image.yml: it deploys a temporary VM, executes your scripts in the scripts/ directory, 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 :latest once validated.
Cache: Run pull_image.yml to pre-pull the image to all hosts. This avoids download delays at deployment time.
Deploy: Run deploy.yml to provision VMs from the cached image. deploy.yml only deploys the VM: unless the golden image includes the Citrix VDA, run install_citrix_vda.yml, and then run register_citrix_vda.yml for every new VM.
Update: Apply patches or new applications, run create_image.yml again with a new version tag, test, then repeat from step 4.
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 use once you register each VM’s VDA with Citrix Cloud using register_citrix_vda.yml.
Place your configuration scripts (VDA install, etc.) in the scripts/ directory at the root of your orka-engine-orchestration clone
The playbook runs every *.sh file directly inside scripts/. It doesn’t sort the scripts, so don’t rely on the order they run in: if one step depends on another, put both in the same script.
This implementation doesn’t have a dedicated playbook. To refresh VMs with a new image:
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.
# Step 1: Delete the existing VMansible-playbook -i dev/inventory vm.yml -e "vm_name=citrix-vda-abc123" -e "desired_state=absent"# Step 2: Deploy a replacement VM from the new image version ansible-playbook -i dev/inventory deploy.yml -e "vm_name=citrix-vda-01" -e "vm_image=registry.example.com/citrix-vda/sonoma-golden:v2.0" -e "network_interface=en0"
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.
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.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"MacStadium Docs","description":"Documentation for MacStadium's Apple infrastructure: Orka macOS virtualization for CI/CD, bare metal Mac hosting, MacStadium VDI, and account, billing, and support guides.","colors":{"primary":"#FE9000","light":"#FE9000","dark":"#323151"},"logo":{"light":"https://mintcdn.com/macstadiuminc/qJnYHjjgtjKQ73n9/logo/light.png?fit=max\u0026auto=format\u0026n=qJnYHjjgtjKQ73n9\u0026q=85\u0026s=8095707b80300088ba5f7c1cd8363d18","dark":"https://mintcdn.com/macstadiuminc/qJnYHjjgtjKQ73n9/logo/dark.png?fit=max\u0026auto=format\u0026n=qJnYHjjgtjKQ73n9\u0026q=85\u0026s=a7103488c2b17f28a81966f51e8e7e46"},"favicon":"https://mintcdn.com/macstadiuminc/OBF0bbLSkBRXQGQP/favicon.png?fit=max\u0026auto=format\u0026n=OBF0bbLSkBRXQGQP\u0026q=85\u0026s=f810953a4ccb3af9a5d809d6eba89505","seo":{"metatags":{"google-site-verification":"OeKTGa7HvmEnL1jtMDksZEYQg1LGTk97_JlFSE5nxF4"}},"integrations":{"ga4":{"measurementId":"G-LW571X03HJ"},"telemetry":{"enabled":true}},"banner":{"content":"Welcome to the new MacStadium Documentation site. We've migrated from support.macstadium.com, you're in the right place.","dismissible":true},"contextual":{"options":["copy","view","claude","chatgpt","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"macstadiuminc","hasAudioNarration":false,"actualSubdomain":"macstadiuminc","customDomains":["docs.macstadium.com"],"gitSource":{"type":"github","owner":"macstadium","repo":"macstadium-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"edits":false,"issues":false,"agentFeedback":true,"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af490bac370e18e6a3fdc93","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"Orka","count":109},{"language":"default","tag":"IaaS","count":63},{"language":"default","tag":"Networking","count":53},{"language":"default","tag":"MacStadium VDI","count":40},{"language":"default","tag":"MacStadium","count":28},{"language":"default","tag":"Connecting to Other Clouds","count":19},{"language":"default","tag":"Cisco Firewalls","count":17},{"language":"default","tag":"Resources","count":14},{"language":"default","tag":"Overview","count":13},{"language":"default","tag":"CLI Reference","count":13}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":true,"enableContextualStarterQuestions":true,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"support@macstadium.com","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"remote-desktop-vdi/configuration/image-management","slug":"/remote-desktop-vdi/configuration/image-management","pageMetadata":{"title":"VDI golden image management","description":"Create and manage golden images for MacStadium VDI: build images with Citrix VDA pre-installed, automate builds with Ansible, and distribute across hosts.","zendesk_id":44332794850971,"keywords":["golden image","OCI image","image lifecycle","Citrix VDA image","create_image.yml","VM image management"],"href":"/remote-desktop-vdi/configuration/image-management"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Create and manage golden images for MacStadium VDI: build images with Citrix VDA pre-installed, automate builds with Ansible, and distribute across hosts.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,..._provideComponents(),...props.components},{CodeBlock,Heading,OptimizedImage,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Image management is critical for maintaining a scalable MacStadium VDI environment. This page covers creating a golden image with Citrix VDA pre-installed, automating image builds, distributing images across hosts, and version control practices for long-term maintenance.`}),`\n`,_jsx(Heading,{level:`2`,id:`golden-image-lifecycle`,children:`Golden image lifecycle`}),`\n`,_jsx(_components.p,{children:`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:`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/macstadiuminc/0YsMQFLUbXS5qwex/images/image-lifecycle.svg?fit=max\u0026auto=format\u0026n=0YsMQFLUbXS5qwex\u0026q=85\u0026s=5a614a3ad20727def715f89af34ec878`,alt:`Golden image lifecycle diagram`,\"data-og-width\":`1400`,width:`1400`,\"data-og-height\":`525`,height:`525`,\"data-path\":`images/image-lifecycle.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/macstadiuminc/0YsMQFLUbXS5qwex/images/image-lifecycle.svg?w=280\u0026fit=max\u0026auto=format\u0026n=0YsMQFLUbXS5qwex\u0026q=85\u0026s=56985f689f097045beb417594014028c 280w, https://mintcdn.com/macstadiuminc/0YsMQFLUbXS5qwex/images/image-lifecycle.svg?w=560\u0026fit=max\u0026auto=format\u0026n=0YsMQFLUbXS5qwex\u0026q=85\u0026s=91b2bda1381fe426f5e770178ee7c8fb 560w, https://mintcdn.com/macstadiuminc/0YsMQFLUbXS5qwex/images/image-lifecycle.svg?w=840\u0026fit=max\u0026auto=format\u0026n=0YsMQFLUbXS5qwex\u0026q=85\u0026s=b19f4d1ee3fb89c1df3a845b2942c628 840w, https://mintcdn.com/macstadiuminc/0YsMQFLUbXS5qwex/images/image-lifecycle.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=0YsMQFLUbXS5qwex\u0026q=85\u0026s=a33da66f229a12030c8e74836411b6b5 1100w, https://mintcdn.com/macstadiuminc/0YsMQFLUbXS5qwex/images/image-lifecycle.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=0YsMQFLUbXS5qwex\u0026q=85\u0026s=57cf01128bee65a1181926bd0b5645ad 1650w, https://mintcdn.com/macstadiuminc/0YsMQFLUbXS5qwex/images/image-lifecycle.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=0YsMQFLUbXS5qwex\u0026q=85\u0026s=058cc9efba91bc83ae8190e41715619f 2500w`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Base image:`}),` Start from a MacStadium public base image (`,_jsx(_components.code,{children:`ghcr.io/macstadium/orka-images/sequoia:latest`}),` or similar).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Build:`}),` Run `,_jsx(_components.code,{children:`create_image.yml`}),`: it deploys a temporary VM, executes your scripts in the `,_jsx(_components.code,{children:`scripts/`}),` directory, commits the result, pushes the image to your OCI registry, and cleans up.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Version:`}),` Tag the image with a version (`,_jsx(_components.code,{children:`v1.0`}),`, `,_jsx(_components.code,{children:`v1.1`}),`, etc.) before pushing to your registry. Tag as `,_jsx(_components.code,{children:`:latest`}),` once validated.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Cache:`}),` Run `,_jsx(_components.code,{children:`pull_image.yml`}),` to pre-pull the image to all hosts. This avoids download delays at deployment time.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Deploy:`}),` Run `,_jsx(_components.code,{children:`deploy.yml`}),` to provision VMs from the cached image. `,_jsx(_components.code,{children:`deploy.yml`}),` only deploys the VM: unless the golden image includes the Citrix VDA, run `,_jsx(_components.code,{children:`install_citrix_vda.yml`}),`, and then run `,_jsx(_components.code,{children:`register_citrix_vda.yml`}),` for every new VM.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Update:`}),` Apply patches or new applications, run `,_jsx(_components.code,{children:`create_image.yml`}),` again with a new version tag, test, then repeat from step 4.`]}),`\n`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Run all playbooks from the management UI for day-to-day image operations. See `,_jsx(_components.a,{href:`/remote-desktop-vdi/getting-started/msdc-hosted`,children:`Getting Started: MSDC-Hosted`}),` or `,_jsx(_components.a,{href:`/remote-desktop-vdi/getting-started/self-hosted`,children:`Getting Started: Self-Hosted`}),` for setup instructions.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`creating-a-golden-image-with-citrix-vda`,children:`Creating a Golden Image with Citrix VDA`}),`\n`,_jsxs(_components.p,{children:[`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 use once you register each VM’s VDA with Citrix Cloud using `,_jsx(_components.code,{children:`register_citrix_vda.yml`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`golden-image-creation-workflow`,children:`Golden Image Creation Workflow`}),`\n`,_jsx(Heading,{level:`4`,id:`create-a-vm-image`,children:`Create a VM Image`}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`ansible-playbook -i dev/inventory create_image.yml -e \"vm_image=ghcr.io/macstadium/orka-images/sonoma:latest\" -e \"remote_image_name=registry.example.com/citrix-vda/sonoma-golden:v1.0\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Before running:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Place your configuration scripts (VDA install, etc.) in the `,_jsx(_components.code,{children:`scripts/`}),` directory at the root of your `,_jsx(_components.code,{children:`orka-engine-orchestration`}),` clone`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`The playbook runs every `,_jsx(_components.code,{children:`*.sh`}),` file directly inside `,_jsx(_components.code,{children:`scripts/`}),`. It doesn’t sort the scripts, so don’t rely on the order they run in: if one step depends on another, put both in the same script.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Example scripts:`}),`\n`]}),`\n`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`6`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`scripts=(`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` 01_install_dotnet.sh`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` 02_install_citrix_vda.sh`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` 03_configure_system.sh`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(Heading,{level:`4`,id:`update-a-vm-to-a-new-image`,children:`Update a VM to a New Image`}),`\n`,_jsx(_components.p,{children:`This implementation doesn’t have a dedicated playbook. To refresh VMs with a new image:`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Deleting VMs matches names by prefix.`}),` `,_jsx(_components.code,{children:`delete.yml`}),`, and `,_jsx(_components.code,{children:`vm.yml`}),` with `,_jsx(_components.code,{children:`desired_state=absent`}),`, delete every VM whose name starts with the `,_jsx(_components.code,{children:`vm_name`}),` you pass, not only the VM with that exact name. For example, `,_jsx(_components.code,{children:`vm_name=citrix-vda-finance`}),` deletes every VM in that group. Before you delete, run `,_jsx(_components.code,{children:`list.yml`}),` and make sure no VM you want to keep has a name that starts with the value you’re passing.`]})}),`\n`,_jsx(CodeBlock,{numberOfLines:`6`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`# Step 1: Delete the existing VM`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`ansible-playbook -i dev/inventory vm.yml -e \"vm_name=citrix-vda-abc123\" -e \"desired_state=absent\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`# Step 2: Deploy a replacement VM from the new image version `})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`ansible-playbook -i dev/inventory deploy.yml -e \"vm_name=citrix-vda-01\" -e \"vm_image=registry.example.com/citrix-vda/sonoma-golden:v2.0\" -e \"network_interface=en0\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`Set `,_jsx(_components.code,{children:`network_interface`}),` to the host’s network interface, for example `,_jsx(_components.code,{children:`en0`}),`, for bridged networking. Without it, the VM uses NAT, and Citrix Cloud and end users can’t reach it.`]}),`\n`,_jsx(Heading,{level:`2`,id:`cache-management`,children:`Cache Management`}),`\n`,_jsx(Heading,{level:`3`,id:`cache-a-vm-image`,children:`Cache a VM Image`}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`ansible-playbook -i dev/inventory pull_image.yml -e \"remote_image_name=registry.example.com/citrix-vda/sonoma-finance:v2.0\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`Note: `,_jsx(_components.code,{children:`pull_image.yml`}),` automatically caches the image on all hosts in the inventory.`]}),`\n`,_jsx(Heading,{level:`2`,id:`version-control-best-practices`,children:`Version Control Best Practices`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Monitor image cache status`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Remove outdated images when new versions are released`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Establish proper version control for images, using `,_jsx(_components.a,{href:`https://semver.org/`,children:`semantic versioning`}),` for image tags and naming conventions`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Maintain multiple image tags for flexibility`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Maintain a CHANGELOG.MD or detailed README.MD file documenting changes for each released version of an image`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Commit changes before building VM images, tagging releases in Git to match the image version`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`If problems arise with a new image, roll back to a previous version`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Define your image retention policy by addressing the following questions:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`How long will you keep old image versions?`}),`\n`,_jsx(_components.li,{children:`Which images will you always want to retain for rollback purposes?`}),`\n`,_jsx(_components.li,{children:`When will you delete older image versions to free space if needed?`}),`\n`,_jsx(_components.li,{children:`Will you store major image versions indefinitely? (Strongly recommended for auditing/compliance.)`}),`\n`,_jsx(_components.li,{children:`When will you delete images tagged as dev/staging?`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Test before promoting images to production.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Communicate image updates:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Notify all impacted stakeholders about updates to VM images.`}),`\n`,_jsx(_components.li,{children:`Announce new versions as needed in team channels.`}),`\n`,_jsx(_components.li,{children:`Document breaking changes.`}),`\n`,_jsx(_components.li,{children:`Schedule production deployments to take place during maintenance windows.`}),`\n`,_jsx(_components.li,{children:`Before updating an image, provide stakeholders with a rollback plan.`}),`\n`]}),`\n`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"VDI golden image management","description":"Create and manage golden images for MacStadium VDI: build images with Citrix VDA pre-installed, automate builds with Ansible, and distribute across hosts.","zendesk_id":44332794850971,"keywords":["golden image","OCI image","image lifecycle","Citrix VDA image","create_image.yml","VM image management"],"href":"/remote-desktop-vdi/configuration/image-management"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Golden image lifecycle","slug":"golden-image-lifecycle","depth":2,"children":[]},{"title":"Creating a Golden Image with Citrix VDA","slug":"creating-a-golden-image-with-citrix-vda","depth":2,"children":[{"title":"Golden Image Creation Workflow","slug":"golden-image-creation-workflow","depth":3,"children":[]},{"title":"Create a VM Image","slug":"create-a-vm-image","depth":4,"children":[]},{"title":"Update a VM to a New Image","slug":"update-a-vm-to-a-new-image","depth":4,"children":[]}]},{"title":"Cache Management","slug":"cache-management","depth":2,"children":[{"title":"Cache a VM Image","slug":"cache-a-vm-image","depth":3,"children":[]}]},{"title":"Version Control Best Practices","slug":"version-control-best-practices","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"macstadiuminc","siteName":"MacStadium Docs","title":"VDI golden image management - MacStadium Docs","relatedPagesConfig":{"enabled":true,"limit":5,"mode":"automatic"},"contextualStarterQuestions":[{"_id":"6ae20c4ff51b3c0265f963eb","deploymentId":"69af00bd5a04945e653662f0","questionText":"What is the image lifecycle process?","status":"active","generatedBy":"contextual","path":"remote-desktop-vdi/configuration/image-management","createdAt":"2026-10-28T14:53:03.432Z","updatedAt":"2026-10-28T14:53:03.432Z","__v":0},{"_id":"6ae20c4ff51b3c0265f963ea","deploymentId":"69af00bd5a04945e653662f0","questionText":"How do I create a golden image?","status":"active","generatedBy":"contextual","path":"remote-desktop-vdi/configuration/image-management","createdAt":"2026-10-28T14:53:03.432Z","updatedAt":"2026-10-28T14:53:03.432Z","__v":0},{"_id":"6ae20c4ff51b3c0265f963ec","deploymentId":"69af00bd5a04945e653662f0","questionText":"How do I automate image builds?","status":"active","generatedBy":"contextual","path":"remote-desktop-vdi/configuration/image-management","createdAt":"2026-10-28T14:53:03.432Z","updatedAt":"2026-10-28T14:53:03.432Z","__v":0}],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-28T14:52:56.793Z","originalFileLocation":"remote-desktop-vdi/configuration/image-management.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Create and manage golden images for MacStadium VDI: build images with Citrix VDA pre-installed, automate builds with Ansible, and distribute across hosts.\">\u003cmeta data-mint-head name=\"application-name\" content=\"MacStadium Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/macstadiuminc/D_B1b0VJlo6ZTf9Z/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/macstadiuminc/D_B1b0VJlo6ZTf9Z/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/macstadiuminc/D_B1b0VJlo6ZTf9Z/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/macstadiuminc/D_B1b0VJlo6ZTf9Z/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/macstadiuminc/D_B1b0VJlo6ZTf9Z/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/macstadiuminc/D_B1b0VJlo6ZTf9Z/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/macstadiuminc/D_B1b0VJlo6ZTf9Z/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/macstadiuminc/D_B1b0VJlo6ZTf9Z/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/macstadiuminc/D_B1b0VJlo6ZTf9Z/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"VDI golden image management - MacStadium Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create and manage golden images for MacStadium VDI: build images with Citrix VDA pre-installed, automate builds with Ansible, and distribute across hosts.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"MacStadium Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.macstadium.com/remote-desktop-vdi/configuration/image-management\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://macstadiuminc.mintlify.site/_mintlify/api/og/v2?division=Configuration\u0026amp;title=VDI+golden+image+management\u0026amp;description=Create+and+manage+golden+images+for+MacStadium+VDI%3A+build+images+with+Citrix+VDA+pre-installed%2C+automate+builds+with+Ansible%2C+and+distribute+across+hosts.\u0026amp;theme=6910d86c8f574b452fff4f65\u0026amp;signature=d40dd319f73206f58b6c952e3ac0957e76e4a5e93f3d2c44458937eb3f0a8483\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"VDI golden image management - MacStadium Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create and manage golden images for MacStadium VDI: build images with Citrix VDA pre-installed, automate builds with Ansible, and distribute across hosts.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://macstadiuminc.mintlify.site/_mintlify/api/og/v2?division=Configuration\u0026amp;title=VDI+golden+image+management\u0026amp;description=Create+and+manage+golden+images+for+MacStadium+VDI%3A+build+images+with+Citrix+VDA+pre-installed%2C+automate+builds+with+Ansible%2C+and+distribute+across+hosts.\u0026amp;theme=6910d86c8f574b452fff4f65\u0026amp;signature=d40dd319f73206f58b6c952e3ac0957e76e4a5e93f3d2c44458937eb3f0a8483\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/macstadiuminc/D_B1b0VJlo6ZTf9Z/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"MacStadium Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FE9000\">\u003cmeta data-mint-head name=\"google-site-verification\" content=\"OeKTGa7HvmEnL1jtMDksZEYQg1LGTk97_JlFSE5nxF4\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.macstadium.com/remote-desktop-vdi/configuration/image-management\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/remote-desktop-vdi/configuration/image-management.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.macstadium.com/#organization\",\"name\":\"MacStadium Docs\",\"url\":\"https://docs.macstadium.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/macstadiuminc/qJnYHjjgtjKQ73n9/logo/light.png?fit=max\u0026auto=format\u0026n=qJnYHjjgtjKQ73n9\u0026q=85\u0026s=8095707b80300088ba5f7c1cd8363d18\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.macstadium.com#website\",\"name\":\"MacStadium Docs\",\"url\":\"https://docs.macstadium.com\",\"publisher\":{\"@id\":\"https://docs.macstadium.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.macstadium.com/remote-desktop-vdi/configuration/image-management#webpage\",\"url\":\"https://docs.macstadium.com/remote-desktop-vdi/configuration/image-management\",\"name\":\"VDI golden image management\",\"description\":\"Create and manage golden images for MacStadium VDI: build images with Citrix VDA pre-installed, automate builds with Ansible, and distribute across hosts.\",\"dateModified\":\"2026-10-28T14:52:56.793Z\",\"isPartOf\":{\"@id\":\"https://docs.macstadium.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.macstadium.com/remote-desktop-vdi/configuration/image-management#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.macstadium.com/remote-desktop-vdi/configuration/image-management#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"MacStadium VDI\",\"item\":\"https://docs.macstadium.com/remote-desktop-vdi/overview/what-is-macstadium-vdi\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Configuration\",\"item\":\"https://docs.macstadium.com/remote-desktop-vdi/configuration/ansible-playbook-implementation\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"VDI golden image management\",\"item\":\"https://docs.macstadium.com/remote-desktop-vdi/configuration/image-management\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.macstadium.com/remote-desktop-vdi/configuration/image-management#article\",\"headline\":\"VDI golden image management\",\"name\":\"VDI golden image management\",\"description\":\"Create and manage golden images for MacStadium VDI: build images with Citrix VDA pre-installed, automate builds with Ansible, and distribute across hosts.\",\"url\":\"https://docs.macstadium.com/remote-desktop-vdi/configuration/image-management\",\"mainEntityOfPage\":{\"@id\":\"https://docs.macstadium.com/remote-desktop-vdi/configuration/image-management#webpage\"},\"dateModified\":\"2026-10-28T14:52:56.793Z\",\"keywords\":\"golden image, OCI image, image lifecycle, Citrix VDA image, create_image.yml, VM image management\",\"publisher\":{\"@id\":\"https://docs.macstadium.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.macstadium.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"MacStadium Docs\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"MacStadium Docs\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/remote-desktop-vdi/configuration/image-management.md","siteName":"MacStadium Docs","nav":{"global":null,"groups":[{"group":"MacStadium","pages":[{"group":"MacStadium Overview","pages":[{"title":"MacStadium cloud hosting for Apple hardware","href":"/macstadium/macstadium-overview/macstadium-overview"},{"title":"Use these docs with AI tools","href":"/macstadium/macstadium-overview/use-these-docs-with-ai-tools"},{"title":"MacStadium Portal for subscriptions and support","href":"/macstadium/macstadium-overview/macstadium-portal"},{"title":"Viewing your environment in My Cloud","href":"/macstadium/macstadium-overview/ip-plan"}]},{"group":"Account Management","pages":[{"title":"First-Time SSO Login to MacStadium Portal","href":"/macstadium/account-management-and-saml/first-time-sso-login-to-macstadium-portal"},{"title":"Troubleshooting Credential Issues","href":"/macstadium/account-management-and-saml/troubleshooting-credential-issues"},{"title":"Add a new user to your MacStadium account","href":"/macstadium/account-management-and-saml/add-a-new-user"},{"title":"Two-Factor Authentication (2FA)","href":"/macstadium/account-management-and-saml/two-factor-authentication-2fa"},{"title":"SAML single sign-on for MacStadium accounts","href":"/macstadium/account-management-and-saml/saml-sso"},{"title":"Enable SAML SSO with Okta","href":"/macstadium/account-management-and-saml/enable-saml-sso-with-okta"},{"title":"Enable SAML SSO with Microsoft Entra ID","href":"/macstadium/account-management-and-saml/enable-saml-sso-with-azure-active-directory"},{"title":"Enable SAML SSO with Google Workspace Federation","href":"/macstadium/account-management-and-saml/enable-saml-sso-with-google-workspace-federation"}]},{"group":"Billing","pages":[{"title":"MacStadium vendor onboarding and management","href":"/macstadium/billing/vendor-management"},{"title":"Is an annual commitment tied to specific machines?","href":"/macstadium/billing/is-an-annual-commitment-tied-to-specific-machines"},{"title":"Access and download MacStadium invoices","href":"/macstadium/billing/accessing-invoices"},{"title":"Fix a declined credit card on MacStadium","href":"/macstadium/billing/credit-card-declined"},{"title":"Canceling a MacStadium Subscription","href":"/macstadium/billing/canceling-a-macstadium-subscription"}]},{"group":"Legal and Compliance","pages":[{"title":"Master Services Agreement","href":"/macstadium/legal-and-compliance/master-services-agreement"},{"title":"Service Level Agreement","href":"/macstadium/legal-and-compliance/service-level-agreement"},{"title":"Acceptable Use Policy","href":"/macstadium/legal-and-compliance/acceptable-use-policy"},{"title":"Copyright and Trademark Policy","href":"/macstadium/legal-and-compliance/copyright-and-trademark-policy"},{"title":"MacStadium security and compliance overview","href":"/macstadium/legal-and-compliance/security"}]},{"group":"Support","pages":[{"title":"MacStadium support plans and services","href":"/macstadium/support/support"},{"title":"Service desk guide for MacStadium Macs","sidebarTitle":"Service desk guide","href":"/macstadium/support/service-desk-guide"},{"title":"Update regarding CVE-2026-65400","href":"/CVE-2026-65400"},{"title":"MacStadium Support Tiers","href":"/macstadium/support/macstadium-support-tiers"},{"title":"Creating Slack Tickets","hidden":true,"href":"/macstadium/support/creating-slack-tickets"},{"title":"Mac Configuration Assistance","href":"/macstadium/support/mac-configuration-assistance"},{"title":"MacStadium Remote Hands hardware support","href":"/macstadium/support/remote-hands-service"}]}]},{"group":"Orka","pages":[{"group":"Overview","pages":[{"title":"Orka macOS virtualization platform overview","href":"/orka/orka-overview/orka-overview"},{"title":"How Orka manages VMs","sidebarTitle":"How Orka manages VMs","href":"/orka/orka-overview/how-orka-manages-vms"},{"title":"Orka tools, CLI downloads, and CI/CD plugins","href":"/orka/orka-overview/tools-integrations"},{"title":"Orka compatibility matrix for macOS and hardware","href":"/orka/orka-overview/compatibility-matrix"}]},{"group":"Quick Start Guides","pages":[{"title":"Deploy your first VM with the Orka CLI","href":"/orka/quick-start-guides/orka-cli-quick-start"},{"title":"Deploy your first VM with the Orka REST API","href":"/orka/quick-start-guides/orka-api-quick-start"},{"title":"Orka Web UI quick start guide","href":"/orka/quick-start-guides/web-ui-quick-start"},{"title":"Orka CI/CD integrations quick start guide","sidebarTitle":"CI/CD Integrations Quick Start","href":"/orka/quick-start-guides/cicd-integrations-quick-start"}]},{"group":"Cluster Access","pages":[{"title":"Cluster Access Management: Overview","href":"/orka/orka-cluster-access/cluster-access-management-overview"},{"title":"How access works in Orka","sidebarTitle":"How access works","href":"/orka/orka-cluster-access/how-access-works"},{"title":"Orka authentication, OIDC, and RBAC configuration","sidebarTitle":"Authentication and RBAC","href":"/orka/orka-cluster-access/orka-authentication-and-rbac"},{"title":"Understanding Orka Credentials","href":"/orka/orka-cluster-access/understanding-orka-credentials"},{"title":"Customer Portal: Manage Account Users","href":"/orka/orka-cluster-access/customer-portal-manage-account-users"},{"title":"Log in to your Orka cluster for the first time","sidebarTitle":"Access the Cluster","href":"/orka/orka-cluster-access/orka-cluster-access-the-cluster"},{"title":"Manage namespace access to Orka cluster resources","href":"/orka/orka-cluster-access/orka-cluster-manage-access-to-resources"},{"title":"Manage Orka service accounts for CI/CD","href":"/orka/orka-cluster-access/orka-cluster-manage-service-accounts"}]},{"group":"Networking","pages":[{"title":"MSDC Network Requirements","href":"/orka/networking-with-orka-at-macstadium/msdc-network-requirements"},{"title":"Connect to your Orka cluster via VPN","href":"/orka/networking-with-orka-at-macstadium/vpn-connection"},{"title":"Built-In Orka Domains","href":"/orka/networking-with-orka-at-macstadium/built-in-orka-domains"},{"title":"Custom domains and TLS certificates for Orka clusters","sidebarTitle":"External Custom Domains","href":"/orka/networking-with-orka-at-macstadium/external-custom-domains"},{"group":"AWS","pages":[{"title":"Connect AWS to your Orka cluster","href":"/orka/networking-with-orka-at-macstadium/aws-orka-connections"},{"title":"1. AWS Side of the VPN Tunnel","href":"/orka/networking-with-orka-at-macstadium/1-aws-side-of-the-vpn-tunnel"},{"title":"2. AWS VPN Tunnel Configuration File","href":"/orka/networking-with-orka-at-macstadium/2-aws-vpn-tunnel-configuration-file"},{"title":"3. Orka side of the AWS VPN tunnel","href":"/orka/networking-with-orka-at-macstadium/3-aws-orka-side-of-the-vpn-tunnel"},{"title":"4. Verifying the AWS VPN tunnel","href":"/orka/networking-with-orka-at-macstadium/4-aws-verifying-the-vpn-tunnel"},{"title":"AWS VPN Tunnel Troubleshooting","href":"/orka/networking-with-orka-at-macstadium/aws-vpn-tunnel-troubleshooting"}]},{"group":"GCP","pages":[{"title":"Connect GCP to your Orka cluster","href":"/orka/networking-with-orka-at-macstadium/gcp-orka-connections"},{"title":"1. GCP Side of the VPN Tunnel","href":"/orka/networking-with-orka-at-macstadium/1-gcp-side-of-the-vpn-tunnel"},{"title":"2. GCP VPN Tunnel Configuration File","href":"/orka/networking-with-orka-at-macstadium/2-gcp-vpn-tunnel-configuration-file"},{"title":"3. Orka Side of the GCP VPN Tunnel","href":"/orka/networking-with-orka-at-macstadium/3-orka-side-of-the-gcp-vpn-tunnel"},{"title":"4. Verifying the GCP VPN Tunnel","href":"/orka/networking-with-orka-at-macstadium/4-verifying-the-gcp-vpn-tunnel"},{"title":"GCP VPN Tunnel Troubleshooting","href":"/orka/networking-with-orka-at-macstadium/gcp-vpn-tunnel-troubleshooting"}]}]},{"group":"DevOps Integrations","pages":[{"title":"Jenkins plugin for Orka macOS build agents","href":"/orka/orka-devops-integrations/jenkins"},{"title":"GitHub Actions integration for Orka","href":"/orka/orka-devops-integrations/github-actions"},{"title":"GitLab CI/CD runners on Orka macOS VMs","sidebarTitle":"GitLab","href":"/orka/orka-devops-integrations/gitlab"},{"title":"Buildkite agents on Orka macOS VMs","sidebarTitle":"Buildkite","href":"/orka/orka-devops-integrations/buildkite"},{"title":"TeamCity plugin for Orka macOS build agents","href":"/orka/orka-devops-integrations/teamcity"},{"title":"Packer plugin for automated Orka image builds","href":"/orka/orka-devops-integrations/packer"},{"title":"Harness CI on Orka: Orka-side setup","sidebarTitle":"Harness","href":"/orka/orka-devops-integrations/harness"},{"title":"Azure DevOps agents on Orka","sidebarTitle":"Azure DevOps","href":"/orka/orka-devops-integrations/azure-devops"},{"title":"Bazel remote build execution for iOS and macOS with Orka","sidebarTitle":"Bazel remote build execution","href":"/orka/orka-devops-integrations/bazel-rbe"},{"title":"Bazel remote build execution for iOS and macOS with Orka: quick start","sidebarTitle":"Bazel remote build execution quick start","href":"/orka/orka-devops-integrations/bazel-rbe-quickstart"},{"title":"AI agent integration with the Orka CLI","sidebarTitle":"Orka CLI agent skill","href":"/orka/orka-devops-integrations/claude-code"}]},{"group":"OCI Images","pages":[{"title":"OCI container images for Orka VMs","href":"/orka/oci-images/oci-images-overview"},{"title":"Manage OCI registry credentials in Orka","href":"/orka/oci-images/oci-images-manage-registry-credentials"},{"title":"Deploy Orka VMs from an OCI image registry","sidebarTitle":"Deploy VMs from OCI images","href":"/orka/oci-images/oci-images-deploy-vms"},{"title":"Save Orka VM changes to a local or OCI image","href":"/orka/oci-images/oci-images-preserve-changes"},{"title":"Building a hardened custom image","href":"/orka/oci-images/building-a-hardened-custom-image"},{"title":"Use Harbor OCI storage with the Orka CLI","href":"/orka/oci-images/using-harbor-oci-storage-with-the-orka-cli"},{"title":"Migrate NFS Orka images to OCI format with Harbor","sidebarTitle":"Migrating NFS Images to OCI with Harbor","href":"/orka/oci-images/orka-self-service-migrating-nfs-images-to-oci-with-harbor"}]},{"group":"Kubernetes","pages":[{"title":"Kubernetes-native Orka resource management","href":"/orka/kubernetes-native/k8s-native-overview"},{"title":"Kubernetes persistent volumes in Orka namespaces","sidebarTitle":"Persistent Volumes","href":"/orka/kubernetes-native/k8s-native-persistent-volumes"},{"title":"Orka Kubernetes custom resource definition reference","href":"/orka/kubernetes-native/k8s-native-orka3-crd-reference"}]},{"group":"CLI Reference","pages":[{"title":"Orka CLI Overview \u0026 Configuration","href":"/orka/orka-cli-reference/orka-cli-overview-configuration"},{"title":"Authentication and User Management","href":"/orka/orka-cli-reference/authentication-and-user-management"},{"title":"Manage macOS VM images with the Orka CLI","href":"/orka/orka-cli-reference/image-management"},{"title":"Orka CLI OCI registry credential commands","href":"/orka/orka-cli-reference/oci-registry-integration"},{"title":"Orka CLI VM config templates and deployment","href":"/orka/orka-cli-reference/vm-deployment-and-configuration"},{"title":"Save, commit, and push Orka VM images with the CLI","href":"/orka/orka-cli-reference/vm-lifecycle-management"},{"title":"Manage Android emulators with the Orka CLI","href":"/orka/orka-cli-reference/emulator-management"},{"title":"Orka node management with the CLI","href":"/orka/orka-cli-reference/node-management"},{"title":"Orka namespace management with the CLI","href":"/orka/orka-cli-reference/namespace-management"},{"title":"Role-Based Access Control (RBAC)","href":"/orka/orka-cli-reference/role-based-access-control-rbac"},{"title":"Orka cluster upgrades with the CLI","sidebarTitle":"Cluster upgrades","href":"/orka/orka-cli-reference/upgrade-management"},{"title":"Orka CLI command quick reference","sidebarTitle":"Command quick reference","href":"/orka/orka-cli-reference/command-quick-reference"},{"title":"Orka CLI output formats and built-in help","href":"/orka/orka-cli-reference/output-formats-and-getting-help"}]},{"group":"Resources","pages":[{"title":"Working with Orka VM metadata and custom tags","href":"/orka/orka-resources/working-with-vm-metadata"},{"title":"Bootstrap VMs with User Data","sidebarTitle":"User Data","href":"/orka/orka-resources/userdata"},{"title":"Orka image caching for faster VM deployments","href":"/orka/orka-resources/image-caching"},{"title":"Shared VM storage for Orka CI artifacts","href":"/orka/orka-resources/shared-vm-storage"},{"title":"Orka Burst for on-demand elastic cluster capacity","href":"/orka/orka-resources/burst"},{"title":"Apple silicon Mac servers in Orka","href":"/orka/orka-resources/apple-silicon-based-support"},{"title":"Android emulators on Orka","href":"/orka/orka-resources/android-emulators"},{"title":"Orka Required URL Rules for Filtering","href":"/orka/orka-resources/orka-required-url-rules-for-filtering"},{"title":"VM access ports","href":"/orka/orka-resources/vm-access-ports"},{"title":"Orka VM Tools for guest services on ARM VMs","href":"/orka/orka-resources/vm-tools"},{"title":"Orka cluster scheduling and VM isolation settings","href":"/orka/orka-resources/cluster-configurations"},{"title":"Consuming Metrics from Prometheus","href":"/orka/orka-resources/consuming-metrics-from-prometheus"},{"title":"Consuming Firewall and Network Metrics","href":"/orka/orka-resources/consuming-firewall-metrics"},{"title":"Resiliency, High Availability, and Disaster Recovery","href":"/orka/orka-resources/resiliency-high-availability-and-disaster-recovery"}]},{"group":"Configuration","pages":[{"title":"Enable GPU passthrough for Orka VMs on Intel nodes","sidebarTitle":"Performance: GPU passthrough","href":"/orka/orka-configuration/performance-gpu-passthrough"}]},{"group":"Compatibility","pages":[{"title":"Orka feature parity across Intel and Apple silicon","sidebarTitle":"Feature parity: Apple hardware","href":"/orka/compatibility/feature-parity-apple-hardware"},{"title":"Orka CLI, API, and Web UI feature parity matrix","href":"/orka/compatibility/feature-parity-orka-tools"},{"title":"Orka performance features by hardware and macOS version","sidebarTitle":"Performance improving features","href":"/orka/compatibility/compatibility-performance-improving-features"}]},{"group":"Desktop","pages":[{"title":"What's new in Orka Desktop 3.1.0","href":"/orka/orka-desktop/orka-desktop-310-release-notes"},{"title":"Orka Desktop 3.0 local macOS virtualization tool","href":"/orka/orka-desktop/welcome-to-orka-desktop-30"}]},{"group":"Engine","pages":[{"title":"Orka Engine standalone macOS VM management","href":"/orka/orka-engine/orka-engine-30"},{"title":"Managing your Orka license","href":"/orka/orka-engine/managing-your-orka-license"}]},{"group":"On AWS and On-Prem","pages":[{"title":"Orka on AWS architecture and deployment overview","href":"/orka/orka-on-aws-and-on-prem/orka-on-aws-getting-started"},{"title":"Access Orka on AWS in a private VPC with SSM","href":"/orka/orka-on-aws-and-on-prem/orka-on-aws-vpc-access"},{"title":"Risk Assessment and Mitigation Plan for Orka on AWS","href":"/orka/orka-on-aws-and-on-prem/risk-assessment-and-mitigation-plan-for-orka-on-aws"},{"title":"Orka On-Prem architecture and networking overview","href":"/orka/orka-on-aws-and-on-prem/orka-on-prem-getting-started"},{"title":"Set up the most-allocated scheduler on a self-managed control plane","sidebarTitle":"Most-allocated scheduler","href":"/orka/orka-on-aws-and-on-prem/most-allocated-scheduler-self-managed"},{"title":"Orka Anywhere On-Prem: Troubleshooting VM Deployments","href":"/orka/orka-on-aws-and-on-prem/orka-on-prem-troubleshooting"},{"title":"Using Bridge Networking with Orka 3.5.0","href":"/orka/orka-on-aws-and-on-prem/using-bridge-networking-with-orka-350"}]},{"group":"Cluster Migration","pages":[{"title":"Orka 3.1+ backward compatibility for 2.4.x and 3.0.x","href":"/orka/orka-cluster-migration-from-24-3x/24x-and-30x-to-31x-and-above-backward-compatibility"},{"title":"What persists when migrating Orka 2.4.x to 3.0.0","href":"/orka/orka-cluster-migration-from-24-3x/24x-to-300-what-persists"},{"title":"Post-migration tasks after upgrading Orka 2.4.x to 3.0.0","href":"/orka/orka-cluster-migration-from-24-3x/24x-to-300-after-the-migration"},{"title":"Orka 2.4.x to 3.0.0 CLI command mapping","href":"/orka/orka-cluster-migration-from-24-3x/24x-to-300-cli-mapping"},{"title":"Orka 2.4.x to 3.0.0 API endpoint mapping","href":"/orka/orka-cluster-migration-from-24-3x/24x-to-300-api-mapping"}]},{"group":"Upgrade Guides","pages":[{"title":"How to upgrade your Orka cluster","href":"/orka/orka-upgrades-and-release-notes/orka-upgrades"},{"title":"Run guided Orka cluster upgrades with Upgrade Service","sidebarTitle":"Orka Upgrade Service","href":"/orka/orka-upgrades-and-release-notes/orka-upgrade-service"},{"title":"Upgrade a self-managed Orka Anywhere cluster","sidebarTitle":"Upgrading Orka Anywhere","href":"/orka/orka-upgrades-and-release-notes/upgrading-orka-anywhere"},{"title":"Upgrading Orka on AWS","href":"/orka/orka-upgrades-and-release-notes/upgrading-orka-on-aws"},{"title":"Kubernetes upgrade guide","href":"/orka/orka-upgrades-and-release-notes/kubernetes-upgrade-guide"}]},{"group":"Release Notes","pages":[{"title":"Orka release notes","href":"/orka/orka-upgrades-and-release-notes/orka-release-notes"},{"title":"Orka 3.x release notes","href":"/orka/orka-upgrades-and-release-notes/orka-3-release-notes"},{"title":"Orka component versions by release","sidebarTitle":"Component versions","href":"/orka/orka-upgrades-and-release-notes/orka-component-versions"},{"title":"Orka known issues and fixes by version","sidebarTitle":"Known issues and fixes by version","href":"/orka/orka-upgrades-and-release-notes/known-issues-by-version"}]}]},{"group":"MacStadium VDI","pages":[{"group":"Overview","pages":[{"title":"What is MacStadium VDI: macOS DaaS Hosting","sidebarTitle":"What is MacStadium VDI","href":"/remote-desktop-vdi/overview/what-is-macstadium-vdi"},{"title":"MacStadium VDI architecture and deployment models","href":"/remote-desktop-vdi/overview/architecture"},{"title":"Use cases","href":"/remote-desktop-vdi/overview/use-cases"},{"title":"Prerequisites","href":"/remote-desktop-vdi/overview/prerequisites"},{"title":"Choose your deployment model","href":"/remote-desktop-vdi/overview/choose-your-deployment-model"},{"title":"VDI on bare metal Mac","href":"/remote-desktop-vdi/overview/bare-metal-mac-vdi"},{"title":"MacStadium VDI business outcomes and use cases","href":"/remote-desktop-vdi/overview/business-outcomes-use-cases"}]},{"group":"Getting Started","pages":[{"title":"Getting started: MSDC-hosted","href":"/remote-desktop-vdi/getting-started/msdc-hosted"},{"title":"Self-hosted MacStadium VDI deployment guide","href":"/remote-desktop-vdi/getting-started/self-hosted"}]},{"group":"Configuration","pages":[{"title":"Ansible playbook implementation","href":"/remote-desktop-vdi/configuration/ansible-playbook-implementation"},{"title":"Citrix DaaS configuration","description":"Connect Orka VMs or bare metal Macs to Citrix Cloud for MacStadium VDI: Machine Catalogs, enrollment tokens, VDA install, Delivery Groups, and Rendezvous.","href":"/remote-desktop-vdi/configuration/citrix-daas-configuration"},{"title":"VDI golden image management","href":"/remote-desktop-vdi/configuration/image-management"},{"title":"MDM enrollment for MacStadium VDI desktops","description":"Enroll Orka-provisioned macOS VMs into Jamf Pro, Microsoft Intune, or Iru (Kandji) using a golden image with LaunchDaemon and LaunchAgent scripts.","href":"/remote-desktop-vdi/configuration/mdm-enrollment"},{"title":"Android virtual devices","href":"/remote-desktop-vdi/configuration/android-virtual-devices"},{"title":"Apple Business Manager and MDM with MacStadium","href":"/remote-desktop-vdi/configuration/apple-business-manager-and-mobile-device-management-with-macstadium"},{"title":"MacStadium VDI customer environment tips","href":"/remote-desktop-vdi/configuration/customer-environment-tips"},{"title":"USB passthrough guide","href":"/remote-desktop-vdi/configuration/usb-passthrough-guide"},{"title":"Advanced configuration","href":"/remote-desktop-vdi/configuration/advanced-configuration"}]},{"group":"Operations","pages":[{"title":"IT administrator onboarding guide","href":"/remote-desktop-vdi/it-admin-onboarding-guide"},{"title":"Validation and testing","href":"/remote-desktop-vdi/operations/validation-and-testing"},{"title":"VDI production rollout checklist","href":"/remote-desktop-vdi/operations/production-rollout"},{"title":"MacStadium VDI day-2 operations guide","href":"/remote-desktop-vdi/operations/day-2-operations-guide"},{"title":"Monitoring and observability","href":"/remote-desktop-vdi/operations/monitoring"},{"title":"Incident response and change management","href":"/remote-desktop-vdi/operations/incident-response"},{"title":"Bulk VM lifecycle management","href":"/remote-desktop-vdi/operations/bulk-vm-lifecycle"},{"title":"Deprovision and recover Mac hosts with Jamf Pro","href":"/remote-desktop-vdi/operations/deprovision-and-recover-mac-hosts"}]},{"group":"Reference","pages":[{"title":"MacStadium VDI known issues and limitations","href":"/remote-desktop-vdi/reference/known-issues"},{"title":"Networking requirements","href":"/remote-desktop-vdi/reference/networking-requirements"},{"title":"Ansible quick reference","href":"/remote-desktop-vdi/reference/ansible-quick-reference"},{"title":"MacStadium VDI troubleshooting quick reference","href":"/remote-desktop-vdi/reference/troubleshooting-quick-reference"},{"title":"Shared responsibility guide","href":"/remote-desktop-vdi/reference/shared-user-responsibility-guide-for-macstadium-customers"}]},{"group":"Legacy (Cloud Access)","pages":[{"title":"MacStadium Cloud Access with Teradici PCoIP","href":"/remote-desktop-vdi/cloud-access-legacy/cloud-access"},{"title":"Getting Started with Cloud Access","href":"/remote-desktop-vdi/cloud-access-legacy/getting-started-with-cloud-access"},{"title":"Cloud Access Customer Environment Tips","href":"/remote-desktop-vdi/cloud-access-legacy/cloud-access-customer-environment-tips"},{"title":"Connect to Your Cloud (via VPN)","href":"/remote-desktop-vdi/cloud-access-legacy/connect-to-your-cloud-via-vpn"},{"title":"Cloud Access troubleshooting","href":"/remote-desktop-vdi/cloud-access-legacy/cloud-access-troubleshooting"},{"title":"Connect to Your Cloud (SSH)","href":"/remote-desktop-vdi/cloud-access-legacy/connect-to-your-cloud-ssh"},{"title":"Connect to Your Cloud (Windows)","href":"/remote-desktop-vdi/cloud-access-legacy/connect-to-your-cloud-windows"},{"title":"Setup VPN using Cisco AnyConnect","href":"/remote-desktop-vdi/cloud-access-legacy/setup-vpn-using-cisco-anyconnect"}]},{"group":"Release Notes","pages":[{"title":"MacStadium VDI 1.0 release notes","href":"/remote-desktop-vdi/macstadium-vdi-deployment/vdi-10-release-notes"}]}]},{"group":"IaaS","pages":[{"group":"Overview","pages":[{"title":"Bare Metal Mac Hosting: Infrastructure as a Service (IaaS)","sidebarTitle":"IaaS Overview","href":"/iaas/iaas-overview/infrastructure-as-a-service-iaas"},{"title":"MacStadium data center locations and latency testing","sidebarTitle":"Data Center Locations","href":"/iaas/iaas-overview/data-center-locations"}]},{"group":"Bare Metal Macs","pages":[{"title":"Connecting to your Mac for the first time","href":"/iaas/bare-metal-macs/connecting-to-your-mac-for-the-first-time"},{"title":"Bare metal Mac configurations","href":"/iaas/bare-metal-macs/mac-mini-comparison-chart"},{"title":"MacStadium Bare Metal Mac Benchmarks","href":"/iaas/bare-metal-macs/macstadium-bare-metal-mac-benchmarks"},{"title":"Common macOS CI/CD tools for MacStadium","href":"/iaas/bare-metal-macs/common-tools"},{"title":"Disabling Activation Lock and Find My on Mac","href":"/iaas/bare-metal-macs/2018-mac-mini-deactivation-process"}]},{"group":"Networking","pages":[{"title":"MacStadium IaaS networking overview","href":"/iaas/networking/networking-overview"},{"group":"Cisco Firewalls","pages":[{"title":"MacStadium network onboarding form for new customers","sidebarTitle":"Network Onboarding Form","href":"/iaas/cisco-firewalls/network-onboarding-form"},{"title":"Prepare the VPN Configuration for Input into Cisco ASA/ASAv","href":"/iaas/cisco-firewalls/prepare-the-vpn-configuration-for-input-into-cisco-asaasav"},{"title":"Cisco firewall models, specs, and capabilities","sidebarTitle":"Network Firewalls: Overview","href":"/iaas/cisco-firewalls/network-firewalls-overview"},{"title":"Firewall Upgrade Maintenance: What to Expect","href":"/iaas/cisco-firewalls/firewall-upgrade-maintenance-what-to-expect"},{"title":"Logging into Cisco Firewall","href":"/iaas/cisco-firewalls/logging-into-cisco-firewall"},{"title":"Creating Local User Accounts on a Cisco ASA","href":"/iaas/cisco-firewalls/creating-local-user-accounts-on-a-cisco-asa"},{"title":"Backup and Restore Firewall Config using ASDM","href":"/iaas/cisco-firewalls/backup-and-restore-firewall-config-using-asdm"},{"title":"Managing Cisco ASA firewall interfaces via ASDM","href":"/iaas/cisco-firewalls/managing-interfaces"},{"title":"Network Firewalls Configuration","href":"/iaas/cisco-firewalls/network-firewalls-configuration"},{"title":"Allowing Specific IPs to Access MacStadium via Internet","href":"/iaas/cisco-firewalls/allowing-specific-ips-to-access-macstadium-via-internet"},{"title":"Checking the Firewall Version","href":"/iaas/cisco-firewalls/checking-the-firewall-version"},{"title":"Changing the VPN \u0026 Firewall Password","href":"/iaas/cisco-firewalls/changing-the-vpn-firewall-password"},{"title":"Firewall Change Request Form","href":"/iaas/cisco-firewalls/firewall-change-request-form"},{"title":"Network Firewalls Mac Mini Connect","href":"/iaas/cisco-firewalls/network-firewalls-mac-mini-connect"},{"title":"Network Firewalls for CI Build Node: Homebrew","href":"/iaas/cisco-firewalls/network-firewalls-for-ci-build-node-homebrew"},{"title":"Network Firewalls for CI Build Node: Ansible","href":"/iaas/cisco-firewalls/network-firewalls-for-ci-build-node-ansible"},{"title":"Remote-access VPN through Cisco ASAv network firewalls","sidebarTitle":"Remote-access VPN","href":"/iaas/cisco-firewalls/network-firewalls-cloud-connect-vpn"}]},{"group":"Connecting to Other Clouds","pages":[{"title":"Connect third-party clouds to MacStadium","href":"/iaas/connecting-to-other-clouds/other-clouds"},{"title":"Cloud Connect circuits to AWS, Azure, and Google Cloud","sidebarTitle":"Cloud Connect","href":"/iaas/connecting-to-other-clouds/cloud-connect"},{"title":"Private Cloud Networking Setup","href":"/iaas/connecting-to-other-clouds/private-cloud-networking-setup"},{"title":"Site-to-Site VPN Config","href":"/iaas/connecting-to-other-clouds/site-to-site-vpn-config"},{"group":"AWS","pages":[{"title":"AWS-to-MacStadium VPN troubleshooting","href":"/iaas/aws/aws-troubleshooting"},{"title":"AWS-to-MacStadium VPN networking setup","href":"/iaas/aws/aws-networking-setup"},{"title":"Site-to-site VPN configuration with AWS","href":"/iaas/aws/site-to-site-vpn-configuration-with-aws"},{"title":"AWS VPN Config for Cisco ASA/ASAv","href":"/iaas/aws/aws-vpn-config-for-cisco-asaasav"},{"title":"Verify your AWS-to-MacStadium VPN connection","href":"/iaas/aws/verify-aws"}]},{"group":"Azure","pages":[{"title":"Azure-to-MacStadium VPN networking setup","href":"/iaas/azure/azure-networking-setup"},{"title":"Azure-to-MacStadium VPN troubleshooting","href":"/iaas/azure/azure-troubleshooting"},{"title":"Site-to-Site VPN Configuration with Azure","href":"/iaas/azure/site-to-site-vpn-configuration-with-azure"},{"title":"Azure VPN Config for Cisco ASA/ASAv","href":"/iaas/azure/azure-vpn-config-for-cisco-asaasav"},{"title":"Verify your Azure-to-MacStadium VPN connection","href":"/iaas/azure/verify-azure"}]},{"group":"Google Cloud Platform","pages":[{"title":"GCP-to-MacStadium VPN networking setup","href":"/iaas/google-cloud-platform/google-cloud-networking-setup"},{"title":"Site-to-site VPN configuration with GCP","href":"/iaas/google-cloud-platform/site-to-site-vpn-configuration-with-gcp"},{"title":"GCP-to-MacStadium VPN troubleshooting","href":"/iaas/google-cloud-platform/gcp-troubleshooting"},{"title":"GCP VPN Config for Cisco ASA/ASAv","href":"/iaas/google-cloud-platform/gcp-vpn-config-for-cisco-asaasav"},{"title":"Verify your GCP-to-MacStadium VPN connection","href":"/iaas/google-cloud-platform/verify-gcp"}]}]}]},{"group":"Storage","pages":[{"title":"Private Cloud Network Attached Storage","href":"/iaas/storage/private-cloud-network-attached-storage"},{"title":"Private Cloud VM restorable snapshots","href":"/iaas/storage/restorable-snapshots"}]},{"group":"x86 VMs (Private Cloud VMs)","pages":[{"title":"Private Cloud x86 VMs","href":"/iaas/x86-vms-private-cloud-vms/private-cloud-x86-vms"},{"title":"VM Creation and OS Installation","href":"/iaas/x86-vms-private-cloud-vms/vm-creation-and-os-installation"},{"title":"Creating a New VM with a Recipe","href":"/iaas/x86-vms-private-cloud-vms/creating-a-new-vm-with-a-recipe"},{"title":"Creating a New VM Manually","href":"/iaas/x86-vms-private-cloud-vms/creating-a-new-vm-manually"},{"title":"Manual Windows Installation","href":"/iaas/x86-vms-private-cloud-vms/manual-windows-installation"},{"title":"Windows 2022 Installation","href":"/iaas/x86-vms-private-cloud-vms/windows-2022-installation"}]},{"group":"FAQs","pages":[{"title":"Troubleshooting Connectivity Issues","href":"/iaas/iaas-faqs/troubleshooting-connectivity-issues"},{"title":"MacStadium REST API for server management","href":"/iaas/iaas-faqs/macstadium-api"},{"title":"Hard reboot a MacStadium Mac from the portal","href":"/iaas/iaas-faqs/reboot-your-mac"},{"title":"Root and admin access on MacStadium Mac servers","href":"/iaas/iaas-faqs/do-i-have-root-and-admin-access-to-subscription-based-mac-servers"},{"title":"Can I change the OS on my server from macOS to Linux?","href":"/iaas/iaas-faqs/can-i-change-the-os-on-my-server-from-macos-to-linux"},{"title":"Fix high CPU from coreaudiod and launchd on macOS","sidebarTitle":"coreaudiod and launchd high CPU","href":"/iaas/iaas-faqs/why-are-coreaudiod-and-launchd-using-a-high-amount-of-resources"},{"title":"What is instant provisioning and how long does it take?","href":"/iaas/iaas-faqs/what-is-instant-provisioning-and-how-long-does-it-take"},{"title":"How do I order multiple servers at one time?","href":"/iaas/iaas-faqs/how-do-i-order-multiple-servers-at-one-time"},{"title":"How do I find the hardware serial number for my service?","href":"/iaas/iaas-faqs/how-do-i-find-the-hardware-serial-number-for-my-service"},{"title":"Can I attach an external drive to my Mac?","href":"/iaas/iaas-faqs/can-i-attach-an-external-drive-to-my-mac"},{"title":"How do I disable SIP on my Mac?","href":"/iaas/iaas-faqs/how-do-i-disable-sip-on-my-mac"}]}]}]},"basePath":"","title":"VDI golden image management - MacStadium Docs","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-DTFzvaXJ.js","lightbox-handle-r17bVUz3.js"]}