»group Stanza

Placementjob -> group

The group stanza defines a series of tasks that should be co-located on the same Nomad client. Any task within a group will be placed on the same client.

job "docs" {
  group "example" {
    # ...
  }
}

»group Parameters

  • constraint (Constraint: nil) - This can be provided multiple times to define additional constraints.

  • affinity (Affinity: nil) - This can be provided multiple times to define preferred placement criteria.

  • spread (Spread: nil) - This can be provided multiple times to define criteria for spreading allocations across a node attribute or metadata. See the Nomad spread reference for more details.

  • count (int: 1) - Specifies the number of the task groups that should be running under this group. This value must be non-negative.

  • ephemeral_disk (EphemeralDisk: nil) - Specifies the ephemeral disk requirements of the group. Ephemeral disks can be marked as sticky and support live data migrations.

  • meta (Meta: nil) - Specifies a key-value map that annotates with user-defined metadata.

  • migrate (Migrate: nil) - Specifies the group strategy for migrating off of draining nodes. Only service jobs with a count greater than 1 support migrate stanzas.

  • reschedule (Reschedule: nil) - Allows to specify a rescheduling strategy. Nomad will then attempt to schedule the task on another node if any of the group allocation statuses become "failed".

  • restart (Restart: nil) - Specifies the restart policy for all tasks in this group. If omitted, a default policy exists for each job type, which can be found in the restart stanza documentation.

  • shutdown_delay (string: "0s") - Specifies the duration to wait when stopping a group's tasks. The delay occurs between Consul deregistration and sending each task a shutdown signal. Ideally, services would fail healthchecks once they receive a shutdown signal. Alternatively shutdown_delay may be set to give in flight requests time to complete before shutting down. A group level shutdown_delay will run regardless if there are any defined group services. In addition, tasks may have their own shutdown_delay which waits between deregistering task services and stopping the task.

  • task (Task: <required>) - Specifies one or more tasks to run within this group. This can be specified multiple times, to add a task as part of the group.

  • vault (Vault: nil) - Specifies the set of Vault policies required by all tasks in this group. Overrides a vault block set at the job level.

  • volume (Volume: nil) - Specifies the volumes that are required by tasks within the group.

»group Examples

The following examples only show the group stanzas. Remember that the group stanza is only valid in the placements listed above.

»Specifying Count

This example specifies that 5 instances of the tasks within this group should be running:

group "example" {
  count = 5
}

»Tasks with Constraint

This example shows two abbreviated tasks with a constraint on the group. This will restrict the tasks to 64-bit operating systems.

group "example" {
  constraint {
    attribute = "${attr.cpu.arch}"
    value     = "amd64"
  }

  task "cache" {
    # ...
  }

  task "server" {
    # ...
  }
}

»Metadata

This example show arbitrary user-defined metadata on the group:

group "example" {
  meta {
    "my-key" = "my-value"
  }
}