Как поддержать site.pp со многими узлами?

Можно сделать это с mod_rewrite:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domainname.com$ [NC]
RewriteRule ^(.*)$ http://domainname.com/$1 [R=301,L]

Перед использованием его удостоверьтесь, что Вы включили mod_rewrite сначала.

3
задан 17 March 2013 в 13:33
2 ответа

У меня есть site.pp , который выглядит так:

import "nodes/*.pp"

и имеет каталог nodes / в manifestests /

. Итак, у меня есть набор узлов на "рабочих станциях. pp " " webservers.pp " и так далее ..

7
ответ дан 3 December 2019 в 04:46

Определите свои узлы вне манифестов. Я бы порекомендовал преемника extlookup, Hiera, но на самом деле любого внешнего классификатора узлов будет достаточно, чтобы вывести данные вашего узла из манифестов.

Это рекомендуемый способ обработки определений узлов в наши дни - из документации :

Большинству пользователей в большинстве ситуаций следует использовать объявления, подобные include, и устанавливать значения параметров во внешних данных. Однако совместимость с более ранними версиями Puppet может потребовать компромиссов.


Hiera включен в Puppet 3.0 - его необходимо устанавливать отдельно в более старых версиях. Чтобы настроить Hiera для обработки определений ваших узлов, вам нужно сделать что-то вроде этих строк:

site.pp (все это):

hiera_include(classes)

hiera.yaml:

:backends:
  - yaml

:hierarchy:
  - %{clientcert}
  - os-%{osfamily}
  - common

:yaml:
   :datadir: /etc/puppet/hieradata
   # A good alternative if you want different node data based on environments:
   #:datadir: /etc/puppet/environments/%{environment}/hieradata

:puppet:
   :datasource: data

Теперь Puppet будет искать в / etc / puppet / hieradata для получения данных о ваших узлах. Допустим, у вас есть класс ntp , который вам нужен для всего, и класс apache , который вам нужен только на одном конкретном узле:

/etc/puppet/hieradata/common.yaml:

classes:
  - ntp

/etc/puppet/hieradata/nodename.example.com.yaml:

classes:
  - apache

Этот массив является агрегированным - узел nodename.example.com получит оба класса ntp из общего файла и класса apache из его собственного файла.

Hiera также обрабатывает параметры вашего класса за вас. Допустим, у вас есть класс apache , ожидающий параметра порта :

class apache ( $port ) {
  ...

Вы также можете установить его в файлах данных Hiera. Если вы хотите, чтобы по умолчанию использовался порт 80 ..

/etc/puppet/hieradata/common.yaml:

classes:
  - ntp

apache::port: 80

Но вы хотите переопределить это для nodename.example.com , установив его на 8080:

/etc/puppet/hieradata/nodename.example.com.

5
ответ дан 3 December 2019 в 04:46

Теги

Похожие вопросы