如何在失败时让Puppet exec清理目录?

时间:2015-01-12 01:22:27

标签: puppet

如果另一个exec失败,我试图找到运行exec的方法(因此我可以清理第一个exec创建的目录)。

我的情景是:

  1. exec创建了一个目录,但没有完全完成设置(网络错误失败)。
  2. exec使用creates => $target_dir参数,因此后续运行不会再次尝试设置文件夹。
  3. 失败后再次应用Puppet清单,并跳过exec
  4. 如果之前的file失败,我想删除目录(可能使用exec类型)。我知道这与http://ask.puppetlabs.com/question/14726/run-exec-only-if-another-exec-ran/run Exec only if another Exec ran类似。但我只想在失败时通知(可能退出0以外)。

    我有什么想法可以做到这一点?

2 个答案:

答案 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

相关问题