Назад | Перейти на главную страницу

Измените puppet nodes.pp с помощью регулярного выражения на основе покрытия сетевой (фактической) подсети - требуется экспертная оценка

Для марионеточных экспертов я пытаюсь изменить свой node.pp на базе фактерской сети.
Например, я хотел бы иметь подсети с 10.10.10.0 по 10.10.10.255 и 192.168.2.0 для получения следующих марионеточных модулей.

В моем nodes.pp это регулярное выражение работает?

node \d(10).(10).[0-10].[0-255] | \d (192).(168).(2).[0] $ { 
  include "ntp" 
  include "dhcp" 
  include "common" 
} 

node default { 
  include "common" 
}

^ будет работать выше? Спасибо

Это не будет работать, как показано. Во-первых, регулярное выражение не годится, но и сопоставители узлов основаны на certname, которое является полным доменным именем хоста. Это не значит, что вы не можете этого сделать, но для этого потребуется дополнительная работа и вам потребуется войти в область неподдерживаемой конфигурации. Так что, по сути, вы сами по себе. Вот что говорится в документации Puppet:

Операторы узлов соответствуют узлам по имени. Имя узла - это его уникальный идентификатор; по умолчанию это его certname , которая, в свою очередь, по умолчанию соответствует полному доменному имени узла.

Примечание об именах узлов без сертификата

Хотя можно установить что-нибудь кроме certname в качестве имени узла (используя либо node_name_fact или node_name_value настройки), мы обычно не рекомендуем это делать. Он позволяет повторно использовать сертификат одного узла для многих узлов, но снижает безопасность, затрудняет надежную идентификацию узлов и может мешать работе других функций.

Установка имени узла без сертификата официально не поддерживается в Puppet Enterprise.

Версия Puppet не указана, поэтому мой ответ основан на последней версии (5.3) на момент написания.

Вместо этого почему бы вам не использовать определение узла по умолчанию и не объединить его с логикой на основе значения $::network?

node default {
  case $::network {
    /^(10\.10\.[0-10]\.[0-255]|192\.168\.2\.0)$/ : {
      include ntp
      include dhcp
      include common
    }
    default: { include common }
  }
}

Это было проверено путем изменения включений на уведомления и изменения сети на $ var и тестирования различных значений.

[aaron@localhost ~]$ cat network.pp 
#$var='10.10.1.5'
$var='192.168.2.1'
case $var {
  /^(10\.10\.[0-10]\.[0-255]|192\.168\.2\.0)$/ : {
    notice('match')
  }
  default: { notice('default') }
}
[aaron@localhost ~]$ puppet apply network.pp
Notice: Scope(Class[main]): default
Notice: Compiled catalog for localhost.local in environment production 
in 0.21 seconds
Notice: Applied catalog in 0.01 seconds

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