2015-07-19 39 views
5

salt.states.file.managed pobiera source_hash jako argument do weryfikacji pobranego pliku. To blokuje mi używanie pliku file.managed dla pliku na serwerze internetowym, nad którym nie mam kontroli. Plik zmienia się również regularnie. Moja konfiguracja wygląda tak.Użycie file.managed do pobrania pliku w Salt

download_stuff: 
    file.managed: 
    - name: localfile.tar.gz 
    - source: http://someserver.net/onlinefile.tar.gz 
    - source_hash: ??? 

Nie chcę używać cmd.run z Curl lub wget bo to zawsze pobrać plik, nawet gdy jest już na komputerze lokalnym.

Chciałbym wiedzieć, czy jedną z poniższych opcji jest możliwe/istnieje:

  • md5 Internecie usługi obliczania. Czy istnieje sposób na uzyskanie skrótu md5 pliku, korzystając z bezpłatnej usługi WWW? Myślę o czymś takim, jak http://md5service.net?url={url-to-file}.
  • Wewnętrzna konwersja soli lub obejście problemu. Czy można to załatwić w Salt? Być może jakoś pomijając source_hash?
  • alternatywny stan. Czy jest inny stan w Salt za robienie czegoś takiego, nie tracąc przy tym korzyści polegającej na pobieraniu pliku tylko w razie potrzeby?
+0

dlaczego nie można dodać jako ziarna bieżącą wartość hash pobranego pakietu i następnym razem chcesz pobrać tylko? porównać hasz z nowym pakietem? – tudoricc

+0

@tudoricc Chcę pobrać najnowszą wersję ([Craft] (http://buildwithcraft.com)). Link zawsze pozostaje taki sam, ale przekierowuje go do nowszych wersji, gdy tylko zostaną wydane. – cdMinix

+0

@tudoricc Dziękuję również za pytanie, dodałem fakt, że plik od czasu do czasu zmienia się na pytanie. – cdMinix

Odpowiedz

5

Jeśli nie możesz kontrolować drugiego serwera, upewnij się, że możesz mu zaufać, aby pobrać jego zawartość. Niewykonanie skrótu uniemożliwi wykrycie częściowych lub uszkodzonych pobrań. Nie ma również możliwości pracy z plikiem, który został zmieniony na serwerze zdalnym.

Mimo to można użyć takiego stanu, aby ominąć hashcode. creates część uniemożliwi pobieranie drugi raz plik został pobrany:

bootstrap: 
    cmd.run: 
    - name: curl -L https://bootstrap.saltstack.com -o /etc/salt/cloud.deploy.d/bootstrap-salt.sh 
    - creates: /etc/salt/cloud.deploy.d/bootstrap-salt.sh 
+0

Nie chcę używać '' curl'' lub '' wget'', jak podano w pytaniu, ponieważ to zawsze ściągałoby i instalował/rozpakowywał plik, nawet gdy się nie zmieniło. – cdMinix

+2

@cdMinix - ten stan pobierze plik dokładnie jeden raz. Funkcja 'tworzy' zapobiega drugiemu pobieraniu. Szczegółowe informacje można znaleźć na stronie http://docs.saltstack.com/en/latest/ref/states/all/salt.states.cmd.html. – ahus1