Я использовал много купе, начиная с 0.x до версии 1.0, а затем менял задания, но теперь я вернулся к нему. Hiera in Puppet является для меня новичком (наряду с множеством других вещей).Назначение класса узлу на основе имени хоста через Hiera
Правильно ли я понимаю, что в принципе невозможно назначить классы для групп узлов на основе имени хоста (или имени сертификата), соответствующего Hiera?
Я использовал, например, назначение классов ntp-сервера, если хост был чем-то вроде «ntp1.foo.com». Это довольно просто с определениями node
в site.pp
, и я пытаюсь переместить эту концепцию в мир, основанный на Hiera. Я назначил Hiera другим классам и надеялся объединить все эти задания в одном месте.
Единственный способ, которым я нашел это, установить параметр с помощью некоторого не-Hiera и использовать его значение в Hiera для соответствия пути. Например, в моем enc
сценарии экспортировать параметр, как это:
echo "parameters:"
if [ ... ]; do echo " ntpRole: server; else echo " ntpRole: client"; fi
и Hiera Я хотел бы сделать что-то вроде:
- "roles/ntp-%{ntpRole}"
Я думаю, что можно было бы также сделать это с помощью пользовательского факта.
Это работает, но похоже на клочья. Есть ли лучшая/рекомендуемая альтернатива?
Одна проблема состоит в том, что каждый узел необходимо иметь значение (все присваивается ntp- то класс). Это работает для NTP, поскольку все машины являются либо NTP-клиентом, либо сервером, но для чего-то экзистенциального это не так.
Например: роль веб-сервера. Некоторые машины не будут веб-серверами, поэтому я не хочу включать этот класс, но для других, которые я делаю, и я действительно не хочу поддерживать это в файлах на узле и на самом деле не хочу имеют пустой класс *-none
(например, web-none
против web-server
). Я хочу, чтобы все машины с именем www*
или на основании некоторых других критериев загружали класс roles/web
. Можно ли это сделать с Hiera?
Для этого мы используем внешний пользовательский факт, так что факт будет иметь логику, к какой роли принадлежит этот узел, и в вашем hiera вы можете использовать этот факт для включения классов ролей. – Walid