Existe uma maneira de obter as classes de nível superior incluídas em um nó de marionete?

3

Existe uma maneira fácil de retornar as classes de nível superior aplicadas a um nó. Com isso quero dizer as classes incluídas em uma definição de nó ou equivalente ENC Por exemplo, com o nó de amostra abaixo, gostaria de retornar 'return :: me' e 'return :: me2' para somehost, mas não 'dontreturn :: eu '

class return::me {
   include dontreturn::me
}
node "somehost" {
   include return::me
   include return::me2
}

Vejo que /var/lib/puppet/state/classes.txt inclui a lista completa de classes aplicadas ao nó, mas isso inclui quaisquer classes adicionais incluídas nas classes de nível superior.

Existe alguma maneira de obter esses dados com um comando de fantoches? Eu suspeito que 'nodos de marionetes' podem ser úteis, mas eu não consegui recuperar o que eu faço.

    
por pwan 05.07.2012 / 22:40

2 respostas

2

file { '/var/lib/puppet/state/classes.txt':
  content => inline_template("<%= Puppet::Node.indirection.find(fqdn).classes.join('\n') + '\n' %>"),
}

Funciona pelo menos com o recente 2.6.xe com o 2.7.x (não tentou versões anteriores).

Considerando que isso usa APIs Puppet internas, não posso garantir a longevidade desse truque. Infelizmente não há nada melhor mesmo.

Nós costumávamos ter um truque de fantoche 2.6 usando Puppet::Node.find(fqdn).classes , mas ele quebrou com 2,7.

    
por 06.07.2012 / 01:36
1

Eu finalmente consegui 'nó de marionete' para trabalhar. O comando abaixo está funcionando quando executado na máquina 'myhost'. Parece que isso funciona para os nós definidos com um bloco 'node', bem como as definições vindas do ENC.

puppet node find 'myhost' --render-as yaml --terminus rest | grep " - "
    
por 06.07.2012 / 20:41

Tags