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
    }
lepole
fuente

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.

Palo
fuente
+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
}
Pheezy
fuente
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}
    }
}

fuente
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