如何将虚拟资源转换为哈希

How to convert virtual resources to a hash

我有一个以“哈希”作为参数的资源:

nginx::resource::map { ‘verions’:
  mappings => { hash of nginx upstreams here }
}

问题是,该散列的数据在该位置不可用,但在整个环境中可用。所以我想出了在这些地方使用虚拟资源的想法:

@upstream_entry { ‘name’: location => ‘location’ }

然后到地方领取

Upstream_Entry <| |>

但这除了将数据收集在一起外并没有多大帮助。我怎样才能将那些假资源转换成哈希值并将其提供给 nginx?

这与模板有关,因为所有 nginx::resource::map 都会创建一个包含哈希内容的文件。

经过几天的研究,我得出的结论是,这实际上是不可能的。

但是,我可以使用 concat 模块(带有 concat::fragment)从资源构建配置文件,方法是在其中定义 concat::fragment

所以这就是为什么我想出一个 pull request for nginx 模块来解决我的特殊情况:我只是不得不放弃使用散列作为 "upstreams source" 的想法,而是使用 Puppet 资源定义它们,然后将它们与 concat.

一起收集