gpt4 book ai didi

ruby - 使用 Ruby 解析和编写 Puppet 节点定义

转载 作者:太空宇宙 更新时间:2023-11-03 18:13:33 24 4
gpt4 key购买 nike

我正在用 Ruby 编写一个辅助 API 来自动创建和操作节点定义。我的代码正在运行;它可以成功读写节点定义,但是有点笨拙。

Ruby 不是我的主要语言,所以我确信有一个更简洁、更像 ruby​​esque 的解决方案。我将不胜感激一些意见或建议。

每个主机在 list /节点中都有自己的文件,仅包含节点定义。例如

node 'testnode' {
class {'firstclass': }
class {'secondclass': enabled => false }
}

所有类都是启用(默认)或禁用元素。在 Ruby 代码中,我将它们存储为一个实例变量 hash @elements。

读取方法如下所示:

  def read()
data = File.readlines(@filepath)
for line in data do
if line.include? 'class'
element = line[/.*\{'([^\']*)':/, 1]
if @elements.include? element.to_sym
if not line.include? 'enabled => false'
@elements[element.to_sym] = true
else
@elements[element.to_sym] = false
end
end
end
end
end

写入方法如下所示:

  def write()
data = "node #{@hostname} {\n"
for element in @elements do
if element[1]
line = " class {'#{element[0]}': }\n"
else
line = " class {'#{element[0]}': enabled => false}\n"
end

data += line
end

data += "}\n"

file = File.open(@filepath, 'w')
file.write(data)
file.close()
end

要补充的是,这些系统将与互联网隔离。所以我宁愿避免大量依赖库,因为我需要手动安装/维护它们。

最佳答案

如果您的目标是以编程方式定义您的节点,那么有一种比读写 list 更直接的方法。 Puppet 的内置功能之一是“External Node Classifiers”(ENC)。基本思想是 puppet 的外部将定义节点的外观。

在最简单的形式中,ENC 可以是一个 ruby​​/python/任何脚本,它写出带有类列表和启用参数的 yaml。 Reading and writing yaml from ruby is as simple as it gets .

关于ruby - 使用 Ruby 解析和编写 Puppet 节点定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29843243/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com