Igor is a scheduler for clusters that host ad-hoc multi-user/multi-project work. Users can reserve and provision cluster nodes with net-boot or local-boot images of their choice. Users can also create groups that share access to reservation management. Administrators can fine-tune reservation creation and resource access across a wide variety of settings from open and permissive to regulated and tightly controlled.
The two main goals of Igor are to:
Let users control when and how to schedule blocks of time on cluster compute nodes.
Remove most of the onerous tasking admins have to do to support usage of cluster resources by different teams with different needs.
Igor is written in the Go programming language and its web application interface in VueJS.
History
Igor began as part of the Emulytics toolset for minimega, itself a tool for launching and managing massive numbers of virtual machines quickly and at scale. It’s setup speed could be significantly enhanced by not having to wait for an admin team to approve and provision cluster nodes on which it could run. It could also leverage Igor’s ability to communicate directly with the cluster switch system to assign reserved nodes to the same VLAN group. This served the minimega community well in the beginning, but over time a wish list developed among users and admins that pointed to the need for Igor to grow into a more mature tool.
Igor’s place in the toolset puts it on the primary Emulytics Stack, installed on the head node of a cluster.
Today, Igor still serves its primary function of procuring nodes for usage in minimega environments. However, it is now a sibling project in recognition that its usefulness extends outside that community to wherever a multi-purpose cluster environment could benefit from its capabilities.
Support
Need help? Have a suggestion? Need to report a bug? Please use our GitHub issues page to communicate with us, and please mark your entry with the appropriate label.
Release Notes
v2.0.0
20 April 2023
Initial release!
v2.1.0
16 September 2024
New Features
Added support for UEFI hardware boot configuration.
Igor can now automatically sync account creation and removal with one or more LDAP user groups.
Igor user group membership can now be synchronized with LDAP user group membership. An LDAP-synced group can only be created by the owner or delegate of the corresponding LDAP group. Only members with an Igor account are synced, so the LDAP group does not need to have a strict 1:1 match with Igor account holders.
Igor groups (both internal and LDAP-synced) now support multiple owners.
The admin host block feature can now be used on reserved nodes. Users will not lose access to blocked nodes, but reservation extensions will not work until the node is no longer blocked.
Igor now includes a database migration feature for upgrades that require changes to tables.
Added an explicit igor login command for the CLI.
The igor res show command now defaults to displaying only the user’s reservations, similar to igor show. Use the --all flag to see all reservations.
Updates
Bump the minimum Go language compiler requirement to version 1.21.
Update go crypto package to address CVE vulnerability.
Fixes
The single-node selection in Igorweb when making a new reservation by CTRL-clicking on the node map now works correctly.
Fixed the issue where maintenance-mode reservations were not getting the correct end time if the server had been off for an extended period.
Resolved the issue where some email reservation expiry warnings were not being sent.
Fixed the issue where some node power permissions were being dropped while reservations were still active.
Corrected the issue where some power commands were sometimes using non-existent hostnames.
The igor res show -d flag now correctly filters on distributions.
The igor show -f flag now correctly indicates if the user has no future reservations.
v2.1.1
30 September 2024
Hotfix
BIOS installed images specify mac address for interface, not auto.