hiera如何运作?

时间:2016-06-10 17:46:38

标签: puppet hiera

我有以下hiera数据文件(yml)。

  • hiera /数据/域/ abcd.com
  • hiera /数据/角色/ webserver.yml

假设我有一个木偶节点,它有一个网络服务器'已分配的角色及其主机名为abcd.com

现在在 - hiera / data / domain / abcd.com文件下,我有这个

config::xyz_category::name: 'bbbb'

我在 - hiera / data / role / webserver.yml

下面有以下数据
config::xyz_category:
  username: 'aaaa'

我的hiera数据查找顺序如下(hiera.yml)

:backends: yaml
:logger: console
:merge_behavior: deeper
:yaml:
  :datadir: /etc/puppet/branches/hiera/data
:hierarchy:
   - fqdn/%{::fqdn}
   - role/%{::rolename}
   - domain/%{::domain}
   - defaults

所以我的问题是我可以说我为这个' webserver'编写了一个模块。作用。

在该模块中,我可以调用下面的hiera数据吗?

$config = hiera('config::xyz_category', {})

这样

$config['name'] should return 'bbbb'
$config['username'] should return 'aaaa'

1 个答案:

答案 0 :(得分:4)

不,不完全是。

Hiera优先级查找(例如由hiera()函数执行)查找与密钥关联的完整值,从提供一个最高优先级层次结构级别获取整个值。在您描述的情况下,该值将是一个只有一个键的哈希,'username'。

另一方面,如果要从数据层次结构的多个级别组合哈希值,那么您正在寻找hash-merge查找。 Hiera支持这一点,但您需要使用正确的查找功能:

$config = hiera_hash('config::xyz_category', {})

请特别注意hiera()hiera_hash()(以及hiera_array())之间的差异主要是关于查找策略,而不是返回值的类型。普通hiera()函数可以根据需要返回标量,散列和数组。