我无法理解众多 Puppet 逻辑机制之一:模块故障场景。
我有多个模块在一组差异节点上执行各种操作,并且我想实现以下场景:
- 为指定节点部署所有模块
- 如果某个模块执行失败,则仅使该模块失败,但继续应用其他模块
我在我的测试模块中写了如下内容(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
(可能只是放一个info
and/ordebug
消息)。不需要明确地失败。