What is Igor?

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.

(click to enlarge)
(click to enlarge)

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.2.1

9 October 2025

Fixes

  • Fixed a bug where profile-switching was failing. (Thanks to user mabbonda for catching this!)
  • Fixed search filtering bug in igor res show.

v2.2

2 October 2025

Features

  • Igor now probes K/I pair files for kernel and OS metadata and publishes its results in the ‘kernel’ and ‘initrd’ columns displayed by the igor distro show command.
  • Reservations and distros for auto-removed owner accounts are re-assigned to administrators for possible owner re-assignment to other users or manual deletion.
  • Users can now add hosts to existing reservations.
  • Administrators can make a public distro private and owned by the admin group using the --deprecate flag when editing a distro.

Updates

  • More detailed line-wrap formatting within table cells in CLI output for better readability of dense information.
  • Removed some CLI output columns in tables that weren’t giving useful information. Information is still retained in non-table formatted version (using -x flag).
  • More detailed server logging that always specifies the user associated with a given command action.
  • Updated db-migrate tool to migrate Igor databases from previous versions to this one.
  • The igor sync command can now operate on a specific set of hosts using the -s flag.
  • Bump minimum required Golang to v1.23.x
  • Bump minimum nodeJS to v22.x and npm to v10.x to build Igorweb.
  • Security package updates.

Fixes

  • Group-restricted nodes can be extended if the same group applied to the reservation matches the one declared by the restriction policy.
  • Default to returning only the user’s reservations when using igor res show. Add the --all flag to get all users’ reservation.
  • Host blocking now correctly handles hosts in maintenance mode.

v2.1.3

03 April 2025

Security Update

  • Updated axios package for Igorweb.

v2.1.2

17 January 2025

Critical Patch

  • Updated kernel arguments for UEFI boot and installed RedHat images with BIOS.

v2.1.1

30 September 2024

Critical Patch

  • BIOS installed images specify MAC address for interface, not auto.

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.0.0

20 April 2023

  • Initial release!