Как я могу создать URL-адрес из содержимого файла в puppet?

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

  •  20-12-2019
  •  | 
  •  

Вопрос

У меня есть сценарий резервного копирования, который сохраняет последнюю временную метку резервного копирования в URL-адресе, подобном этому http://myaws.com/LATEST, файл содержит только строку, представляющую временную метку, например, "201402230400".Тот же скрипт хранит реальные резервные копии в http://myaws.com/201402230400/mycompany-dump-201402230400.gz и http://myaws.com/201402230400/mycompany-data-201402230400.tgz.

Дело в том, что я создаю класс puppet, который будет считывать эти URL-адреса и восстанавливать файлы в моей новой виртуальной машине на основе последнего значения временной метки.Чего мне не хватает, так это того, как я могу создать 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) работает не так, как ожидалось.Что я делаю не так?

Это было полезно?

Решение

Я думаю, вы захотите использовать 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