open-nomad/website/source/docs/job-specification/task.html.md

5.1 KiB

layout page_title sidebar_current description
docs task Stanza - Job Specification docs-job-specification-task The "task" stanza creates an individual unit of work, such as a Docker container, web application, or batch processing.

task Stanza

The task stanza creates an individual unit of work, such as a Docker container, web application, or batch processing.

job "docs" {
  group "example" {
    task "server" {
      # ...
    }
  }
}

task Parameters

  • artifact (Artifact: nil) - Defines an artifact to download before running the task. This may be specified multiple times to download multiple artifacts.

  • config (map<string|string>: nil) - Specifies the driver configuration, which is passed directly to the driver to start the task. The details of configurations are specific to each driver, so please see specific driver documentation for more information.

  • constraint (Constraint: nil) - Specifies user-defined constraints on the task. This can be provided multiple times to define additional constraints.

  • driver - Specifies the task driver that should be used to run the task. See the driver documentation for what is available. Examples include docker, qemu, java, and exec.

  • env (Env: nil) - Specifies environment variables that will be passed to the running process.

  • kill_timeout (string: "5s") - Specifies the duration to wait for an application to gracefully quit before force-killing. Nomad sends an SIGINT. If the task does not exit before the configured timeout, SIGKILL is sent to the task.

  • logs (Logs: nil) - Specifies logging configuration for the stdout and stderr of the task.

  • meta (Meta: nil) - Specifies a key-value map that annotates with user-defined metadata.

  • resources (Resources: ) - Specifies the minimum resource requirements such as RAM, CPU, disk, and network.

  • service (Service: nil) - Specifies integrations with Consul for service discovery. Nomad automatically registers when a task is started and de-registers it when the task dies.

  • user (string: <varies>) - Specifies the user that will run the task. Defaults to nobody for the exec and java drivers. Docker and rkt images specify their own default users. This can only be set on Linux platforms, and clients can restrict which drivers are allowed to run tasks as certain users.

  • vault ([Vault][]: nil) - Specifies the set of Vault policies required by the task. This overrides any vault block set at the group or job level.

task Examples

The following examples only show the task stanzas. Remember that the task stanza is only valid in the placements listed above.

Docker Container

This example defines a task that starts a Docker container as a service. Docker is just one of many drivers supported by Nomad. Read more about drivers in the Nomad drivers documentation.

task "server" {
  driver = "docker"
  config {
    image = "hashicorp/http-echo"
    args  = ["-text", "hello world"]
  }

  resources {
    network {
      mbits = 250
    }
  }
}

Metadata and Environment Variables

This example uses custom metadata and environment variables to pass information to the task.

task "server" {
  driver = "exec"
  config {
    command = "/bin/env"
  }

  meta {
    my-key = "my-value"
  }

  env {
    MY_KEY = "${meta.my-key}"
  }

  resources {
    cpu = 20
  }
}

Service Discovery

This example creates a service in Consul. To read more about service discovery in Nomad, please see the Nomad service discovery documentation.

task "server" {
  driver = "docker"
  config {
    image = "hashicorp/http-echo"
    args  = ["-text", "hello world"]
  }

  service {
    tags = ["default"]

    check {
      type     = "tcp"
      interval = "10s"
      timeout  = "2s"
    }
  }

  resources {
    cpu = 20
  }
}