我创建了一个厨师食谱,其中安装了提到的特定 rpm。这个 rpm 有一个版本号,需要从属性文件(它本身是动态创建的)动态加载。然后需要将此厨师食谱加载到厨师服务器中。
remote_file "Core_feature.rpm" do
path "#{src_loc}core_feature_v91-2.noarch.rpm"
这里,v91-2
是需要通过从属性文件中读取动态进入配方的值。
这是可以实现的吗?如果是,我该如何继续实现它。(不知道红宝石)!
我创建了一个厨师食谱,其中安装了提到的特定 rpm。这个 rpm 有一个版本号,需要从属性文件(它本身是动态创建的)动态加载。然后需要将此厨师食谱加载到厨师服务器中。
remote_file "Core_feature.rpm" do
path "#{src_loc}core_feature_v91-2.noarch.rpm"
这里,v91-2
是需要通过从属性文件中读取动态进入配方的值。
这是可以实现的吗?如果是,我该如何继续实现它。(不知道红宝石)!
你有几个选择。在我看来,最好的方法是使用 json 文件而不是属性文件。然后,您可以使用调用中的-j
标志chef-client
来读取 json 文件作为normal
节点上的属性。主要的警告是,normal
属性从一个厨师运行到下一个厨师持续存在,因此您需要确保在每次厨师运行时重新设置它们。
或者,您可以让 jenkins 使用刀直接在节点上设置属性。你需要一个插件 knife node attribute set ...
。或者,如果这些是可行的选项,您可以将其设置在环境或角色上,但它们将涉及从服务器中提取环境或角色,对其进行修改,然后将其推回。
另一种选择是使用 ruby 将属性文件作为 attributes/xxxx.rb 文件的一部分来读取。然后,您可以将节点属性设置为您想要的任何先例级别。
properties = IO.read('/path/to/properties/file')
# parse properties and set node attributes like this
node.default[:something] = <your value>