406 lines
12 KiB
Plaintext
406 lines
12 KiB
Plaintext
---
|
|
layout: docs
|
|
page_title: Installing Nomad
|
|
description: Learn how to install Nomad.
|
|
---
|
|
|
|
# Installing Nomad
|
|
|
|
Nomad is available as a pre-compiled binary or as a package for several
|
|
operating systems. You can also [build Nomad from source](#from-source).
|
|
|
|
-> If you are interested in trialing Nomad without installing it locally, see the
|
|
[Quickstart](/nomad/docs/install/quickstart) for options to get started with Nomad.
|
|
|
|
<Tabs>
|
|
<Tab heading="Manual installation" group="manual">
|
|
|
|
You can download a [precompiled binary](/nomad/downloads) and
|
|
run it on your machine locally. You can also verify the binary using the
|
|
available SHA-256 sums. After downloading Nomad, unzip the package. Make sure
|
|
that the `nomad` binary is available on your `PATH` before continuing with the
|
|
other guides.
|
|
|
|
</Tab>
|
|
<Tab heading="Homebrew on macOS" group="homebrew">
|
|
|
|
[Homebrew](https://brew.sh) is a free and open source package management system
|
|
for Mac OS X. Install the official [Nomad
|
|
formula](https://github.com/hashicorp/homebrew-tap) from the terminal.
|
|
|
|
First, install the HashiCorp tap, a repository of all of the HashiCorp Homebrew
|
|
packages.
|
|
|
|
```shell-session
|
|
$ brew tap hashicorp/tap
|
|
```
|
|
|
|
Now, install Nomad with `hashicorp/tap/nomad`.
|
|
|
|
```shell-session
|
|
$ brew install hashicorp/tap/nomad
|
|
```
|
|
|
|
~> **NOTE:** This installs a signed binary and is automatically updated with
|
|
every new official release.
|
|
|
|
To update to the latest, run
|
|
|
|
```shell-session
|
|
$ brew upgrade hashicorp/tap/nomad
|
|
```
|
|
|
|
</Tab>
|
|
<Tab heading="Chocolatey on Windows" group="chocolatey">
|
|
|
|
[Chocolatey](https://chocolatey.org/) is a free and open-source package
|
|
management system for Windows. Install the [Nomad
|
|
package](https://chocolatey.org/packages/nomad) from the command-line.
|
|
|
|
```shell-session
|
|
$ choco install nomad
|
|
```
|
|
|
|
~> **NOTE:** Chocolatey and the Nomad package are **NOT** directly maintained
|
|
by HashiCorp. The latest version of Nomad is always available by manual
|
|
installation.
|
|
|
|
</Tab>
|
|
<Tab heading="Linux Packages" group="linux">
|
|
|
|
HashiCorp officially maintains and signs packages for the following Linux
|
|
distributions.
|
|
|
|
<Tabs>
|
|
<Tab heading="Ubuntu/Debian">
|
|
|
|
Install the required packages.
|
|
|
|
```shell-session
|
|
$ sudo apt-get update && \
|
|
sudo apt-get install wget gpg coreutils
|
|
```
|
|
|
|
Add the HashiCorp [GPG key][gpg-key].
|
|
|
|
```shell-session
|
|
$ wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
|
|
```
|
|
|
|
Add the official HashiCorp Linux repository.
|
|
|
|
```shell-session
|
|
$ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
|
|
```
|
|
|
|
Update and install.
|
|
|
|
```shell-session
|
|
$ sudo apt-get update && sudo apt-get install nomad
|
|
```
|
|
|
|
</Tab>
|
|
<Tab heading="CentOS/RHEL">
|
|
|
|
Install `yum-config-manager` to manage your repositories.
|
|
|
|
```shell-session
|
|
$ sudo yum install -y yum-utils
|
|
```
|
|
|
|
Use `yum-config-manager` to add the official HashiCorp Linux repository.
|
|
|
|
```shell-session
|
|
$ sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
|
|
```
|
|
|
|
Install.
|
|
|
|
```shell-session
|
|
$ sudo yum -y install nomad
|
|
```
|
|
|
|
</Tab>
|
|
<Tab heading="Fedora">
|
|
|
|
Install `dnf config-manager` to manage your repositories.
|
|
|
|
```shell-session
|
|
$ sudo dnf install -y dnf-plugins-core
|
|
```
|
|
|
|
Use `dnf config-manager` to add the official HashiCorp Linux repository.
|
|
|
|
```shell-session
|
|
$ sudo dnf config-manager --add-repo https://rpm.releases.hashicorp.com/fedora/hashicorp.repo
|
|
```
|
|
|
|
Install.
|
|
|
|
```shell-session
|
|
$ sudo dnf -y install nomad
|
|
```
|
|
|
|
</Tab>
|
|
<Tab heading="Amazon Linux">
|
|
|
|
Install `yum-config-manager` to manage your repositories.
|
|
|
|
```shell-session
|
|
$ sudo yum install -y yum-utils
|
|
```
|
|
|
|
Use `yum-config-manager` to add the official HashiCorp Linux repository.
|
|
|
|
```shell-session
|
|
$ sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/AmazonLinux/hashicorp.repo
|
|
```
|
|
|
|
Install.
|
|
|
|
```shell-session
|
|
$ sudo yum -y install nomad
|
|
```
|
|
|
|
</Tab>
|
|
</Tabs>
|
|
|
|
-> **TIP:** Now that you have added the HashiCorp repository, you can install
|
|
[Consul](/consul/tutorials) and
|
|
[Vault](/vault/tutorials) with the same command.
|
|
|
|
</Tab>
|
|
</Tabs>
|
|
|
|
## Post-installation steps
|
|
|
|
These steps are considered optional but can be helpful for running Nomad and to
|
|
take advantage of additional Nomad functionalities.
|
|
|
|
<Tabs>
|
|
<Tab heading="Manual installation" group="manual">
|
|
|
|
<Tabs>
|
|
<Tab heading="Linux Packages">
|
|
<h3>Add the Nomad binary to your system path</h3>
|
|
|
|
Permanently add a new location to your path by editing your shell's settings
|
|
file (usually called something like `~/.bashrc`, where the part of the filename
|
|
after the `.` and before `rc` is the name of your shell). In that file you
|
|
should see a line that starts with `export PATH=`, followed by a
|
|
colon-separated list of locations. Add the location of the Nomad binary to that
|
|
list and save the file. Then reload your shell's configuration with the command
|
|
`source ~/.bashrc`, replacing `bash` with the name of your shell.
|
|
|
|
<h3>Install CNI plugins</h3>
|
|
|
|
Nomad uses CNI plugins to configure network namespaces when using the `bridge`
|
|
network mode. All Linux Nomad client nodes using network namespaces must have
|
|
CNI plugins installed.
|
|
|
|
The following commands install the CNI reference plugins.
|
|
|
|
```shell-session
|
|
$ curl -L -o cni-plugins.tgz "https://github.com/containernetworking/plugins/releases/download/v1.0.0/cni-plugins-linux-$( [ $(uname -m) = aarch64 ] && echo arm64 || echo amd64)"-v1.0.0.tgz && \
|
|
sudo mkdir -p /opt/cni/bin && \
|
|
sudo tar -C /opt/cni/bin -xzf cni-plugins.tgz
|
|
```
|
|
|
|
Ensure your Linux operating system distribution has been configured to allow
|
|
container traffic through the bridge network to be routed via iptables. These
|
|
tunables can be set as follows.
|
|
|
|
```shell-session
|
|
$ echo 1 | sudo tee /proc/sys/net/bridge/bridge-nf-call-arptables && \
|
|
echo 1 | sudo tee /proc/sys/net/bridge/bridge-nf-call-ip6tables && \
|
|
echo 1 | sudo tee /proc/sys/net/bridge/bridge-nf-call-iptables
|
|
```
|
|
|
|
To preserve these settings on startup of a client node, add a file including the
|
|
following to `/etc/sysctl.d/` or remove the file your Linux distribution puts in
|
|
that directory.
|
|
|
|
<CodeBlockConfig filename="/etc/sysctl.d/bridge.conf">
|
|
|
|
```ini
|
|
net.bridge.bridge-nf-call-arptables = 1
|
|
net.bridge.bridge-nf-call-ip6tables = 1
|
|
net.bridge.bridge-nf-call-iptables = 1
|
|
```
|
|
|
|
</CodeBlockConfig>
|
|
</Tab>
|
|
|
|
<Tab heading="macOS">
|
|
<h3>Add the Nomad binary to your system path</h3>
|
|
|
|
Permanently add a new location to your path by editing your shell's settings
|
|
file (usually called something like `~/.bashrc`, where the part of the filename
|
|
after the `.` and before `rc` is the name of your shell). In that file you
|
|
should see a line that starts with `export PATH=`, followed by a
|
|
colon-separated list of locations. Add the location of the Nomad binary to that
|
|
list and save the file. Then reload your shell's configuration with the command
|
|
`source ~/.bashrc`, replacing `bash` with the name of your shell.
|
|
</Tab>
|
|
|
|
<Tab heading="Windows">
|
|
|
|
<h3>Add the Nomad binary to your system path</h3>
|
|
|
|
Add a location to your path via the GUI by navigating to `Environment
|
|
Variables` in your system settings, and looking for the variable called `PATH`.
|
|
You should see a semicolon-separated list of locations. Add the Nomad binary's
|
|
location to that list and then launch a new console window.
|
|
</Tab>
|
|
</Tabs>
|
|
</Tab>
|
|
|
|
<Tab heading="Homebrew on macOS" group="homebrew">
|
|
No additional steps necessary after installing Nomad using Homebrew.
|
|
</Tab>
|
|
|
|
<Tab heading="Chocolatey on Windows" group="chocolatey">
|
|
No additional steps necessary after installing Nomad using Chocolatey.
|
|
</Tab>
|
|
|
|
<Tab heading="Linux" group="linux">
|
|
|
|
Note that if you are running Nomad on Linux, you'll need to run client agents as
|
|
root (or with `sudo`) so that cpuset accounting and network namespaces work
|
|
correctly.
|
|
|
|
<h3>Install CNI plugins</h3>
|
|
|
|
Nomad uses CNI plugins to configure network namespaces when using the `bridge`
|
|
network mode. All Linux Nomad client nodes using network namespaces must have
|
|
CNI plugins installed.
|
|
|
|
The following commands install the CNI reference plugins.
|
|
|
|
```shell-session
|
|
$ curl -L -o cni-plugins.tgz "https://github.com/containernetworking/plugins/releases/download/v1.0.0/cni-plugins-linux-$( [ $(uname -m) = aarch64 ] && echo arm64 || echo amd64)"-v1.0.0.tgz && \
|
|
sudo mkdir -p /opt/cni/bin && \
|
|
sudo tar -C /opt/cni/bin -xzf cni-plugins.tgz
|
|
```
|
|
|
|
Ensure your Linux operating system distribution has been configured to allow
|
|
container traffic through the bridge network to be routed via iptables. These
|
|
tunables can be set as follows.
|
|
|
|
```shell-session
|
|
$ echo 1 | sudo tee /proc/sys/net/bridge/bridge-nf-call-arptables && \
|
|
echo 1 | sudo tee /proc/sys/net/bridge/bridge-nf-call-ip6tables && \
|
|
echo 1 | sudo tee /proc/sys/net/bridge/bridge-nf-call-iptables
|
|
```
|
|
|
|
To preserve these settings on startup of a client node, add a file including the
|
|
following to `/etc/sysctl.d/` or remove the file your Linux distribution puts in
|
|
that directory.
|
|
|
|
<CodeBlockConfig filename="/etc/sysctl.d/bridge.conf">
|
|
|
|
```ini
|
|
net.bridge.bridge-nf-call-arptables = 1
|
|
net.bridge.bridge-nf-call-ip6tables = 1
|
|
net.bridge.bridge-nf-call-iptables = 1
|
|
```
|
|
|
|
</CodeBlockConfig>
|
|
</Tab>
|
|
</Tabs>
|
|
|
|
## Verify the Installation
|
|
|
|
To verify Nomad was installed correctly, try the `nomad` command.
|
|
|
|
```shell-session
|
|
$ nomad
|
|
```
|
|
|
|
You should see help output, similar to the following.
|
|
|
|
```plaintext
|
|
Usage: nomad [-version] [-help] [-autocomplete-(un)install] <command> [args]
|
|
|
|
Common commands:
|
|
run Run a new job or update an existing job
|
|
stop Stop a running job
|
|
status Display the status output for a resource
|
|
alloc Interact with allocations
|
|
job Interact with jobs
|
|
node Interact with nodes
|
|
agent Runs a Nomad agent
|
|
|
|
Other commands:
|
|
acl Interact with ACL policies and tokens
|
|
agent-info Display status information about the local agent
|
|
config Interact with configurations
|
|
deployment Interact with deployments
|
|
eval Interact with evaluations
|
|
exec Execute commands in task
|
|
fmt Rewrites Nomad config and job files to canonical format
|
|
license Interact with Nomad Enterprise License
|
|
login Login to Nomad using an auth method
|
|
monitor Stream logs from a Nomad agent
|
|
namespace Interact with namespaces
|
|
operator Provides cluster-level tools for Nomad operators
|
|
plugin Inspect plugins
|
|
quota Interact with quotas
|
|
recommendation Interact with the Nomad recommendation endpoint
|
|
scaling Interact with the Nomad scaling endpoint
|
|
sentinel Interact with Sentinel policies
|
|
server Interact with servers
|
|
service Interact with registered services
|
|
system Interact with the system API
|
|
tls Generate Self Signed TLS Certificates for Nomad
|
|
ui Open the Nomad Web UI
|
|
var Interact with variables
|
|
version Prints the Nomad version
|
|
volume Interact with volumes
|
|
```
|
|
|
|
---
|
|
|
|
## Compiling from Source ((#from-source))
|
|
|
|
To compile from source, you will need [Go](https://golang.org) installed at the
|
|
version described by the [.go-version][go-version] file. You should properly
|
|
configure your Go environment, including setting a `GOPATH` environment variable
|
|
and ensuring `GOPATH/bin` is within your `PATH`. A copy of
|
|
[`git`](https://www.git-scm.com/) is also needed in your `PATH`.
|
|
|
|
1. Clone the Nomad repository from GitHub into your `GOPATH`:
|
|
|
|
```shell-session
|
|
$ mkdir -p $GOPATH/src/github.com/hashicorp && cd $_
|
|
$ git clone https://github.com/hashicorp/nomad.git
|
|
$ cd nomad
|
|
```
|
|
|
|
1. Bootstrap the project. This will download and compile libraries and tools
|
|
needed to compile Nomad:
|
|
|
|
```shell-session
|
|
$ make bootstrap
|
|
```
|
|
|
|
1. Build Nomad for your current system and put the
|
|
binary in `./bin/` (relative to the git checkout). The `make dev` target is
|
|
just a shortcut that builds `nomad` for only your local build environment (no
|
|
cross-compiled targets).
|
|
|
|
```shell-session
|
|
$ make dev
|
|
```
|
|
|
|
[consul-dev]: /consul/tutorials/certification-associate-tutorials/get-started-agent#start-the-agent
|
|
|
|
[consul-download]: /consul/downloads
|
|
|
|
[destroy]: /vagrant/docs/cli/destroy
|
|
|
|
[gh-7865]: https://github.com/hashicorp/nomad/issues/7865
|
|
|
|
[gpg-key]: https://apt.releases.hashicorp.com/gpg "HashiCorp GPG key"
|
|
[go-version]: https://github.com/hashicorp/nomad/blob/main/.go-version
|