Installation

This article explains how to install the Nomad runner. The Nomad runner is packaged as a minimal Docker image distributed on DockerHub.

Download

Install Docker and pull the public image:

$ docker pull drone/drone-runner-nomad:latest

Configuration

The Nomad runner is configured using environment variables. This article references the below configuration options. See Configuration for a complete list of configuration options.

  • DRONE_RPC_HOST
    provides the hostname (and optional port) of your Drone server. The runner connects to the server at the host address to receive pipelines for execution.
  • DRONE_RPC_PROTO
    provides the protocol used to connect to your Drone server. The value must be either http or https.
  • DRONE_RPC_SECRET
    provides the shared secret used to authenticate with your Drone server. This must match the secret defined in your Drone server configuration.
  • DRONE_JOB_DATACENTER
    provides the datacenter used when scheduling Nomad jobs. The value is optional and defaults to dc1 if unspecified.
  • DRONE_JOB_REGION
    provides the region used when scheduling Nomad jobs.
  • DRONE_JOB_NAMESPACE
    provides the namespace used when scheduling Nomad jobs.
  • NOMAD_TOKEN
    provides the Nomad token.
  • NOMAD_*
    the system supports all NOMAD_ client configuration parameters as defined in the Nomad client documentation.

Installation

The below command creates a container and starts the Docker runner. Remember to replace the environment variables below with your Drone server details.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
docker run --detach \
  --volume=/var/run/docker.sock:/var/run/docker.sock \
  --env=DRONE_RPC_PROTO=https \
  --env=DRONE_RPC_HOST=drone.company.com \
  --env=DRONE_RPC_SECRET=super-duper-secret \
  --env=NOMAD_ADDR=http://nomad.company.com:4646 \
  --env=NOMAD_TOKEN=super-secret-token \
  --restart=always \
  --name=runner \
  drone/drone-runner-nomad:latest

Verification

Use the docker logs command to view the logs and verify the runner successfully established a connection with the Drone server.

$ docker logs runner

INFO[0000] starting the server
INFO[0000] successfully pinged the remote server