如何在 hiera 中动态获取另一台机器的主机名?

如何在 hiera 中动态获取另一台机器的主机名?

我有几台机器,其中一台dbserver通过 ENC 分配了类别。其他机器运行需要数据库的软件。现在我想配置这个软件以便能够连接到数据库。我通常更喜欢使用 hiera 自动查找功能来实现这一点。因此,软件类别(我们称之为)foo有一个参数$dbserver。这在 hiera 中被查找为foo::dbserver。我可以在 hiera 中放置一个 hiera 查找,例如

dbserver:      foo.bar.example.com
foo::dbserver: "%hiera('::dbserver')"

因此,我只需在 hiera 中配置一次主机名。另外,我还必须dbserver在 ENC 中配置 -assignment。我必须注意,它们必须匹配,以便运行dbserver在将主机名放入 hiera 的机器上。

有没有办法实现自动化?我可以告诉 hiera 以某种方式检查此类在哪个服务器上运行,并使用该计算机的主机名进行配置吗?

编辑1:hiera.yaml

---
:backends: yaml
:yaml:
  :datadir: /etc/puppet/hieradata/%{::environment}
:hierarchy:
  - "nodes/%{::certname}"
  - "clients/%{::client}"    # custom fact
  - "os_%{::osfamily}"
  - common                   # the code above is inside this common.yaml

相关内容