我有以下游牧工作:
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
}
答案 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"]
}