títere: defina el comodín en los nodos.pp


10

¿Hay alguna manera de definir hosts comodín en los nodos de puppetmaster.pp

Digamos que quiero que todos los hosts en un dominio reciban un conjunto de clases. ¿Puedo hacer algo como:

# nodes.pp
#

node basenode {
  include  admina, adminb, admic
  }


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

Respuestas:


9

No de esta manera. Puede crear un nodo 'predeterminado' que se aplicará a cualquier cliente firmado.

node "default" {
   include foo
}

Pero solo puede tener 1 predeterminado. Si desea replicar la funcionalidad que describe, puede usar el método de clasificación external_nodes. Básicamente, escribe un script que devuelve yaml válido cuando se conecta un cliente. Ese script puede hacerlo de la forma que desee, verifique fqdn, consulte un db, presione ldap, etc.


+1 De acuerdo con external_nodes
David Pashley

16

Las expresiones regulares ahora son posibles en Puppet 0.25, por lo que lo que desea sería posible:

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

3

Pocas distribuciones se envían 0.25 hasta el momento, por lo que en mi Centos5 con 2.24.8 del repositorio EPEL tuve que hacer algo así para mis nodos de trabajo con nombres de host como wn10.example.com:

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

Actualización rápida: puppet-2.6.12-1.el5.noarch ahora está disponible desde EPEL (admite expresiones regulares en nombres de nodo).
plasmid87 12/12/11
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.