1

我有以下游牧工作:

job "aws_s3_copy_rev2" {
  datacenters = ["dc1"]
  type = "system"

  group "aws_s3_copy_rev2" {
    count = 1

    task "aws_s3_copy_rev2" {
      driver = "raw_exec"

      artifact {
        source = "s3::https://my-data-files/123/"
      }

      resources {
        cpu    = 500 # 500 MHz
        memory = 256 # 256MB
        network {
          port "http" {}
        }
      }
    }
  }
}

我使用nomad run aws_s3_copy_rev2.nomad. 但我不知道文件下载到哪里。Nomad 将下载的 S3 文件放在哪里?

这是我启动 Nomad 代理的配置文件。

# Increase log verbosity
log_level = "DEBUG"

# Setup data dir
data_dir = "/tmp/client1"

# Give the agent a unique name. Defaults to hostname
name = "client1"

# Enable the client
client {
    enabled = true

    # For demo assume we are talking to server1. For production,
    # this should be like "nomad.service.consul:4647" and a system
    # like Consul used for service discovery.
    servers = ["xxx:4647"]
    options {
      "driver.raw_exec.enable" = "1"
    }
}

# Modify our port to avoid a collision with server1
ports {
    http = 5657
}
4

2 回答 2

3

通常工件存储在 Nomad 分配之外的分配文件夹中,默认情况下将/etc/nomad.d/alloc/<alloc_id>/<task>/local/<your_file.ext>在 Linux 机器上。不确定其他操作系统的位置。

在这种情况下,你data_dir的设置为/tmp/client1,所以我希望文件会像/tmp/client1/alloc/<alloc_id>/<task>/local/<your_file.ext>.

请务必注意,这些工件是在运行分配作业的 Nomad“客户端”上生成的,而不是在您开始作业的机器上生成的。

此外,您可能需要小心地将 Nomad 数据目录植根到 /tmp 文件夹中,因为它可能会被定期删除,这可能解释了您找不到这些文件的原因。

于 2019-10-30T23:16:03.323 回答
1

您可以在 nomad 环境中将此目录引用为 ${NOMAD_TASK_DIR} 并使用以下路径访问或执行该文件:

artifact {
    source = "s3::https://some-bucket/code/archive-logs.sh"
    destination = "/local/"
  }

  driver = "raw_exec"
  kill_timeout = "120s"

  config {
    command = "/bin/bash"
    args = ["${NOMAD_TASK_DIR}/archive-logs.sh","7"]
  }
于 2020-01-05T11:20:22.000 回答