Primeros pasos con Hashicorp Nomad

Nicolás F. Ormeño Rojas
4 min readDec 17, 2022

--

Photo by Dave Weatherall on Unsplash

Hashicorp Nomad es, según su propia definición:

“Un programador y orquestador simple y flexible para implementar y administrar contenedores y aplicaciones no en contenedores en las instalaciones y en la nube a escala.”

Probablemente lo primero que se piense es que es un competidor para K8S, y efectivamente lo es, de hecho, en su web tienen un apartado donde mencionan algunas diferentes, indicando que ambos son muy similares, aunque tiene algunas diferencias. En lo personal, he utilizado Nomad principalmente por la necesidad de tener un orquestador que me permita no solo trabajar con contenedores, sino que también ejecutables, scripts, entre otros.

Instalación

Para instalar Nomad, debemos descargarlo desde su web, seleccionan el sistema operativo en el cual lo deseamos instalar.

Para el tutorial, lo instalaremos en Windows

Una vez descargado el archivo zip, lo debemos descomprimimos, una vez hecho esto, encontraremos un ejecutable, el cual lo dejamos en una ruta que estimemos conveniente. Este ejecutable lo debemos levantar como servicio

A continuación, debemos crear un archivo llamada nomad.hcl, este archivo puede tener diferentes configuraciones, pero a continuación dejo un archivo simple que funciona

# Specifies a local directory used to store agent state
# Client nodes use this directory by default to store temporary allocation data as well as cluster information
data_dir = "C:/path/to/Nomad/data_dir"
datacenter = "dc1"

advertise {
http = "127.0.0.1"
rpc = "127.0.0.1"
serf = "127.0.0.1"
}

server {
enabled = true
bootstrap_expect = 1
}

client {
enabled = true
}

plugin "raw_exec" {
config {
enabled = true
}
}

Una vez que guardemos el archivo y reemplacemos todos los parámetros dinámicos, debemos levantar Nomad como servicio

# Create Nomad service
New-Service -Name "Nomad" -BinaryPathName "C:\path\to\nomad.exe agent -config C:\path\to\nomad.hcl" -StartupType Automatic

# Start Nomad service
Start-Service -Name "Nomad"

Validación

Para validar que Nomad se ha levantado correctamente, lo más fácil que podemos hacer es abrir el browser e ir a la dirección http://localhost:4646, si nos abre, significa que ya está corriendo correctamente.

Entendiendo los jobs

En Nomad, un job en un trabajo, el cual puede tener diferentes tareas, una periodicidad, un ciclo de vida específico, entre otros.

Dentro de las configuraciones básicas que poseen, encontramos:

  • datacenters: Es donde trabajará, si están siguiendo este tutorial, es el del archivo nomad.hcl
  • type: Existen distintos tipos de jobs service, batch, system, system y system batch. Podemos elegir según nuestra necesidad, por ejemplo, si estamos levantando un API Rest, probablemente elijamos service, pero si estamos ejecutando una tarea periódica, lo haremos con batch
  • task: Un task, no es más que una unidad de trabajo, por ejemplo, puede ser nuestra API. es muy importante considerar que un job puede enter más de una tarea asociada, además, la configuración de cada una de estas depende del tipo de tarea, por ejemplo, una tarea docker, no se especifica de la misma manera en que se hace una tarea que debe ejecutar un exe

Creando nuestro primer job

Para crear un job desde la web, debemos hacer click en “Run Job”

Esto nos abrirá un simil a terminal, en donde debemos pegar el código del job, un ejemplo es el siguiente

job "test-job" {
datacenters = ["dc1"]
type = "batch"

task "test-job-task" {
driver = "raw_exec"
config {
command = "powershell"
args = [
"echo 'hello world'"
]
}
}
}

Luego, hacemos clic en el botón inferior “plan” y aquí nos mostrará un resumen

Si todo está correcto, hacemos clic en “Run”. Hecho esto, veremos el estado de nuestro job

--

--