O Puppet 4 não suporta a herança de nós , mas você reescreve seu código usando classes "traits" (ou usando diretamente class{'something':}
). Seu exemplo poderia ser reescrito em:
class base_node {
include ssh
include ntp
ruby::install { "1.2.3-456": }
nagios { "1.2.3-456": }
}
node /^server\d+/ {
require base_node
}
Mais solução sofisticada pode usar seu módulo personalizado, nada complicado apenas modules/base/manifests/linux.pp
:
class base::linux {
...
}
Regras ainda mais complexas podem ser criadas usando o Hiera, onde a definição do nó é muito simples:
node /^server\d+/ {
hiera_include('classes')
}
e o restante da lógica está na hierarquia YAML:
# common.yaml
---
classes:
- ntp
# Debian.yaml
---
classes:
- base::linux
- localrepos::apt
assumindo alguma hierarquia em hiera.yaml
:
:hierarchy:
- "%{::fqdn}"
- "%{::osfamily}"
- common