我正在尝试为我的 Puppet 设置构建 Hiera 配置。我的主机是 FreeBSD 和 Debian 系统。因此我有一个基于::osfamily
. 但由于我广泛使用 Jails,我想进一步细分我的 FreeBSD 主机,使用::virtual
.
来自hiera.yaml:
:hierarchy:
- "osfamily/%{::osfamily}"
- "%{::virtual}/%{::osfamily}"
- common
还有我的数据目录树:
hieradata/
|-- common.yaml
|-- osfamily
| |-- Debian.yaml
| `-- FreeBSD.yaml
|-- physical
| `-- FreeBSD.yaml
|-- jailed
`-- virtual
在我的理解中,木偶应该应用osfamily/FreeBSD.yaml的所有内容,然后从物理/FreeBSD.yaml 应用到物理 FreeBSD 主机。
现在我想在每台主机上安装 CA-Certificates 包并为该任务设置一个类:
class certificates ( $packageName = hiera('ca_package') ){
# Install CA-Certificates
package { $packageName:
ensure => installed,
}
}
该类包含在common.yaml 中
classes:
- certificates
并且ca_package -Variable 在osfamily/ FreeBSD.yaml 中定义:
---
rootuser: root
rootgroup: wheel
sshservicename: sshd
ca_package: 'security/ca_root_nss'
当我对该变量进行 hiera 测试时,一切正常:
# hiera -c /usr/local/etc/puppet/hiera.yaml ca_package ::osfamily=FreeBSD
security/ca_root_nss
#
但 Puppet(甚至在监狱中)抱怨说数据项ca_package
不可用。
错误:无法从远程服务器检索目录:服务器上的错误 400:无法在任何 Hiera 数据文件中找到数据项 ca_package,并且 /usr/local/etc/puppet/modules/certificates/manifests/init.pp 中未提供默认值: 2 在节点 puppet.fqdn 上
我究竟做错了什么?