Comment puis-je créer une URL à partir du contenu d'un fichier sur Puppet ?

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

  •  20-12-2019
  •  | 
  •  

Question

J'ai un script de sauvegarde qui stocke le dernier horodatage de sauvegarde dans une URL comme celle-ci http://myaws.com/LATEST, le fichier contient uniquement une chaîne représentant l'horodatage, par exemple "201402230400".Le même script stocke les vraies sauvegardes dans http://myaws.com/201402230400/mycompany-dump-201402230400.gz et http://myaws.com/201402230400/mycompany-data-201402230400.tgz.

Le fait est que je crée une classe de marionnettes qui lira ces URL et restaurera les fichiers dans ma nouvelle VM en fonction de la DERNIÈRE valeur d'horodatage.Ce qui me manque, c'est comment puis-je créer une URL à partir d'un magasin de contenu dans un fichier ?

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

L'appel fichier ($ dernier_fichier) ne fonctionne pas comme prévu.Qu'est-ce que je fais de mal ?

Était-ce utile?

La solution

Je pense que tu voudras utiliser generate pour obtenir le DERNIER horodatage plutôt que exec à l'intérieur d'un type personnalisé.Quelque chose comme ça peut-être (notez que vous devez changer le format du uri pour le téléchargement également) :

$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;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top