Puppet - 如果模块失败,不要停止清单执行

Puppet - 如果模块失败,不要停止清单执行

我无法理解众多 Puppet 逻辑机制之一:模块故障场景。

我有多个模块在一组差异节点上执行各种操作,并且我想实现以下场景:

  1. 为指定节点部署所有模块
  2. 如果某个模块执行失败,则仅使该模块失败,但继续应用其他模块

我在我的测试模块中写了如下内容(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")
}

在我的site.pp清单中:

node 'redhat', 'centos', 'debian' {
    include yum
    include motd
}

问题是,如果operatingsystem给定节点不满足情况(debian在本例中),它将使所有连续的模块失败(motd将不被应用)。

所以问题是:在这种情况下我做错了什么?

附言:请记住,我仍在学习 Puppet 最佳实践,因此,我并不假装我的代码是完美无缺的。

答案1

我真傻。考虑到我的模块结构,似乎确实如此,一旦我们进入子类,我什么都不用做yum::fail(可能只是放一个infoand/ordebug消息)。不需要明确地失败。

相关内容