1

我正在尝试找出一种方法来获取 erb 模板文件并使用 hiera 数据(甚至来自单个 yaml 文件),然后仅使用模板生成具有替换值的文件。

你有没有尝试过这样的事情?我的第一个想法是编写一个 ruby​​ 脚本,但也许有一个更简单的解决方案。

提前致谢。

编辑:由于可能不清楚,让我解释一下用例。

我希望开发人员可以对所有应用程序配置进行模板化和提交,并且我想为他们提供一种自动方式,在不使用 puppet 的情况下将这些模板填充到他们的本地机器(笔记本电脑)上。额外的好处是在实际提交模板之前对其进行验证。

4

1 回答 1

1

我不确定您为什么要直接从 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 类的更多信息。

于 2014-11-05T23:18:38.077 回答