»Command: volume register

The volume register command registers external storage volumes with Nomad's Container Storage Interface (CSI) support. The volume must exist on the remote storage provider before it can be registered and used by a task.


nomad volume register [options] [file]

The volume register command requires a single argument, specifying the path to a file containing a valid volume specification. This file will be read and the job will be submitted to Nomad for scheduling. If the supplied path is "-", the job file is read from STDIN. Otherwise it is read from the file at the supplied path.

»General Options

  • -address=<addr>: The address of the Nomad server. Overrides the NOMAD_ADDR environment variable if set. Defaults to

  • -region=<region>: The region of the Nomad server to forward commands to. Overrides the NOMAD_REGION environment variable if set. Defaults to the Agent's local region.

  • -no-color: Disables colored command output. Alternatively, NOMAD_CLI_NO_COLOR may be set.

  • -ca-cert=<path>: Path to a PEM encoded CA cert file to use to verify the Nomad server SSL certificate. Overrides the NOMAD_CACERT environment variable if set.

  • -ca-path=<path>: Path to a directory of PEM encoded CA cert files to verify the Nomad server SSL certificate. If both -ca-cert and -ca-path are specified, -ca-cert is used. Overrides the NOMAD_CAPATH environment variable if set.

  • -client-cert=<path>: Path to a PEM encoded client certificate for TLS authentication to the Nomad server. Must also specify -client-key. Overrides the NOMAD_CLIENT_CERT environment variable if set.

  • -client-key=<path>: Path to an unencrypted PEM encoded private key matching the client certificate from -client-cert. Overrides the NOMAD_CLIENT_KEY environment variable if set.

  • -tls-server-name=<value>: The server name to use as the SNI host when connecting via TLS. Overrides the NOMAD_TLS_SERVER_NAME environment variable if set.

  • -tls-skip-verify: Do not verify TLS certificate. This is highly not recommended. Verification will also be skipped if NOMAD_SKIP_VERIFY is set.

  • -token: The SecretID of an ACL token to use to authenticate API requests with. Overrides the NOMAD_TOKEN environment variable if set.

»Volume Specification

The file may be provided as either HCL or JSON. An example HCL configuration:

id = "ebs_prod_db1"
name = "database"
type = "csi"
external_id = "vol-23452345"
plugin_id = "ebs-prod"
access_mode = "single-node-writer"
attachment_mode = "file-system"
mount_options {
   fs_type = "ext4"
   mount_flags = ["ro"]

»Volume Specification Parameters

  • id (string: <required>) - The unique ID of the volume. This will be how [volume][csi_volume] stanzas in a jobspec refer to the volume.

  • name (string: <required>) - The display name of the volume.

  • type (string: <required>) - The type of volume. Currently only "csi" is supported.

  • external_id (string: <required>) - The ID of the physical volume from the storage provider. For example, the volume ID of an AWS EBS volume or Digital Ocean volume.

  • plugin_id (string: <required>) - The ID of the CSI plugin that manages this volume.

  • access_mode (string: <required>) - Defines whether a volume should be available concurrently. Can be one of "single-node-reader-only", "single-node-writer", "multi-node-reader-only", "multi-node-single-writer", or "multi-node-multi-writer". Most CSI plugins support only single-node modes. Consult the documentation of the storage provider and CSI plugin.

  • attachment_mode (string: <required>) - The storage API that will be used by the volume. Most storage providers will support "file-system", to mount pre-formatted file system volumes. Some storage providers will support "block-device", which will require the job be configured with appropriate mount options.

  • mount_options ([mount_options][]:nil) - Options for mounting block-devicevolumes without a pre-formatted file system.

    • fs_type: file system type (ex. "ext4")
    • mount_flags: the flags passed to mount (ex. "ro,noatime")