Puppet上のファイルコンテンツからURLを構築するにはどうすればよいですか。
質問
このようなURLに最新のバックアップタイムスタンプを格納するバックアップスクリプトがありますには、ファイルにタイムスタンプを表す文字列のみが含まれています。たとえば、「201402230400」です。同じスクリプトは、 http://myaws.com/201402230400/MYCOMPANY-DUMP-201402230400.gz と http://myaws.com/201402230400/MyCompany-DATA-201402230400.TGZ
これは、それらのURLを読み、最新のタイムスタンプ値に基づいて新しいVM内のファイルを復元するPuppetクラスを作成しています。不足しているのは、ファイル内のコンテンツストアから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;
}
.
呼び出し file($ latest_file)が期待どおりに機能していません。私が間違っていること?
解決
カスタムタイプ内の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;
}
. 所属していません StackOverflow