2015-07-19 30 views
5

salt.states.file.managed richiede source_hash come argomento per verificare un file scaricato. Questo mi impedisce di usare file.managed per un file su un server online di cui non ho il controllo. Anche il file cambia regolarmente. La mia configurazione è simile a questa.Utilizzo di file.managed per il download di un file in Salt

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

Non voglio usare cmd.run con Curl o wget perché questo sarebbe sempre scaricare il file, anche quando è già sulla macchina locale.

Vorrei sapere se l'una delle seguenti opzioni è possibile/esiste:

  • md5 in linea servizio di calcolo. C'è un modo per ottenere un hash MD5 del file, usando un servizio web gratuito? Sto pensando a qualcosa come http://md5service.net?url={url-to-file}.
  • conversione interna salata o soluzione alternativa. È possibile gestirlo in Salt? Forse lasciando in sospeso lo source_hash?
  • stato alternativo. C'è un altro stato in Salt per fare qualcosa di simile, senza perdere il vantaggio di scaricare solo il file quando necessario?
+0

Perché non aggiungere come grano al valore corrente del hash del pacchetto scaricato e la prossima volta che si desidera scaricare solo? confrontare l'hash con il nuovo pacchetto? – tudoricc

+0

@tudoricc Voglio scaricare l'ultima versione di ([Craft] (http://buildwithcraft.com)). Il collegamento rimane sempre lo stesso, ma viene reindirizzato alle versioni più recenti non appena vengono rilasciati. – cdMinix

+0

@tudoricc Anche grazie per avermelo chiesto, ho aggiunto il fatto che il file cambia di tanto in tanto la domanda. – cdMinix

risposta

5

Se non è possibile controllare l'altro server, assicurarsi di poterlo considerare affidabile per scaricare il suo contenuto. Il mancato utilizzo di un hash impedirà il rilevamento di download parziali o danneggiati. Non c'è anche modo di lavorare con un file che è cambiato sul server remoto.

Tuttavia, è possibile utilizzare uno stato come questo per eludere l'hashcode. La parte creates impedisce un secondo scaricare una volta che il file è stato scaricato:

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

Non voglio usare '' curl'' o '' wget'', come indicato nella domanda, perché questo scaricherebbe sempre e installerebbe/estrai il file, anche quando non è cambiato. – cdMinix

+2

@cdMinix: questo stato scaricherà il file esattamente una volta. 'Crea' impedisce il secondo download. Vedi http://docs.saltstack.com/en/latest/ref/states/all/salt.states.cmd.html per i dettagli. – ahus1