Salt — Скачать Файл с Неизвестным Source_Hash

В salt, имеется очень полезный file.managed стейт, который умеет скачивать файлы по HTTP/HTTPS и сохранять их на целевой машине.

К сожалению в данный момент не возможно нормально скачать файл с помощью salt не зная его хэш.

Если вы попробуете скачать файл с помощью salt стейта без указания source_hash, salt выдаст ошибку «Unable to determine upstream hash of source file».

Тем не менее, часто возникает необходимость создать salt стейт, который будет скачивать часто меняющийся файл с удаленного HTTP/HTTPS сервера который вы не контролируете.

Дельный Совет: Каждый DevOps должен знать основы работы с Git. И вы можете освоить их прямо сейчас! Читать далее →

Здесь я вам покажу как все-таки сделать так, чтобы ваш salt стейт загрузил нужный файл, предварительно не зная его source_hash.

Скачать Файл Без Source_Hash

Важно: Прежде чем скачивать файл с удаленного и неконтролируемого вами сервера, убедитесь что ему можно доверять.

Из salt стейта мы вызовем команду, которая скачает нужный нам файл, подсчитает его md5 хэш и выведет результат в поддерживаемом salt-ом формате:

$ echo "md5=`curl -s "https://bootstrap.saltstack.com" | md5sum | cut -c -32`"
md5=1113301989170450ade99e7b8c86da44

Собственно сам salt стейт:

{% set source_hash = salt['cmd.run']('echo "md5=`curl -s "https://bootstrap.saltstack.com" | md5sum | cut -c -32`"') %}

download-bootstrap-salt:
  file.managed:
    - name: /tmp/bootstrap-salt.sh
    - source: https://bootstrap.saltstack.com
    - source_hash: {{ source_hash }}

При каждом вызове этого стейта, он скачивает удаленный файл по HTTP/HTTPS, считает его md5 хэш и сравнивает с хэшем локального файла.

Если хэши различны, локальный файл будет заменен скачиваемым.

В противном случае он будет сохранен без изменений.

Итак, как вы видите, вполне возможно скачать любой файл не зная его source_hash.

Тем не менее, я надеюсь что эта возможность будет добавлена в следующих релизах SaltStack.

Дельный Совет: Хотите использовать последние возможности SaltStack? Обновите salt-master и salt-minions в БЕЗОПАСНЫЙ и ПРАВИЛЬНЫЙ способ! Читать далее →

И в будущем этот хак станет ненужным.