puppet - определить подстановочный хост в node.pp

10

Есть ли способ определить узлы подстановки в узлах puppetmaster´s?

скажем, я хочу, чтобы все хосты в одном домене получали набор классов, могу ли я сделать что-то вроде:

# nodes.pp
#

node basenode {
  include  admina, adminb, admic
  }


node "*.acme.com" {
    include adminc
    }
lepole
источник

Ответы:

9

Не таким образом. Вы можете создать узел по умолчанию, который будет применяться к любому подписанному клиенту.

node "default" {
   include foo
}

Но вы можете иметь только 1 по умолчанию. Если вы хотите повторить описанную вами функциональность, вы можете использовать метод классификации external_nodes. В основном вы пишете скрипт, который возвращает действительный yaml при подключении клиента. Этот скрипт может сделать это в любом случае, проверить fqdn, запросить базу данных, нажать ldap и т. Д.

Придерживаться
источник
+1 Согласен с external_nodes
Дэвид Пашли
16

Регулярные выражения теперь возможны в Puppet 0.25, поэтому то, что вы хотите, было бы возможно:

node /^(foo|bar)\.example\.com$/ {
include blah
}
Pheezy
источник
3

Пока мало дистрибутивов выпускает 0.25, поэтому в моем Centos5 с 2.24.8 из репозитория EPEL мне пришлось сделать что-то подобное для моих рабочих узлов с именами хостов, такими как wn10.example.com:

node  default {
    $node_type = regsubst($hostname, '^([a-z]+).*$', '\1')
    case $node_type{
        wn: {include worker_node}
        default: {include generic_node}
    }
}

источник
Быстрое обновление - puppet-2.6.12-1.el5.noarch теперь доступен в EPEL (поддерживает регулярные выражения в именах узлов).
plasmid87