Как использовать 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 для назначения модулей серверам.

Сам никогда не пробовал, но думаю, что может сработать..:)

Другие вопросы по тегам