marionetka - zdefiniuj host wieloznaczny w nodes.pp


10

Czy istnieje sposób na zdefiniowanie hostów wieloznacznych w nodes.pp puppetmaster?

powiedz, że chcę, aby wszystkie hosty w jednej domenie otrzymały zestaw klas, czy mogę zrobić coś takiego:

# nodes.pp
#

node basenode {
  include  admina, adminb, admic
  }


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

Odpowiedzi:


9

Nie w ten sposób. Możesz utworzyć „domyślny” węzeł, który będzie stosowany do każdego podpisanego klienta.

node "default" {
   include foo
}

Ale możesz mieć tylko 1 wartość domyślną. Jeśli chcesz powielić opisaną funkcjonalność, możesz użyć metody klasyfikacji external_nodes. Zasadniczo piszesz skrypt, który zwraca prawidłowy yaml, gdy klient się łączy. Ten skrypt może to zrobić w dowolny sposób, sprawdzić fqdn, wykonać zapytanie do bazy danych, nacisnąć ldap itp.


+1 Zgadzam się z external_nodes
David Pashley

16

Wyrażenia regularne są teraz możliwe w Puppet 0.25, więc to, czego chcesz, byłoby możliwe:

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

3

Jak dotąd niewiele dystrybucji zawiera 0,25, więc w moim Centos5 z wersją 2.24.8 z repozytorium EPEL musiałem zrobić coś takiego dla moich węzłów roboczych z nazwami hostów takimi jak wn10.example.com:

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

Szybka aktualizacja - puppet-2.6.12-1.el5.noarch jest teraz dostępny w EPEL (obsługuje wyrażenia regularne w nazwach węzłów).
plazmid87,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.