0

我创建了一个厨师食谱,其中安装了提到的特定 rpm。这个 rpm 有一个版本号,需要从属性文件(它本身是动态创建的)动态加载。然后需要将此厨师食谱加载到厨师服务器中。

remote_file "Core_feature.rpm" do
path   "#{src_loc}core_feature_v91-2.noarch.rpm"

这里,v91-2是需要通过从属性文件中读取动态进入配方的值。

这是可以实现的吗?如果是,我该如何继续实现它。(不知道红宝石)!

4

1 回答 1

0

你有几个选择。在我看来,最好的方法是使用 json 文件而不是属性文件。然后,您可以使用调用中的-j标志chef-client来读取 json 文件作为normal节点上的属性。主要的警告是,normal属性从一个厨师运行到下一个厨师持续存在,因此您需要确保在每次厨师运行时重新设置它们。

或者,您可以让 jenkins 使用刀直接在节点上设置属性。你需要一个插件 knife node attribute set ...。或者,如果这些是可行的选项,您可以将其设置在环境或角色上,但它们将涉及从服务器中提取环境或角色,对其进行修改,然后将其推回。

另一种选择是使用 ruby​​ 将属性文件作为 attributes/xxxx.rb 文件的一部分来读取。然后,您可以将节点属性设置为您想要的任何先例级别。

属性/default.rb

properties = IO.read('/path/to/properties/file')
# parse properties and set node attributes like this
node.default[:something] = <your value>
于 2015-07-07T13:18:20.387 回答