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

puppet - определить хост с подстановочными знаками в nodes.pp

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

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

# nodes.pp
#

node basenode {
  include  admina, adminb, admic
  }


node "*.acme.com" {
    include adminc
    }

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

node /^(foo|bar)\.example\.com$/ {
include blah
}

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

node "default" {
   include foo
}

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

На данный момент немного дистрибутивов поставляются с версией 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}
    }
}