Nomad将下载的S3文件放在哪里?

时间:2019-10-30 23:10:05

标签: nomad

我有以下游牧工作:

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
}

2 个答案:

答案 0 :(得分:3)

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

在这种情况下,您的data_dir设置为/tmp/client1,所以我希望文件位于/tmp/client1/alloc/<alloc_id>/<task>/local/<your_file.ext>之类的地方。

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

此外,您可能要小心将Nomad数据目录植于/ tmp文件夹中,因为该目录可能会定期删除,这可能解释了为什么找不到这些文件。

答案 1 :(得分:1)

您可以在游牧环境中将此目录引用为$ {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"]
  }