Last active
April 20, 2016 21:34
-
-
Save duythinht/cca6dbefef3abc84840da868901b93a2 to your computer and use it in GitHub Desktop.
Nomad job specification
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# There can only be a single job definition per file. | |
# Create a job with ID and Name 'whereami' | |
job "whereami" { | |
# Run the job in the global region, which is the default. | |
# region = "global" | |
# Specify the datacenters within the region this job can run in. | |
datacenters = ["dc1"] | |
# Service type jobs optimize for long-lived services. This is | |
# the default but we can change to batch for short-lived tasks. | |
# type = "service" | |
# Priority controls our access to resources and scheduling priority. | |
# This can be 1 to 100, inclusively, and defaults to 50. | |
# priority = 50 | |
# Restrict our job to only linux. We can specify multiple | |
# constraints as needed. | |
constraint { | |
attribute = "${attr.kernel.name}" | |
value = "linux" | |
} | |
# Configure the job to do rolling updates | |
update { | |
# Stagger updates every 10 seconds | |
stagger = "10s" | |
# Update a single task at a time | |
max_parallel = 1 | |
} | |
# Create a 'group' group. Each task in the group will be | |
# scheduled onto the same machine. | |
group "api" { | |
# Control the number of instances of this groups. | |
# Defaults to 1 | |
count = 3 | |
# Configure the restart policy for the task group. If not provided, a | |
# default is used based on the job type. | |
restart { | |
# The number of attempts to run the job within the specified interval. | |
attempts = 10 | |
interval = "5m" | |
# A delay between a task failing and a restart occurring. | |
delay = "25s" | |
# Mode controls what happens when a task has restarted "attempts" | |
# times within the interval. "delay" mode delays the next restart | |
# till the next interval. "fail" mode does not restart the task if | |
# "attempts" has been hit within the interval. | |
mode = "delay" | |
} | |
# Define a task to run | |
task "whereami" { | |
# Use Docker to run the task. | |
driver = "docker" | |
# Configure Docker driver with the image | |
config { | |
image = "duythinht/whereami:v1" | |
port_map { | |
http = 3000 | |
} | |
} | |
service { | |
name = "${TASKGROUP}-whereami" | |
tags = ["global", "cache"] | |
port = "http" | |
check { | |
name = "alive" | |
type = "tcp" | |
interval = "10s" | |
timeout = "2s" | |
} | |
} | |
# We must specify the resources required for | |
# this task to ensure it runs on a machine with | |
# enough capacity. | |
resources { | |
cpu = 500 # 500 Mhz | |
memory = 256 # 256MB | |
network { | |
mbits = 10 | |
port "http" { | |
} | |
} | |
} | |
# Specify the environment variables | |
# Must have NODE_LOCAL_IP | |
env { | |
NODE_LOCAL_IP = "${attr.unique.network.ip-address}" | |
POSTGRES_DB = "10.60.3.3" | |
POSTGRES_PORT = "5432" | |
} | |
# The artifact block can be specified one or more times to download | |
# artifacts prior to the task being started. This is convenient for | |
# shipping configs or data needed by the task. | |
# artifact { | |
# source = "http://foo.com/artifact.tar.gz" | |
# options { | |
# checksum = "md5:c4aa853ad2215426eb7d70a21922e794" | |
# } | |
# } | |
# Specify configuration related to log rotation | |
logs { | |
max_files = 10 | |
max_file_size = 15 | |
} | |
# Controls the timeout between signalling a task it will be killed | |
# and killing the task. If not set a default is used. | |
# kill_timeout = "20s" | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment