Como posso construir um URL a partir do conteúdo de um arquivo no fantoche?

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

  •  20-12-2019
  •  | 
  •  

Pergunta

Eu tenho um script de backup que armazena o carimbo de data/hora do backup mais recente em um URL como este http://myaws.com/LATEST, o arquivo contém apenas uma string representando o carimbo de data/hora, por exemplo, "201402230400".O mesmo script armazena os backups reais em http://myaws.com/201402230400/mycompany-dump-201402230400.gz e http://myaws.com/201402230400/mycompany-data-201402230400.tgz.

O problema é que estou criando uma classe fantoche que lerá esses URLs e restaurará os arquivos em minha nova VM com base no valor de carimbo de data/hora MAIS RECENTE.O que estou perdendo é como criar um URL de um armazenamento de conteúdo em um arquivo?

  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;
  }

A chamada arquivo($arquivo_mais recente) não está funcionando como esperado.O que estou fazendo de errado?

Foi útil?

Solução

Acho que você vai querer usar generate para obter o carimbo de data/hora MAIS RECENTE em vez de exec dentro de um tipo personalizado.Talvez algo assim (observe que você precisa alterar o formato do uri para download também):

$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;
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top