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",
]
}
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",
]
}
Odpowiedzi:
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",
}
Jest żądany jako funkcja od lat ... Ale w końcu będziesz potrzebować niestandardowej funkcji do tego ... lub do użycia curl
lub wget
. Zobacz Puppet Forge .
Co zawiera text.txt?
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ę define
na 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'
}