hashicorp/nomad · error
Node Pools Governance is unlicensed.
Error message
Node Pools Governance is unlicensed.
What it means
Nomad's NodePoolSchedulerConfiguration.Validate rejects any non-nil scheduler configuration because 'Node Pools Governance' is a licensed (Enterprise) feature; the open-source build refuses all node pool scheduler configuration. A non-nil NodePoolSchedulerConfiguration on a node pool means the feature is in use, so validation fails unconditionally.
Source
Thrown at nomad/structs/node_pool_ce.go:14
// Copyright IBM Corp. 2015, 2026
// SPDX-License-Identifier: BUSL-1.1
//go:build !ent
package structs
import "errors"
// Validate returns an error if the node pool scheduler configuration is
// invalid.
func (n *NodePoolSchedulerConfiguration) Validate() error {
if n != nil {
return errors.New("Node Pools Governance is unlicensed.")
}
return nil
}
View on GitHub (pinned to 482b49bf1a)
Solutions
- Remove the scheduler_configuration block from the node pool definition
- Upgrade to a Nomad Enterprise license that includes Node Pools Governance
- Apply the node pool with an empty/nil scheduler configuration
Example fix
// before (HCL)
node {
node_pool = "prod"
scheduler_configuration {
scheduler_algorithm = "spread"
}
}
// after
node {
node_pool = "prod"
} Defensive patterns
Strategy: validation
Validate before calling
if pool.SchedulerConfiguration != nil {
return fmt.Errorf("node pool %q sets scheduler_configuration, which requires a Nomad Enterprise license", pool.Name)
} Type guard
func hasSchedulerConfig(n *structs.NodePoolSchedulerConfiguration) bool { return n != nil } Prevention
- Keep node pool definitions minimal on OSS Nomad
- Audit job/node-pool HCL for enterprise-only stanzas before applying
- Use nomad node pool inspect / validate before apply
- Separate Enterprise and OSS config repositories
When it happens
Trigger: Creating or updating a node pool (nomad node pool apply or job node_pool stanza) with a scheduler_configuration block set on an unlicensed Nomad OSS binary.
Common situations: Running OSS Nomad after migrating configs from Nomad Enterprise; HCL job files copied from an Enterprise environment that include a scheduler_configuration block; automation applying node pools with default config structs non-nil.
Related errors
- node ID %q is not in pool %q
- invalid node pool configuration: %v
- missing secret ID
- namespace cannot contain template delimiters or parenthesis
- wait config is nil or empty
AI-assisted analysis of hashicorp/nomad@482b49bf1a (2026-09-04).
Data as JSON: /api/errors/0ef79e033b7384ed.
Report an issue: GitHub.