我在理解许多Puppet逻辑机制之一时遇到了一些麻烦:模块失败的情况。
我有多个模块在一组差异节点上做各种事情,我想实现以下场景:
我在testing模块( yum )中写了一些这样的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不会被应用)。
所以问题是:在这种情况下,我做错了什么?
PS:请记住,我仍然在学习Puppet最佳实践,因此,我不会假装我的代码是一尘不染。
傻我。 看来的确如此,考虑到我的模块结构,只要我们在子类yum::fail (也许只是放一个info和/或debug信息),我就不必做任何事情。 没有必要明确地失败。