2015-07-20 72 views
0

对于我来说,我目前对Puppet有些不直观的行为 - 很可能是因为我还没有完全理解Puppet的精神。如何在出现错误时停止Puppet应用配置?

好吧我有一个简单的puppetsimple.sh运行在木偶代理,这是应用puppet master配置。这一切都运行顺利,并如预期。

直观的(对我来说)然而,当我作为设立主的一部分,创建一个错误,然后在代理运行puppetsimple.sh,它会罢工的错误,通知我的话,并继续所有的应用该配置的其他更改。

这有效地使代理处于故障状态,因为即使出现错误,代理也会前进。

有没有设置的地方说:“嘿,如果你打一个错误,停止,恢复到你怎么样,并进行你的快乐的方式”?

给出下面的例子。我故意启用一个无效的conf文件(.confX) - 我收到错误通知,但它继续用“Hello World 3”填充“index.html”。

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", 
     } 
} 

回答

3

如果一个reosurce失败意味着其他资源不应该被修改,那么这就是你需要通过require模型的依赖关系。一个失败的依赖会导致傀儡跳过这些资源。

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

相关问题