Назад | Перейти на главную страницу

Как динамически получить имя хоста другой машины в hiera?

У меня есть несколько машин, одна из них класса dbserver назначается через ENC. На других машинах работает программное обеспечение, которому нужна БД. Теперь я хочу настроить это программное обеспечение, чтобы иметь возможность подключаться к БД. Обычно я предпочитаю использовать для этого функцию автозапуска hiera. Итак, класс программного обеспечения, назовем его foo, имеет параметр $dbserver. Это рассматривается в иере как foo::dbserver. Я могу поставить hiera lookup в hiera, например

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

Поэтому мне нужно настроить имя хоста только один раз в hiera. Плюс мне нужно настроить dbserver-задание в ENC. И я должен позаботиться о том, чтобы они совпадали, чтобы dbserver работает на машине, имя хоста которой я ввел в hiera.

Есть ли способ это автоматизировать? Могу ли я сказать hiera, чтобы она как-то проверила, на каком сервере работает этот класс, и использовала имя хоста этого компьютера для настройки?

edit1: 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