如何在出现错误时阻止Puppet应用配置?

时间:2015-07-20 13:18:26

标签: puppet

对于我来说,我现在正在为Puppet做一些不直观的行为 - 很可能是因为我还没有完全理解Puppet的精神。

确定我在木偶代理中运行了一个简单的puppetsimple.sh,它正在应用来自木偶大师的配置。这一切都按预期顺利进行。

不直观(对我而言)但是,当我作为设置母版的一部分,创建错误,然后在代理中运行puppetsimple.sh时,它会触发错误,通知我它,并继续应用该配置的所有其他更改。

这有效地使代理处于破坏状态,因为即使出现错误它也会向前推进。

是否有某个地方可以说"嘿,如果你发现错误,停下来,恢复你的样子,并继续你的快乐方式"?

鉴于以下示例。我故意启用一个无效的conf文件(.confX) - 我收到错误通知,但它继续填充" index.html"与#34; Hello World 3"。

define a2ensite {
        exec { 'a2ensite':
                path => [ '/bin', '/usr/bin', '/usr/sbin' ],
                command => "a2ensite ${title}",
                notify => Service['apache2'],
        }
}


class mysite {

        include apache

        file { '/etc/apache2/sites-available/mysite.example.org.conf':
                owner => root,
                group => root,
                mode => 0644,
                source => "puppet:///files/mysite/mysite_apache.conf",
                notify => Service['apache2'],
        }


        a2ensite { 'mysite.example.org.confX': }


        file { ['/home/', '/home/www/', '/home/www/mysite.example.org']:
                ensure => directory,
                owner => root,
                group => root,
                mode => 0755,
        }


        file { '/home/www/mysite.example.org/index.html':
                owner => www-data,
                group => www-data,
                mode => 755,
                content => "Hello World 3",
        }
}

1 个答案:

答案 0 :(得分:3)

如果一个reosurce失败意味着不应该修改另一个资源,那么这是一个依赖关系,您需要通过require进行建模。失败的依赖将导致puppet跳过这些资源。

但是,一般来说,木偶在遇到错误时不会停止或回滚。如果您需要回滚,那么您可以恢复到较旧的木偶配置或使用其他功能来还原节点。