source_hash
作为参数来验证下载的文件。这会阻止我使用 file.managed
访问我无法控制的在线服务器上的文件。该文件也会定期更改。我的配置看起来像这样。
download_stuff:
file.managed:
- name: localfile.tar.gz
- source: http://someserver.net/onlinefile.tar.gz
- source_hash: ???
我不想将
cmd.run
与 Curl
或 wget
一起使用,因为这将始终下载文件,即使它已经在本地计算机上也是如此。
我想知道以下选项之一是否可能/存在:
http://md5service.net?url={url-to-file}
.source_hash
?如果您无法控制其他服务器,请确保您可以信任它来下载其内容。不使用哈希将阻止您检测部分或损坏的下载。也无法处理远程服务器上已更改的文件。
然而,您可以使用这样的状态来绕过哈希码。
creates
部分将在文件下载后阻止第二次下载:
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
从 2016.3.0 版开始可以使用
file.managed
下载文件,即使您无权访问哈希,也可以通过添加 skip_verify: True
来完成。对于给出的示例,它将是:
download_stuff:
file.managed:
- name: localfile.tar.gz
- source: http://someserver.net/onlinefile.tar.gz
- skip_verify: True
来自docs:
如果为 True,将跳过远程文件源(http://、https://、ftp://)的哈希验证,并忽略 source_hash 参数。