我有一个备份脚本,它将最新的备份时间戳存储在这个http://myaws.com/LATEST的URL中,该文件只包含一个表示时间戳的字符串,例如“201402230400”。相同的脚本将实际备份存储在http://myaws.com/201402230400/mycompany-dump-201402230400.gz和http://myaws.com/201402230400/mycompany-data-201402230400.tgz中。
问题是我正在创建一个puppet类,它将读取这些url并根据LATEST timestamp值恢复新VM中的文件。我缺少的是如何从文件中的内容存储库构建URL?
define download ($uri, $timeout = 300) {
exec {
"download $uri":
path => '/usr/bin',
command => "wget --timestamping -q '$uri' -O $name",
creates => $name,
timeout => $timeout
}
}
download {
"$latest_file":
uri => "http://myaws.com/LATEST",
timeout => 900;
}
download {
"$data_file":
uri => "http://myaws.com/file($latest_file)/mycompany-data-file($latest_file).tgz",
timeout => 900;
}
调用文件($ latest_file)未按预期工作。我做错了什么?
答案 0 :(得分:2)
我认为您希望使用generate
来获取自定义类型中的最新时间戳而不是exec
。也许这样的事情(请注意,您还需要更改下载uri
的格式):
$latest_file = generate(
'/usr/bin/curl',
'-s',
'http://myaws.com/LATEST'
)
define download ($uri, $timeout = 300) {
exec {
"download $uri":
path => '/usr/bin',
command => "wget --timestamping -q '$uri' -O $name",
creates => $name,
timeout => $timeout
}
}
download {
"$data_file":
uri => "http://myaws.com/${latest_file}/mycompany-data-${latest_file}.tgz",
timeout => 900;
}