hashicorp / hashicorp/nomad

allow DHV requests to be both per_alloc and sticky

Open
#27,140 9 comments 0 reactions 0 assignees View on GitHub
hcc/jira theme/storage type/enhancement
Dominant language
Go
Stars
17k
Forks
2.1k
Avg merge
1d 9h
Merged PRs (30d)
105

Description

### Nomad version
Output from `nomad version`

```
Nomad v1.10.4
BuildDate 2025-08-12T20:48:32Z
Revision 62b195aaa535b2159d215eaf89e6f4a455d6f686
```

### Operating system and Environment details

Ubuntu 24.04 on QEMU/KVM.

### Issue

When using dynamic host volumes, you can use the `per_alloc` setting.

This contradicts the [documentation](https://developer.hashicorp.com/nomad/docs/job-specification/volume#per_alloc), which states:

> Use per_alloc only with CSI volumes and sticky only with dynamic host volumes.

If this is the case, a `host` volume with `per_alloc = true` should fail job validation.

### Reproduction steps

Create a host volume
```hcl
name = "example[0]"
type = "host"

plugin_id = "mkdir"

capability {
access_mode = "single-node-writer"
attachment_mode = "file-system"
}
```

Deploy a spec
```
job "example" {
type = "service"
node_pool = "ifn"

group "ubuntu" {
count = 1

volume "data" {
type = "host"
source = "example"
per_alloc = true
}

task "ubuntu" {
driver = "podman"

config {
image = "docker.io/library/ubuntu:noble"
command = "/usr/bin/sleep"
args = ["infinity"]
}

volume_mount {
volume = "data"
destination = "${NOMAD_ALLOC_DIR}/data"
}
}
}
}
```

#### Expected Result

Actually, this behavior is totally fine! I like it this way, since it solves the problem of allocating multiple host volumes to a replicated service (e.g. mysql, etcd).

I'm just not sure if this was the intended behavior behind `per_alloc`, if the documentation is wrong, and/or whether using `per_alloc` in this way has unforeseen consequences and risks.

Can the maintainers tell me whether this is a broken usage of `per_alloc`. If so, I'd actually like us to fix the problems that prevent it from being used for host volumes (happy to help). If not, we should update the documentation to state using `per_alloc` is OK.

#### Actual Result

It deploys fine (hopefully a good thing!)

### Job file (if appropriate)

### Nomad Server logs (if appropriate)

### Nomad Client logs (if appropriate)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.