Как использовать Hiera для назначения модулей узлам в Puppet?
Я решил переключиться с одного узла default.pp по умолчанию на серверную часть Hiera, чтобы управлять узлами в Puppet и назначать модули узлам.
Мы используем имена хостов как таковые:
nyc-apache-prod-01
was-mysql-tst-01
Это наша структура hiera.yaml и hierdata-directory:
# cat hiera.yaml
:backends:
- yaml
:hierarchy:
- environment/tst/%{::hostname}
- environment/tst
- %{::osfamily}
- common
:logger: console
:yaml:
:datadir: '/etc/puppet/hieradata'
# find hieradata
hieradata
hieradata/RedHat.yaml
hieradata/OracleRAC.yaml
hieradata/common.yaml
hieradata/environment
hieradata/environment/dev
hieradata/environment/tst.yaml
hieradata/environment/acc
hieradata/environment/dev.yaml
hieradata/environment/acc.yaml
hieradata/environment/tst
hieradata/environment/tst/nyc-ks-tst-02.yaml
hieradata/environment/tst/nyc-ks-tst-01.yaml
hieradata/environment/prd
hieradata/environment/prd.yaml
Проблема состоит в том, что среды должны быть установлены как environment = tst в /etc/puppet/puppet.conf на каждом отдельном узле. Я мог бы написать модуль для этого, основываясь на имени хоста сервера, но я не уверен, что это лучший способ организовать серверы в отдельной среде.
- Каков наилучший способ иметь разные модули Puppet для разных серверов?
- И как лучше всего добавить определенные модули в группу серверов?
- например, у меня есть 10 веб-серверов Apache... Я хотел бы иметь все эти apache-узлы, независимо от того, имеют ли они tst / acc / dev / prd для наличия модулей apache.
Чего я хочу избежать, так это добавить список классов в список классов для каждого отдельного сервера. Это была причина, по которой мы перешли от единственного node.pp к бэкэнду Hiera.
1 ответ
Возможно, вы захотите назначить роль серверам и использовать ее для предоставления им пакетов.
Например; в /etc/facter/facts.d вы помещаете файл, который устанавливает факт роли. Вы можете использовать это как уровень иерархии Hiera для назначения модулей серверам.
Сам никогда не пробовал, но думаю, что может сработать..:)