Агент 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