AWS Thinkbox Discussion Forums

Installing apps on a node before job starts?

I have a cloud-like environment where new render nodes are spun up relatively dynamically. As such, the render nodes may not / likely will not have the applications installed that we want to use for rendering. We have a rez-based system for installing applications on the render nodes. Since by default, a job won’t render on a node unless the application is already installed on the node, that rez-based system for installing applications won’t be triggered unless the application is already installed. So, chicken, meet egg.

The current approach we use it to install a specific set of applications as the nodes are spun up. We then set the install paths in Tools > Configure Plugins.

Looking at the logs for jobs, it seems that there are a number of plugins / events that could be used to install software as the job spins up. Which is best though? It looks like ‘Sync Files For Job’, ‘Initialize Plugin’ or ‘Start Job’ could be a good place to inject some code to install the applications needed a given job. Advice would be appreciated.

If there’s a way to programmatically update the plugin paths, that would be great to. As minor updates ship from various vendors, it would be great to not have to have someone set paths in Tools > Configure Plugins.

Thanks in advance.

See this example i just did for someone else:

you could use this event, to not only configure your groups, but also pull the required software that your machines need to have.

while we use puppet for major software pushes , we do have a concept of a “dirty” machine, if its dirty, it does a sync, in that sync it pulls across tools or pipeline code it might be missing.

hope this helps.
Kym

Ha. That someone else was also me.

The goal is to have the render jobs drive which packages get installed. I currently have a ‘white list’ of apps that are installed as the slave is launched but want it to be data driven. I’m looking at this page now
https://docs.thinkboxsoftware.com/products/deadline/10.0/1_User%20Manual/manual/event-plugins.html#software-configuration-management-integration
Seems like a good place to start digging.

In theory you could always update one of the machines and make that the new base image…

I’ve been meaning to write a shim for proper Rez support in Deadline forever. I really should just bite the bullet…

2 Likes

@kwatts - Any thoughts on this? Is the REST api used to send those settings from the client to the database documented?

I’d rather the plugins just be changed slightly to accomodate those changes. For example, we could change the def RenderExectuable() for Houdini.py to accept wild-cards then numerically sort them by newest.

I’ll second that. Wildcards would make this problem simpler.

Privacy | Site terms | Cookie preferences