如何在本地测试带有hiera数据的模板?

时间:2014-11-04 16:50:55

标签: templates erb puppet hiera

我正试图找出一种方法来获取erb模板文件并使用hiera数据(甚至来自单个yaml文件),只需使用该模板生成一个包含替换值的文件。

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

提前致谢。

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

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

1 个答案:

答案 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的更多信息。