Estou com dificuldades para entender um dos muitos mecanismos de lógica do Puppet: o cenário de falha de módulo.
Eu tenho vários módulos fazendo várias coisas em um conjunto de nós de diferenças e quero implementar o seguinte cenário:
- implemente todos os módulos para nós especificados
- se a execução de um módulo falhar, apenas falhe este módulo, mas continue aplicando outros módulos
Eu escrevi algo ao longo destas linhas no meu módulo de teste ( yum
):
init.pp
:
class yum {
case $operatingsystem {
/(RedHat|CentOS)/ : { include yum:config }
default: { include yum:fail }
}
}
class yum::config {
debug("[${fqdn}] Deploying yum.conf file")
#DEPLOY YUM.CONF CODE
}
class yum:fail {
fail("[${fqdn}] This module is only for RedHat or CentOS")
}
E no meu site.pp
manifest:
node 'redhat', 'centos', 'debian' {
include yum
include motd
}
O problema é que, se o caso operatingsystem
não for satisfeito por um determinado nó ( debian
nesta instância), ele falhará em todos os módulos consecutivos ( motd
NÃO será aplicado).
Então a questão é: o que estou fazendo errado neste caso?
PS: Tenha em mente que ainda estou no processo de aprender as melhores práticas do Puppet e, como tal, não estou fingindo que meu código é impecável.