2020-03-25 16:57:53 +00:00
|
|
|
---
|
|
|
|
layout: docs
|
|
|
|
page_title: lifecycle Stanza - Job Specification
|
2020-03-25 17:30:44 +00:00
|
|
|
sidebar_title: lifecycle <sup>0.11 Beta</sup>
|
2020-03-25 16:57:53 +00:00
|
|
|
description: The "lifecycle" stanza configures when a task is run within the lifecycle of a task group
|
|
|
|
---
|
|
|
|
|
2020-03-25 17:30:44 +00:00
|
|
|
# `lifecycle` Stanza <sup>0.11 Beta</sup>
|
2020-03-25 16:57:53 +00:00
|
|
|
|
|
|
|
<Placement groups={['job', 'group', 'task', 'lifecycle']} />
|
|
|
|
|
|
|
|
The `lifecycle` stanza configures when a task is run within the lifecycle of a task group.
|
|
|
|
|
|
|
|
Main tasks are tasks that do not have a `lifecycle` stanza.
|
|
|
|
Lifecycle task hooks are run in relation to the main tasks.
|
|
|
|
Tasks can be run as Prestart Hooks, which ensures the prestart task is run before the main tasks are run.
|
|
|
|
|
|
|
|
Tasks can be run with an additional parameter to indicate that they are sidecars, which ensures
|
|
|
|
that they are running over the duration of the whole task group. This will allow you to run
|
|
|
|
a long-lived task in a task group for a batch job. The absence of the sidecar flag
|
|
|
|
indicates that the task is ephemeral and the task will not be restarted if it completes successfully.
|
|
|
|
This allows you to run an ephemeral prestart task in a task group for a service job,
|
|
|
|
which can serve as initialization that occurs before the main services are started.
|
|
|
|
|
|
|
|
```hcl
|
|
|
|
job "docs" {
|
|
|
|
group "example" {
|
|
|
|
|
|
|
|
task "init" {
|
|
|
|
lifecycle {
|
|
|
|
hook = "prestart"
|
|
|
|
}
|
|
|
|
...
|
|
|
|
}
|
|
|
|
|
|
|
|
task "logging" {
|
|
|
|
lifecycle {
|
|
|
|
hook = "prestart"
|
|
|
|
sidecar = true
|
|
|
|
}
|
|
|
|
...
|
|
|
|
}
|
|
|
|
|
|
|
|
task "main" {
|
|
|
|
...
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
## `lifecycle` Parameters
|
|
|
|
|
|
|
|
- `hook` `(string: "prestart")` - Specifies when a task should be run within
|
|
|
|
the lifecycle of a group. Currently only Prestart Hooks are supported.
|
|
|
|
|
|
|
|
- `sidecar` `(bool: false)` - Controls whether or not a task is ephemeral or long-lived
|
|
|
|
within the task group. If a lifecycle task is ephemeral (`sidecar = false`),
|
|
|
|
the task will not be restarted after it completes successfully.
|
|
|
|
If a lifecycle task is long-lived (`sidecar = true`) and it terminates, it will be
|
|
|
|
restarted as long as the task group is running in its allocation.
|