Недавно я установил и запустил своего марионеточного мастера и клиента, правильно подписал клиента, затем запросил и применил простые изменения, все в порядке.
У меня растет количество машин (> 100). Они не названы последовательно (по историческим причинам). Они делятся на несколько категорий (подумайте об этом как: dataserver_type1, dataserver_type2, webserver_type1, webserver_type2 ....). Новые экземпляры этих типов машин добавляются еженедельно.
Я не понимаю (пока) или не вижу, как я могу объявить «общий» узел (скажем) «dataserver_type1», который содержит все необходимые модули, и установить что-то в клиентском puppet.conf, в котором говорится: «Я - dataserver_type1. "без использования имени хоста / FQDN
Если я устанавливаю имя узла в каталоге как (скажем) «my-data-server-type1» - сертифицированное имя хоста - он подбирает его и работает. Я знаю, что вы можете использовать шаблоны для имен хостов, но, как я уже сказал, имена моих серверов не согласованы, и я не могу их изменить.
Это кажется неискренним - редактировать файл и вручную добавлять узел для каждого сервера, когда они продолжают расти.
Редактировать:
Копаем глубже, кажется роли может быть то, что я хочу. Но, похоже, все еще существует элемент, с помощью которого мастер содержит список ролей, которые должен выполнять конкретный именованный сервер. Возможно, я спрашиваю, как клиент может сказать: «Я хочу быть этой ролью» без необходимости обновления сервера?
Узлы всегда определяются централизованно, либо в ваших манифестах, либо в классификатор внешнего узла (или оба).
Я предполагаю, что вы могли бы собрать ENC, который позволяет клиентам определять свою роль ... но почему вы хотите касаться каждого компьютера, чтобы настроить его локально?
Похоже, вам просто может потребоваться лучшая организация манифестов вашего узла. Может быть, какое-то наследование узлов для ваших системных «ролей», чтобы уменьшить дублирование каждый раз, когда вы создаете новый узел, а также несколько хороших имен узлов регулярных выражений, которые покрывают наборы системных имен (например, вы не сможете охватить каждый webserver_type2 одним regex, но поместите его на место, охватывающее соглашение об именах, которое вы используете для новых узлов).
Возвращение с решением для будущих гуглеров. Спасибо другим за вклад.
Был обсуждение здесь это привело к набор файлов, намекающих на решение.
Однако мой ограниченный опыт показывает, что это было немного устаревшим с точки зрения местоположения файлов. На клиенте нужен такой файл:
root@vbox1-test:/etc/puppet# cat custom_facts.yml
servertype: webserver-type1
На сервере (puppetmaster), если вы следуете файлам во второй предоставленной ссылке, тогда .rb работает нормально, но местоположение неверно (я использую v3.x). Попробуйте переместить его в:
ubuntu@puppetmaster:/etc/puppet/modules/custom/lib/facter$ ls custom_facts.rb
custom_facts.rb
В любом из ваших файлов .pp модуля и т. Д. Просто добавьте что-то вроде
...
notify { "My servertype is: ${servertype}" : }
...
И снова вторая ссылка намекает на тот факт, что вы можете сделать своего рода оператор «case», чтобы затем выбрать, какие модули / манифесты используются. Таким образом, я могу применить базовый набор правил к большинству машин, а затем несколько пользовательских правил для определенных типов, не касаясь манифестов сервера.
Эффект, который вы получите на клиента, будет примерно таким:
root@vbox1-test:/etc/puppet# puppet agent --test
Info: Retrieving plugin
/File[/var/lib/puppet/lib/facter]/ensure: created
/File[/var/lib/puppet/lib/facter/custom_facts.rb]/ensure: defined content as '{md5}xxxxxxxxxxxxxxxxxxxxxxx'
Info: Loading facts in /var/lib/puppet/lib/facter/custom_facts.rb
Info: Caching catalog for vbox1-test
Info: Applying configuration version '1351762428'
My servertype is: webserver-type1
/Stage[main]//Node[default]/Notify[My servertype is: webserver-type1]/message: defined 'message' as 'My servertype is: webserver-type1'
Finished catalog run in 0.05 seconds
Я довольно оптимистичен, это дает мне то, что я хочу, и я могу не содержать в манифестах имен серверов, которые являются устаревшими и постоянно растут.