# Nomad

From ArchWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Nomad is a workload orchestrator to deploy and manage containers and non-containerized applications.

## Installation

Install the nomad package.

## Known issues

### NVIDIA not supported

NVIDIA support has been disabled due to there being no way to disable a non-existent driver being loaded. When compiled with NVIDIA support, the instance immediately crashes `/usr/bin/nomad: undefined symbol: nvmlDeviceGetGraphicsRunningProcesses`. The NVIDIA driver plugin will be externalised, see Github issue #8330.

### Default plugin directory

The default plugin directory `/var/lib/nomad/plugins` has been changed to `/usr/lib/nomad/plugins` to reflect FHS.

## Configuration

Nomad loads all configuration files in the `/etc/nomad.d` directory on startup.

Setup TLS encryption with Nomad.

### Server

Create a configuration file at `/etc/nomad.d/server.hcl`:

Note: Replace the `bootstrap_expect` value with the number of Nomad servers you are deploying; three or five is recommended.

    /etc/nomad.d/server.hcl

    server {
      enabled = true
      bootstrap_expect = 3
    }

### Client

Create a configuration file at `/etc/nomad.d/client.hcl`:

    /etc/nomad.d/client.hcl

    client {
      enabled = true
    }

### Task drivers

Task drivers are used by Nomad clients to execute a task and provide resource isolation.

Nomad ships with support for the following task drivers out of the box:

- Docker (requires docker)
- Java (requires java-runtime[broken link: package not found] or java-runtime-headless[broken link: package not found])
- QEMU (requires qemu)
- `exec` & `raw_exec`

#### containerd

Note: More configuration parameters can be found in upstream documentation.

    /etc/nomad.d/containerd.hcl

    plugin "containerd-driver" {
      config {
        # Arch Linux uses cgroups v2 by default
        # For cgroups v1, use "io.containerd.runc.v1"
        containerd_runtime = "io.containerd.runc.v2"
      }
    }

## See also

- Official documentation
- External task driver documentation

Category:

- Virtualization

Hidden category:

- Pages with broken package links