如何将整个hiera数据从puppet传递到脚本中?

时间:2016-11-02 13:53:08

标签: puppet hiera

我想从使用puppet过渡到普通的旧脚本。在此过渡期间,我希望脚本能够访问hiera中的信息。有没有办法让puppet通过exec将所有键值对作为参数传递给脚本?如果我能让木偶把一个hson的hiera blob传递给一个完美的剧本。

通过我的hiera文件中的实验包含

{
    "a" : ["a, b"],
    "b" : "b",
    "c" : {
        "a" : {
            "b" : "c"
        }
    }
}
  1. hiera(" a"):" ab"
  2. hiera(" b"):" b"
  3. hiera(" c"):""
  4. hiera(""):""
  5. 理想情况下,我想将所有hiera数据源中的整个json字符串从puppet的exec传递到我的脚本中?任何人都可以确认这是否可行,或者是否有一些解决方法?

3 个答案:

答案 0 :(得分:0)

  

有没有办法让puppet通过exec将所有键值对作为参数传递给脚本?

不一般,不,因为Hiera分辨率可以是上下文敏感的。无法保证“所有键值对”在整个节点上都是明确定义的。因此,在讨论如何交换数据之前,您需要处理数据 的问题。

即使您认为没有使用任何Hiera工具,比逐个节点更简单地对数据进行上下文关联,并且您只需要关注优先级查找(不是数组或哈希合并查找) ),Hiera没有内置工具来编译与节点有关的所有数据的复合。但是,如果您只处理标准的YAML或JSON后端,则可能会创建并使用自己的黑客版本来提取所需的数据,可能是某些特殊键的值。

然而,即便如此,将数据本身作为命令行参数传递也是非常值得怀疑的。首先,您需要将数据序列化为将被解释为单个shell单词的表单。这肯定可以实现自动化,但接下来你冒着与参数长度限制相冲突的风险。符合要求的POSIX系统可以将最大参数长度设置为小到4096字节(尽管许多具有更大的限制)并且可能很容易。如果你试图用Windows做到这一点,那么就知道它的限制甚至更小。

作为将数据作为命令行参数传递的替代方法,您可以考虑将它们写入脚本将读取的文件中。然而,即使这看起来有点傻。 Hiera有一个CLI - 为什么不只是分发Hiera数据和层次结构配置,让你的脚本使用Hiera从中查询所需的数据?

答案 1 :(得分:0)

一般来说,这不应该起作用。

您可以编写一个自定义Hiera后端,该后端识别特殊查找键并返回层次结构中所有数据的完全合并哈希值。

答案 2 :(得分:0)

我不确定我是否正确地提出了这个问题,但我认为你在谈论一些模板?您可以使用模板并将值放在占位符中。

如果有帮助,请查看此链接。

http://codingbee.net/tutorials/puppet/puppet-generate-files-templates-using-hiera-data/