2 # The "region" parameter specifies the region in which to execute the job.
3 # If omitted, this inherits the default region name of "global".
6 # The "datacenters" parameter specifies the list of datacenters which should
7 # be considered when placing this task. This must be provided.
8 datacenters = [ "yul1" ]
10 # The "type" parameter controls the type of job, which impacts the scheduler's
11 # decision on placement. This configuration is optional and defaults to
12 # "service". For a full list of job types and their differences, please see
13 # the online documentation.
15 # For more information, please see the online documentation at:
17 # https://www.nomadproject.io/docs/jobspec/schedulers.html
22 # The "max_parallel" parameter specifies the maximum number of updates to
23 # perform in parallel. In this case, this specifies to update a single task
27 # The "min_healthy_time" parameter specifies the minimum time the allocation
28 # must be in the healthy state before it is marked as healthy and unblocks
29 # further allocations from being updated.
30 min_healthy_time = "10s"
32 # The "healthy_deadline" parameter specifies the deadline in which the
33 # allocation must be marked as healthy after which the allocation is
34 # automatically transitioned to unhealthy. Transitioning to unhealthy will
35 # fail the deployment and potentially roll back the job if "auto_revert" is
37 healthy_deadline = "3m"
39 # The "progress_deadline" parameter specifies the deadline in which an
40 # allocation must be marked as healthy. The deadline begins when the first
41 # allocation for the deployment is created and is reset whenever an allocation
42 # as part of the deployment transitions to a healthy state. If no allocation
43 # transitions to the healthy state before the progress deadline, the
44 # deployment is marked as failed.
45 progress_deadline = "10m"
47 # The "auto_revert" parameter specifies if the job should auto-revert to the
48 # last stable job on deployment failure. A job is marked as stable if all the
49 # allocations as part of its deployment were marked healthy.
52 # The "canary" parameter specifies that changes to the job that would result
53 # in destructive updates should create the specified number of canaries
54 # without stopping any previous allocations. Once the operator determines the
55 # canaries are healthy, they can be promoted which unblocks a rolling update
56 # of the remaining allocations at a rate of "max_parallel".
58 # Further, setting "canary" equal to the count of the task group allows
59 # blue/green deployments. When the job is updated, a full set of the new
60 # version is deployed and upon promotion the old version is stopped.
64 # All groups in this job should be scheduled on different hosts.
66 operator = "distinct_hosts"
70 # the same Nomad client. Any task within a group will be placed on the same
73 # For more information and examples on the "group" stanza, please see
74 # the online documentation at:
76 # https://www.nomadproject.io/docs/job-specification/group.html
78 group "prod-group1-storage" {
79 # The "count" parameter specifies the number of the task groups that should
80 # be running under this group. This value must be non-negative and defaults
84 # Hard coding prefered node as primary.
86 attribute = "${attr.unique.hostname}"
91 # https://www.nomadproject.io/docs/job-specification/volume
92 volume "prod-volume1-storage" {
95 source = "prod-volume-data1-1"
98 # The "task" stanza creates an individual unit of work, such as a Docker
99 # container, web application, or batch processing.
101 # For more information and examples on the "task" stanza, please see
102 # the online documentation at:
104 # https://www.nomadproject.io/docs/job-specification/task.html
106 task "prod-task1-storage" {
107 # The "driver" parameter specifies the task driver that should be used to
112 volume = "prod-volume1-storage"
113 destination = "/data/"
117 # The "config" stanza specifies the driver configuration, which is passed
118 # directly to the driver to start the task. The details of configurations
119 # are specific to each driver, so please see specific driver
120 # documentation for more information.
122 image = "minio/minio:RELEASE.2020-11-19T23-48-16Z"
123 dns_servers = [ "${attr.unique.network.ip-address}" ]
133 MINIO_ACCESS_KEY = "minio"
134 MINIO_SECRET_KEY = "minio123"
135 MINIO_BROWSER = "off"
138 # The service stanza instructs Nomad to register a service with Consul.
140 # For more information and examples on the "task" stanza, please see
141 # the online documentation at:
143 # https://www.nomadproject.io/docs/job-specification/service.html
148 tags = [ "storage${NOMAD_ALLOC_INDEX}" ]
155 path = "/minio/health/live"
162 # The "resources" stanza describes the requirements a task needs to
163 # execute. Resource requirements include memory, network, cpu, and more.
164 # This ensures the task will execute on a machine that contains enough
167 # For more information and examples on the "resources" stanza, please see
168 # the online documentation at:
170 # https://www.nomadproject.io/docs/job-specification/resources.html
183 task "prod-task2-sync" {
184 # The "raw_exec" parameter specifies the task driver that should be used
188 # The "template" stanza instructs Nomad to manage a template, such as
189 # a configuration file or script. This template can optionally pull data
190 # from Consul or Vault to populate runtime configuration data.
192 # For more information and examples on the "template" stanza, please see
193 # the online documentation at:
195 # https://www.nomadproject.io/docs/job-specification/template.html
201 INOTIFY_OPTONS="--recursive --monitor"
202 VOLUMES="/data/logs.fd.io /data/docs.fd.io"
204 if [ '{{ env "attr.unique.network.ip-address" }}' = "10.32.8.14" ]; then
205 echo "Running notify daemon"
206 inotifywait -e moved_to ${INOTIFY_OPTONS} ${VOLUMES} | \
207 while read path action file; do
211 resource=${path#"/data"}${file}
213 _signature="PUT\n\napplication/octet-stream\n${date}\n${resource}"
214 signature=$(echo -en ${_signature} | openssl sha1 -hmac ${secret} -binary | base64)
216 curl -v -X PUT -T "${path}${file}" \
217 -H "Host: storage0.storage.service.consul:9000" \
219 -H "Content-Type: application/octet-stream" \
220 -H "Authorization: AWS ${key}:${signature}" \
221 http://storage0.storage.service.consul:9000${resource}
224 while :; do sleep 2073600; done
228 destination = "local/sync.sh"
232 # The "config" stanza specifies the driver configuration, which is passed
233 # directly to the driver to start the task. The details of configurations
234 # are specific to each driver, so please see specific driver
235 # documentation for more information.
237 command = "local/sync.sh"
240 # The "resources" stanza describes the requirements a task needs to
241 # execute. Resource requirements include memory, network, cpu, and more.
242 # This ensures the task will execute on a machine that contains enough
245 # For more information and examples on the "resources" stanza, please see
246 # the online documentation at:
248 # https://www.nomadproject.io/docs/job-specification/resources.html