Есть ли способ определить хосты с подстановочными знаками в узлах 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}
}
}