Puppet 希拉是怎么工作的?

Puppet 希拉是怎么工作的?,puppet,hiera,Puppet,Hiera,我有以下hiera数据文件(yml) hiera/data/domain/abcd.com hiera/data/role/webserver.yml 假设我有一个傀儡节点,该节点分配了“webserver”角色,其主机名为abcd.com 现在在-hiera/data/domain/abcd.com文件下,我有这个 config::xyz_category::name: 'bbbb' 我在-hiera/data/role/webserver.yml下有以下数据 config::xyz_c

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

  • hiera/data/domain/abcd.com
  • hiera/data/role/webserver.yml
假设我有一个傀儡节点,该节点分配了“webserver”角色,其主机名为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)

所以我的问题是,假设我有一个为这个“Web服务器”角色编写的模块

在该模块中,我可以像下面那样调用hiera数据吗

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

$config['name'] should return 'bbbb'
$config['username'] should return 'aaaa'
不,不完全是

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

另一方面,如果要从数据层次结构的多个级别组合哈希值,则需要查找。Hiera支持此功能,但您需要使用正确的查找功能:

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

请特别注意,
hiera()
hiera\u hash()
(和
hiera\u array()
)之间的区别主要是查找策略,而不是返回值的类型。普通的
hiera()
函数可以根据需要返回标量、哈希和数组。

您尝试过吗?顺便说一下,这是一个非常好的层次结构和角色设置。许多临时的傀儡开发人员似乎对最佳实践感到困惑,但这是相当好的。他还可以将
config::xyz_category
更改为带有
name
username
键的散列。所有这些都让我想起了我是如何迫不及待地等待Puppet数据提供程序投入生产的。
$config = hiera_hash('config::xyz_category', {})