我不确定您为什么要直接从 hiera 数据中执行此操作,但是使用 ERB 和 yaml ruby 库很容易实现。类似(伪代码):
class Erbwritter
require 'erb'
require 'yaml
attr_accessor :output_path, :yaml_path
def initialize(template, command)
@output = :output_path
@data = :yaml_path
.....
end
def render()
ERB.new(@template).result(binding)
end
def save(file)
File.open(file, "w+") do |f|
f.write(render)
end
end
def parse_yaml(@data)
File.open(@data, ...
# parse some stuff, add them to a local {}
end
end
然后,您可以像这样实例化此类:
newTemplate = Erbwritter.new(/path/to/output, /path/to/yaml)
newTemplate.save(File.join(Dir.pwd, your_file_name"))
同样,这基本上都是伪代码,不能开箱即用,但非常接近。所以玩得开心。
您可以在此处阅读有关 ERB 类的更多信息。