Nomad Nodes

Last modified on April 17, 2024

Overview

This guide describes how to create and run a StrongDM node (gateway or relay) on HashiCorp Nomad.

To learn more about gateways and relays in general, see Nodes.

Prerequisites

  • Be an Administrator in StrongDM.
  • Ensure that you have a running Nomad instance and are familiar with the Nomad CLI or Nomad Web UI.

Steps

Add a node in the Admin UI

To add a gateway, follow these steps.

  1. Log in to the StrongDM Admin UI at app.strongdm.com.
  2. Go to Network > Gateways and click Add gateway.
  3. For Name, enter a unique name for the gateway. This is the name that is displayed throughout StrongDM.
  4. For Advertised Host, use the IP address or hostname of your Nomad server.
  5. For Advertised Port, edit the port number if you want it to differ from the default 5000.
  6. Click Advanced to set optional properties.
  7. For Bind IP, optionally set the IP address for the gateway to listen on. You can use 0.0.0.0 for all interfaces.
  8. For Bind Port, optionally set the port for the gateway to listen on (default: 5000).
  9. Click Create gateway to save.
  10. Copy the token that is generated. This token is used in later steps.

To add a relay, follow these steps.

  1. Log in to the Admin UI at app.strongdm.com.
  2. Go to Network > Relays.
  3. Click Add relay.
  4. For Name, enter a name for the relay.
  5. Click Create relay.
  6. Copy the token and keep it in a secure place.

Create a node on Nomad

You can choose one of two ways to create a StrongDM node on Nomad. You can use either the Nomad CLI or Nomad Web UI.

Use the Nomad CLI

  1. Use SSH to log in to your Nomad server.

  2. Use a text editor to create a new file called sdm-gateway-nomad.

  3. Copy the following example code and paste it into your file:

    job "sdm" {
    #Your datacenters should be updated to reflect your environment.
      datacenters = ["$datacenters"]  
      group "gateways" {
        count = 1
        task "server" {
          driver = "docker"      
          config {
            image = "quay.io/sdmrepo/relay"
          }
    # Replace $SDM_RELAY_TOKEN with the token generated in the Admin UI.   
          env {
            SDM_RELAY_TOKEN = "$SDM_RELAY_TOKEN"
          }      
          resources {
            network {
              mbits = 10
    # This port can be configured in the Admin UI. By default it is port 5000.
              port "relay" {
                static = 5000
              }
            }
          }
        }
      }
    }
    
  4. In your file, replace the $datacenters and $SDM_RELAY_TOKEN placeholders with the actual values. If you added a gateway in the Admin UI and changed the port to a port other than the default, change the port here too.

  5. Save and close the file.

  6. Create a new job:

    nomad job init sdm-gateway
    
  7. Do a dry run to make sure there are no issues:

nomad job plan sdm-gateway
  1. Start the job:
nomad job run sdm-gateway

Use the Nomad Web UI

  1. Log in to the Nomad Web UI.

  2. Go to the Jobs tab.

  3. Click Run Job.

  4. Copy the following example code:

    job "sdm" {
    #Your datacenters should be updated to reflect your environment.
      datacenters = ["$datacenters"]  
      group "gateways" {
        count = 1
        task "server" {
          driver = "docker"      
          config {
            image = "quay.io/sdmrepo/relay"
          }
    # Replace $SDM_RELAY_TOKEN with the token generated in the Admin UI.   
          env {
            SDM_RELAY_TOKEN = "$SDM_RELAY_TOKEN"
          }      
          resources {
            network {
              mbits = 10
    # This port can be configured in the Admin UI. By default it is port 5000.
              port "relay" {
                static = 5000
              }
            }
          }
        }
      }
    }
    
  5. In the Job Definition section, paste that example code.

  6. Replace the $datacenters and $SDM_RELAY_TOKEN placeholders with the actual values. If you added a gateway in the Admin UI and changed the port to a port other than the default, change the port here too.

  7. Click Plan.

  8. Ensure no errors occurred.

  9. Click run.

Verify that your node is online

In the Admin UI, go to Network > Gateways or Network > Relays to verify that the node you created is online.

If it does not appear online, perform a hard refresh of your web browser. Within a couple of minutes, if it is still not online, verify that the StrongDM daemon is running by running ps aux|grep sdm on the server and looking for sdm relay in the output.