用hiera解释嵌套的yaml?

时间:2015-12-14 23:27:57

标签: yaml puppet hierarchy hiera

我看到很多问题接近这一点但不完全符合我的要求,所以请帮我解决这个问题。在我的yaml文件中,我有一个层次结构,如

## application.yaml
application::params::api:
  consumers:
    app1:
      id:  'appname1'
      key: 'key1'
    app2:
      id:  'appname2'
      key: 'key2'

然后在应用程序参数中

## params.pp
class application::params {
    $application = hiera('application::params::api->????->app1->???->id')
}

问号是我用来进入下一级层次结构的问题,我不确定我的分隔符应该是什么?我看到这遍及我们的代码,但无法找到如何加载/调用hiera

的示例

我会使用$application = hiera('application::params::api::app1::id')吗?

2 个答案:

答案 0 :(得分:2)

::符号是Puppet特有的,对Hiera没有特殊含义,但可以使用虚线键导航到细节。表达式hiera('application::params::api.consumers.app1.id')将返回值' appname1'使用示例中的数据时。

有关Hiera Lookup Keys的更多信息。

答案 1 :(得分:0)

您应该利用create_resources功能,并且可能使用define而不是class来使其可重复。

示例如下:

# application/init.pp
class application {
  create_resources('application::app', hiera('application::apps'))
}

# application/app.pp
define application::app(id, key) {
  # do stuff with id and key
}

这是一个不好的例子,你的整个概念都偏离了最佳实践。但这应该通过一些研究让你到达你想要的地方。

希望它有用。