使用 file.managed 在 Salt 中下载文件

问题描述 投票:0回答:2

salt.states.file.managed

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
一起使用,因为这将始终下载文件,即使它已经在本地计算机上也是如此。

我想知道以下选项之一是否可能/存在:

  • 在线md5计算服务。有没有办法使用免费的网络服务获取文件的 md5 哈希值?我在想像
    http://md5service.net?url={url-to-file}
    .
  • 这样的东西
  • 盐内部转换或解决方法。可以在 Salt 中处理吗?也许通过某种方式遗漏
    source_hash
  • 替代状态。在 Salt 中是否有另一种状态可以做这样的事情,而不会失去只在需要时下载文件的好处?
web-services hash md5 salt-stack
2个回答
11
投票

如果您无法控制其他服务器,请确保您可以信任它来下载其内容。不使用哈希将阻止您检测部分或损坏的下载。也无法处理远程服务器上已更改的文件。

然而,您可以使用这样的状态来绕过哈希码。

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

2
投票

从 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 参数。

© www.soinside.com 2019 - 2024. All rights reserved.