我正试图找出一种方法来获取erb模板文件并使用hiera数据(甚至来自单个yaml文件),只需使用该模板生成一个包含替换值的文件。
你有没有尝试过这样的事情?我的第一个想法是写一个ruby脚本,但也许有一个更简单的解决方案。
提前致谢。
编辑: 由于可能不太清楚,让我解释用例。
我希望开发人员能够模仿和提交所有应用程序配置,并且我希望为他们提供一种在不使用puppet的情况下在本地计算机(笔记本电脑)上填充这些模板的自动方式。额外的好处是在实际提交之前验证模板。
答案 0 :(得分:1)
我不确定你为什么要直接从hiera数据中做这个,但是使用ERB和yaml ruby库很容易实现。像(psudo-code):
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"))
同样,这基本上都是psudo代码,不会开箱即用,但它非常接近。所以玩得开心。
您可以阅读有关ERB课程here的更多信息。