Use shared location for AYON launcher and addons

TL;DR

You can use a shared location for all render nodes by setting the environment variable AYON_LAUNCHER_STORAGE_DIR to that shared path before launching AYON. Note that the folder structure under this path must adhere to the default structure used by the launcher, or it will re-download files from the server.

For more information, see the Launcher Environment Variables documentation.

Use Case: To use shared location for all render nodes.

The following guide was brought from Render node pull Ayon launcher from network | Discord
Many many thanks to @sjt for sharing us his setup.

Launcher Storage Folder structre

The launcher automatically creates and uses the following folder structure to organize files. You will typically only need to manually create the app folder, where the launcher itself is installed.

/network/path/ayon
                 |- addons
                 |    |- ftrack_0.2.1
                 |    |- core_1.1.1
                 |    |- 
                 |    `- ...
                 |- app
                 |    |- AYON 1.1.1
                 |    |- 
                 |    `- ...
                 |- dependency_packages
                 |    |- ayon_2307191209_windows.zip
                 |    |- ayon_{date}_{os}.zip
                 |    `- ...
                 |- 
                 `- ...

Step by step guide

  1. Set AYON_LAUNCHER_STORAGE_DIR to your preferred directory /network/path/ayon
  2. Create an empty folder named app in this shared path /network/path/ayon/app.
  3. Installe ayon app to /network/path/ayon/app.
  4. Test it in CMD. It worked fine and ayon_launcher fetched necessary addons and dependency_packages in the specified paths in the bat file.
  5. Finally, Set Ayon Executable in deadline ayon plugin settings.

Thanks for this guide !
The same method could also be useful for workstations (not only render-farm).

Also, the shared location cannot be read-only, as this appears in your logs :
“Extracting \storage.…\openpype_3.18.2\client.zip \storage.…\openpype_3.18.2”
It may be a problem if you want to avoid people messing with server stuff.
Maybe a solution would be to execute it elsewhere the first time, then move it to the read-only share, but it would only work if the first process/extraction does not write the path somewhere in the processed files (absolute paths).

1 Like

The purpose of the build folder is a hacky one. What I further set up is that I threw out the contents of the addons (after Ayon downloads them) and put a symlink pointing to a folder within the build folder.
e.g.
/network/path/ayon/addons/openpype_3.18.2/openpype --> /network/path/ayon/builds/openpype_3.18.2-rvx.5 (in actuality I use relative symlinks, which work for windows clients, this is just clearer)

I can then update the folder /network/path/ayon/builds/openpype_3.18.2-rvx.5 rapidly (with rsync). So for smaller changes I can just update that build folder and not have to go through the package-upload-copy bundle-copy settings-mark bundle as production-have everyone restart ayon to download the new addon step.

However you can get into sketchy territory here having the addon 3.18.0 point to something like 3.19.1 which can be very confusing. so that is something to keep in mind.

1 Like