Czy źródło pliku marionetkowego może pochodzić z serwisu internetowego?

10

Czy istnieje (prosty) sposób, aby marionetka używała pliku dostępnego w Internecie dla właściwości Source pliku?

na przykład:

file { "/home/text.txt":
  source => [
    "http://www.example.com/text.txt",
  ]
}
Gunwin
źródło
Jeśli cenisz integralność swoich serwerów, przynajmniej użyj https. I użyj bardziej godnej zaufania domeny, bo nie wiesz, kto może ją kontrolować ... ummm ... Staje się tutaj bardziej mętny.
mc0e

Odpowiedzi:

4

Piszę zaktualizowaną odpowiedź, aby powiadomić przyszłych czytelników, że teraz zasób Plik rzeczywiście implementuje źródło HTTP.

Z dokumentów :

źródło

Plik źródłowy, który zostanie skopiowany na miejsce w systemie lokalnym. Ten atrybut wyklucza się wzajemnie z treścią i celem. Dozwolone wartości to:

  • puppet: URI, które wskazują pliki w modułach lub punkty montowania serwera plików Puppet.
  • W pełni kwalifikowane ścieżki do plików dostępnych lokalnie (w tym plików na udziałach NFS lub dyskach mapowanych w systemie Windows).
  • file: URI, które zachowują się tak samo jak lokalne ścieżki plików.
  • http: URI, które wskazują pliki obsługiwane przez popularne serwery sieciowe

Możesz więc użyć konstrukcji w takiej postaci, w jakiej ją napisałeś:

file { "/home/text.txt":
  source => "http://www.example.com/text.txt",
}
dr_
źródło
2
począwszy od wersji 4.4.0 Lalek (poprzez biletów tickets.puppetlabs.com/browse/PUP-1072 )
kjh
4

Jest żądany jako funkcja od lat ... Ale w końcu będziesz potrzebować niestandardowej funkcji do tego ... lub do użycia curllub wget. Zobacz Puppet Forge .

Co zawiera text.txt?

ewwhite
źródło
txt.txt to tylko przykład. Naprawdę chcę go użyć do ściągnięcia klientów Freeradius z systemu administracyjnego.
gunwin
4

Obecnie nie jest to możliwe po wyjęciu z pudełka:

źródło:

...

Dostępne schematy URI to marionetka i plik. Identyfikatory URI Puppet będą pobierać pliki z wbudowanego serwera plików Puppet

Skończyło się definena tym, że znalazłem w Internecie:

define remote_file($remote_location=undef, $mode='0644'){
  exec{ "retrieve_${title}":
    command => "/usr/bin/wget -q ${remote_location} -O ${title}",
    creates => $title,
  }

  file{$title:
    mode    => $mode,
    require => Exec["retrieve_${title}"],
  }
}

remote_file{'/home/text.txt':
  remote_location => 'http://www.example.com/text.txt'
}
Glueon
źródło