Puppet上のファイルコンテンツからURLを構築するにはどうすればよいですか。

StackOverflow https://stackoverflow.com//questions/22003181

  •  20-12-2019
  •  | 
  •  

質問

このような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;
}
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top