Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Scheduling job with a dependency on another job #545

Open
jason-riddle opened this issue Dec 8, 2015 · 8 comments
Open

Scheduling job with a dependency on another job #545

jason-riddle opened this issue Dec 8, 2015 · 8 comments

Comments

@jason-riddle
Copy link

Is it possible to schedule a job only after another job is successful scheduled? A use case for example, would be to use one docker container to provide a REST API (https://github.com/begriffs/postgrest) for another docker container (postgres), but the REST API docker container should only come up once the database container is up and passed it's health check.

@dadgar
Copy link
Contributor

dadgar commented Dec 8, 2015

Hey! Nomad currently does not have a way to express job dependencies but it is something on our roadmap. From your description it sounds like you need dependencies between tasks/task groups not jobs. A job would only be finished once all the task groups are dead. If you look at issue #419 I think it captures this issue, so I am going to mark as closed.

@dadgar dadgar closed this as completed Dec 8, 2015
@zapman449
Copy link

I believe this should be re-opened.

Here's a use-case: I want to run hashicorp vault and docker-registry from within nomad. The other containers will need these to be available before they can start, but #419 argues for pushing all my apps into a single job.

Granted, this is less obvious for vault, but our private registry is foundational for everything.

@suslovsergey
Copy link

Any news?

@aaronhurt
Copy link

Similar use case here. We would like to be sure that things like our OAuth service, auditing service, etc.. are started and listed as dependencies before other backend applications start.

@DhashS
Copy link

DhashS commented Apr 15, 2019

Different use case here!

I'd like to have some control around precendence order in which my networking, services, and templates fire off. The suggestion of job-dependencies is limiting, unless there's some funky n-pass evaluation stuff, and execution in the same container.

My use case provisions container environment variables and config files based on the services running and registered with consul. Without a strict happens-before ordering, i get a non-deterministic template.

@scalp42
Copy link
Contributor

scalp42 commented Feb 8, 2020

See #419 for the same kind of issue.

@pznamensky
Copy link

It's quite obvious feature for the orchestrator, and at the moment, it's one of the most desired functionality for us.
I still hope it would be implemented in Nomad.

@tgross tgross added this to Needs Roadmapping in Nomad - Community Issues Triage Feb 12, 2021
@tgross tgross removed this from Needs Roadmapping in Nomad - Community Issues Triage Mar 3, 2021
@hashicorp hashicorp locked as spam and limited conversation to collaborators Aug 1, 2022
@hashicorp hashicorp deleted a comment from idenkov Aug 1, 2022
@hashicorp hashicorp deleted a comment from olgeni Aug 1, 2022
@hashicorp hashicorp deleted a comment from kirill-shtrykov Aug 1, 2022
@hashicorp hashicorp deleted a comment from fishhead108 Aug 1, 2022
@tgross tgross added this to Needs Triage in Nomad - Community Issues Triage via automation Aug 1, 2022
@tgross tgross moved this from Needs Triage to Needs Roadmapping in Nomad - Community Issues Triage Aug 1, 2022
@hashicorp hashicorp unlocked this conversation Jun 28, 2023
@116davinder
Copy link

I believe, dependencies can be defined like this in nomad job spec.

# job spec example
dependency 1 {
  provider = consul/nomad/etc.
  check = wait for consul/nomad service / nomad-status to become health
    pattern = nomad/job/group/task [ if nomad service, here i want to see, if nomad can check if nomad service is up or not]
    pattern = name-of-consul-service [ if consul service, here i want to see, if nomad can check if consul service is up or not ]
    pattern = nomad/job/group/task-name [ if nomad-status, here, I want to see, what nomad know about the task, whether its up or not]

  interval = 10s
  retry = 100
  delay = 15s
}
dependency 2 {
  provider = consul/nomad/etc.
  check = wait for consul/nomad service / nomad-status to become health
    pattern = nomad/job/group/task [ if nomad service, here i want to see, if nomad can check if nomad service is up or not]
    pattern = name-of-consul-service [ if consul service, here i want to see, if nomad can check if consul service is up or not ]
    pattern = nomad/job/group/task-name [ if nomad-status, here, I want to see, what nomad know about the task/group/job, whether its up or not]

  interval = 10s
  retry = 100
  delay = 15s
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Development

No branches or pull requests

9 participants