【问题标题】:compute sha-256 using chef使用 chef 计算 sha-256
【发布时间】:2019-08-25 13:24:42
【问题描述】:

我有一个代码来比较文件和工件中的 sha-256 值,如果校验和不匹配,则会引发错误。但我想在我自己的配方中计算校验和,而不是从工件中读取它。下面是我到目前为止的代码,并试图找出我的配方中是否有任何函数或方法可以用来计算文件的 sha-256。 提前致谢

  only_if { node['abc'] }
  not_if { ::File.exist?(checksum_file) and ::File.read(checksum_file).strip==coordinates['checksum'].strip }
  message 'The previously deployed checksum is not aligned with the actual value'
  level :debug
  notifies :create, 'remote_file[download file]', :immediately
end```


【问题讨论】:

    标签: ruby chef-infra chef-recipe


    【解决方案1】:

    chef 建立在 ruby​​ 之上,因此我们可以在食谱中释放 ruby​​ 的力量。

    如果您想计算文件的 sha-256 校验码,以下 ruby​​ 代码可能会很方便

    require 'digest'
    Digest::SHA256.file('/path/to/file').hexdigest
    

    您帖子中的 sn-p 并未指定您使用的是哪个厨师资源,尽管感觉就像您使用的是 log 资源。

    既然你提到你有兴趣从 artifactory 下载文件,remote_file 资源可以做到这一点,它有一个 checksum 属性:

    checksum:可选,参见use_conditional_get。文件的 SHA-256 校验和。用于防止文件被重新下载。当本地文件与校验和匹配时,Chef Infra Client 不会下载它。

    【讨论】:

    • 我尝试了下面的代码,但它抛出错误:没有这样的文件或目录@rb_sysopen。 remote_file 'compute checksum' do only_if { ::File.exist?(node.run_state['path']) } checksum Digest::SHA256.file('/tmp/xyz.zip').hexdigest end
    • @shriBin:请更新您的原始帖子,我会相应地更新我的答案
    猜你喜欢
    • 1970-01-01
    • 2015-08-13
    • 2019-07-21
    • 1970-01-01
    • 2012-06-15
    • 2023-03-27
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多