对于我来说,我现在正在为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",
}
}
答案 0 :(得分:3)
如果一个reosurce失败意味着不应该修改另一个资源,那么这是一个依赖关系,您需要通过require
进行建模。失败的依赖将导致puppet跳过这些资源。
但是,一般来说,木偶在遇到错误时不会停止或回滚。如果您需要回滚,那么您可以恢复到较旧的木偶配置或使用其他功能来还原节点。