Агент Puppet должен выбирать серверы DNS и NTP в зависимости от местоположения.

У нас есть 3 различных центра обработки данных в нашей инфраструктуре. Я использую модуль puppetlabs/ntp и saz/resolv_conf и использую hiera_include('classes'), чтобы установить эти 2 модуля для всех агентов, добавленных в puppet.

Теперь мой файл common.yaml выглядит так:

---
classes: ['ntp', 'resolv_conf']
ntp::servers:
        - datacenter1 NTP server
        - datacenter2 NTP server
        - datacenter3 NTP server
resolv_conf::nameservers:
        - datacenter1 DNS server
        - datacenter2 DNS server
        - datacenter3 DNS server

Таким образом, мой марионеточный агент в Datacenter 3 получает все NTP-сервер и DNS-сервер всех 3 центров обработки данных.

Но я бы хотел, чтобы он просто выбрал NTP-сервер и DNS-сервер в зависимости от его местоположения.

Например, если мой кукольный агент находится в Datacenter 1, используйте серверы NTP и DNS из Datacenter 1. Как я могу определить это в моем common.yaml?

1 ответ

Я бы порекомендовал изменить иерархию иерархии, например, путем определения пользовательских фактов для ваших марионеточных агентов. Итак, вы определяете какой-то особый факт, скажем, data_center и затем вы изменяете иерархию иерархии, например:

:hierarchy:
  - "%{::data_center}"
  - common

Ценность data_center должно зависеть от того, где ваш agent например, давайте предположим, что для агента в центре обработки данных N значение datacenter_n, И, наконец, на Puppet Master создавать файлы datacenter_n.yaml с содержанием:

ntp::servers:
    - datacenterN NTP server
resolv_conf::nameservers:
    - datacenterN DNS server
Другие вопросы по тегам