маріонетковий - визначте хост підстановки в nodes.pp


10

Чи є спосіб визначити хостів підстановки у node.pp лялькового майстра

скажіть, я хочу, щоб усі хости в одному домені отримували набір класів, чи можу я зробити щось на кшталт:

# nodes.pp
#

node basenode {
  include  admina, adminb, admic
  }


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

Відповіді:


9

Не таким чином. Ви можете створити вузол "за замовчуванням", який застосовуватиметься до будь-якого підписаного клієнта.

node "default" {
   include foo
}

Але ти можеш мати лише 1 за замовчуванням. Якщо ви хочете скопіювати описану вами функціональність, ви можете скористатися методом external_nodes класифікації. В основному ви пишете сценарій, який повертає дійсний yaml, коли клієнт підключається. Цей сценарій може робити це будь-де, як вам завгодно, перевірити fqdn, запит на db, натисніть ldap тощо.


+1 Домовтеся з external_nodes
Девід Пашлі

16

Регулярні вирази тепер можливі в Ляльковій 0,25, тому те, що ви хочете, було б можливим:

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

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 (підтримує регулярні вирази у назвах вузлів).
plazmid87
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.