如果另一个exec
失败,我试图找到运行exec
的方法(因此我可以清理第一个exec创建的目录)。
我的情景是:
exec
创建了一个目录,但没有完全完成设置(网络错误失败)。exec
使用creates => $target_dir
参数,因此后续运行不会再次尝试设置文件夹。exec
。如果之前的file
失败,我想删除目录(可能使用exec
类型)。我知道这与http://ask.puppetlabs.com/question/14726/run-exec-only-if-another-exec-ran/和run Exec only if another Exec ran类似。但我只想在失败时通知(可能退出0以外)。
我有什么想法可以做到这一点?
答案 0 :(得分:1)
你在exec中可以轻松做的是:
Exec { 'exec_name':
cmd => "${some_command} || rm -rf ${directory}",
creates => $directory,
}
其中$ {some_command}是你的实际命令。
答案 1 :(得分:-2)
我不相信您可以从exec
调用中捕获退出代码,但您可以使用测试来查看是否成功运行第一个exec创建的预期目录或文件。< / p>
例如,
exec { 'first-exec':
cmd => 'foo',
creates => '/var/www/foo/bar',
path => '/var/www/foo',
} -> exec { 'second-exec':
cmd => 'rm -rf /var/www/foo',
unless => 'test -d /var/www/foo/bar',
}
这会运行first-exec
,除非/var/www/foo/bar
存在,否则会运行second-exec
。