【问题标题】:Setting a chef variable with an external call使用外部调用设置厨师变量
【发布时间】:2024-01-13 02:43:01
【问题描述】:

我正在使用应用程序说明书来部署 java 战争文件。我想做的是从外部位置(在本例中为我们的本地 nexus 存储库)加载 WAR md5。使用 chef 从外部位置加载值(例如运行一些 bash,将字符串输出到 STDOUT 并将该值用于 chef 变量)。

类似这样的 bash:

export CHEF_VARIABLE = `wget -O - $/URL/WHICH/RETURNS/TEXT/STRING`

【问题讨论】:

    标签: ruby nexus chef-infra


    【解决方案1】:

    使用 ruby​​ 的 open-uri。例如,我在用于安装 VirtualBox 的说明书中执行此操作。 VirtualBox 下载站点有一个带有校验和 (sha256sum) 的文本文件。

    require 'open-uri'
    
    sha256sum = "" # retrieve the sha256sums from the virtualbox mirror
    open("#{node['virtualbox']['urlbase']}/SHA256SUMS").each do |line|
      sha256sum = line.split(" ")[0] if line =~ /#{distfile}/
    end
    

    您可以在source on github 中查看整个食谱。我可能会将该值设置为应用程序食谱之外的食谱中的属性,然后再将其设置为节点的运行列表中。

    【讨论】: