Configuration#

New in version 3008.0.

Configuration options that control the resource subsystem. All options are read from the standard master/minion config files; the side column indicates which daemon honours each one.

Minion options#

resource_pillar_key#

Default: resources

The pillar key under which the managing minion looks for resource declarations. The minion's pillar must contain this key (a dict) for any resource type to be discovered.

# /etc/salt/minion.d/resources.conf
resource_pillar_key: salt_resources

When set, the matching pillar key on each minion must use the same name — the master assumes one canonical key when reading resource declarations across minions.

Setting this to an empty string logs a warning and falls back to the default.

See Pillar layout for the pillar layout under this key.

Master options#

resource_index_primary_capacity#

Default: 2097152 (1 << 21)

The number of slots in the master's mmap-backed primary resource index. Each slot holds one SRN managing-minion mapping; the index uses linear probing, so reserved capacity is also the upper bound on resources the master can register before compaction is required.

Sizing rule of thumb: pick a capacity at least 4× your expected peak resource count, round up to a power of two. The default (2 097 152) fits ~500 K resources comfortably with room for the hash-table fill factor to stay under 25 %.

Increasing this option requires recreating the on-disk index file — delete <cachedir>/resources/resource_index.by_id.mmap on the master before restarting if you raise the capacity.

resource_index_primary_slot_size#

Default: 128

Per-slot byte budget in the primary resource index. Each slot stores the SRN key, the JSON payload ({"m": ..., "t": ...}), and a small header. 128 bytes accommodates ~80-character SRNs comfortably.

Raise this only if your environment uses very long resource ids or type names. Like resource_index_primary_capacity, changing this option requires recreating the on-disk index file.

resource_pillar_key on the master#

The master reads resource_pillar_key from its own config to know how to read minion pillar caches when expanding targets (the master compiles minion pillar on its side too — see _resource_ids_from_minion_pillar_cache). Keep the value consistent across master and all minions.

Pillar#

Resource declarations live under resource_pillar_key on each minion's pillar. See Pillar layout for the full shape; the relevant configuration aspect is that every minion managing resources of the same type must agree on the type's pillar shape. The connection module is the contract.

Inspection#

To verify the master's view of registered resources:

salt-run resource.list_grains
salt-run resource.show_grains type=ssh id=web-01

To force a re-registration after a config change:

# On the managing minion
salt-call saltutil.refresh_pillar

# Or from the master, targeted at one minion
salt-run resource.refresh minion=<minion-id>

See Operations for more.

Sizing guidance#

Worked example: a master fleet of 1 000 minions, each managing 100 resources on average, with peak bursts up to 200 per minion.

  • Peak total = 200 × 1 000 = 200 000 resources.

  • Capacity = 200 000 × 4 = 800 000 → round up to 1 048 576 (1 << 20).

  • Default capacity (2 097 152) is already 2× that — leave it.

Sizing the on-disk file: capacity × slot_size = 2 097 152 × 128 = 256 MiB at the default. File grows as needed, but plan for it.