我有以下hiera数据文件(yml)。
可以说我有一个分配了“网络服务器”角色的p节点,并且其主机名是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
所以我的问题是,我有一个为此“网络服务器”角色编写的模块。
在该模块中,我可以像下面这样调用hiera数据吗?
$config = hiera('config::xyz_category', {})
以便
$config['name'] should return 'bbbb'
$config['username'] should return 'aaaa'
不,不完全是。
一个Hiera优先级查询(例如由该hiera()
功能执行的查询)会查找与该键关联的完整值,并从提供优先级的最高优先级层次结构中获取整个值。在您描述的情况下,该值将是带有一个唯一键“用户名”的哈希。
另一方面,如果要从多个层次的数据层次结构中组合哈希值,则需要查找哈希合并查找。Hiera支持这一点,但是您需要使用正确的查找功能:
$config = hiera_hash('config::xyz_category', {})
请特别注意,之间的区别hiera()
和hiera_hash()
(和hiera_array()
)主要是关于查找策略,而不是对返回值的类型。普通hiera()
函数可以适当地返回标量,哈希和数组。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句