Puppet 需要忽略错误并继续执行傀儡配方,如;忽略“U故障”;主厨

Puppet 需要忽略错误并继续执行傀儡配方,如;忽略“U故障”;主厨,puppet,devops,Puppet,Devops,我陷入了需要忽略错误并继续执行木偶配方的情况 Chef中是否有类似“忽略失败”的属性,以便我可以从下面的情况中克服。如果没有,请建议同样的工作 步骤1:在/tmp目录中查找for.txt文件并从/tmp目录中删除 步骤2:执行步骤1[退出代码0或1]后,我必须创建文件,以当前时间打印 问题::如果.txt文件不在/tmp目录中,我将收到错误消息,步骤2无法执行 傀儡主人的一份清单: Exec ['delete_str_tmp'] -> File [ '/info.txt' ] e

我陷入了需要忽略错误并继续执行木偶配方的情况

Chef中是否有类似“忽略失败”的属性,以便我可以从下面的情况中克服。如果没有,请建议同样的工作

步骤1:在/tmp目录中查找for.txt文件并从/tmp目录中删除

步骤2:执行步骤1[退出代码0或1]后,我必须创建文件,以当前时间打印

问题::如果.txt文件不在/tmp目录中,我将收到错误消息,步骤2无法执行

傀儡主人的一份清单:

Exec ['delete_str_tmp'] -> File [ '/info.txt' ]

    exec { 'delete_str_tmp':
            path      => [ '/bin/', '/sbin/' , '/usr/bin/', '/usr/sbin/' ],
            command   => "find /tmp/ -name '*.txt' -type f | xargs -n 1 rm",
    }

    file { '/info.txt' :
            ensure => 'present',
            content => inline_template("Created by Puppet at <%= Time.now %>\n")
    }
> Notice:
> /Stage[main]/Main/Node[app1-server]/Exec[delete_str_tmp]/returns: rm:
> missing operand Notice:
> /Stage[main]/Main/Node[app1-server]/Exec[delete_str_tmp]/returns: Try
> 'rm --help' for more information. Error: find /tmp/ -name '.txt' -type
> f | xargs -n 1 rm && true returned 123 instead of one of [0] Error:
> /Stage[main]/Main/Node[app1-server]/Exec[delete_str_tmp]/returns:
> change from notrun to 0 failed: find /tmp/ -name '.txt' -type f |
> xargs -n 1 rm && true returned 123 instead of one of [0] Notice:
> /Stage[main]/Main/Node[app1-server]/File[/info.txt]: **Dependency
> Exec[delete_str_tmp] has failures: true Warning:**
> /Stage[main]/Main/Node[app1-server]/File[/info.txt]: **Skipping
> because of failed dependencies**

对于您的特定情况,请使用资源而不是
Exec
来执行清理:

tidy { 'delete_str_tmp':
  path => '/tmp',
  matches => '*.txt'
}
(默认情况下,tidy不会删除目录。)

更一般地说,通过链式操作符将资源关系指定给Puppet,表示只有在独立资源同步时,从属资源才能正确同步。排序由此而来,但如果Puppet未能同步独立资源,则不会尝试同步依赖资源,这一事实也是如此

特别是对于
Exec
s,您必须确保Puppet将正确地将退出状态映射为成功或失败。您可以通过仔细选择命令或使用
returns
参数来执行此操作。对于这种情况,我认为前者更合适,因为它不依赖于您预测所有可能的退出状态。你可以这样做:

exec { 'delete_str_tmp':
  path    => [ '/bin/', '/sbin/' , '/usr/bin/', '/usr/sbin/' ],
  command => "find /tmp/ -name '*.txt' -type f | xargs -n 1 rm || :",
}

是一个标准的内置shell,它不执行任何操作并返回成功代码。因此,将“| |::”添加到命令末尾是确保整个命令始终成功的标准shell技巧。

说“您可以设置
返回到成功时预期的退出代码集”。谢谢您,Jerry,我已在exec资源中设置了成功时预期的退出代码。由此,我可以忽略错误并继续执行Puppet Recipe。Exec['delete_str_tmp']->File['/info.txt']Exec{'delete_str_tmp':path=>['/bin/'、'/sbin/'、'/usr/bin/'、'/usr/sbin/'],command=>“find/tmp/-name'*.txt'-type f | xargs-n 1 rm”,返回=>[123]}文件{'/info.txt':sure=>'present',content=>inline_template(“由Puppet at\n创建”)}@PeterSouter,您是否有理由编辑我的完美链接到另一个链接(尽管也很好)链接?啊,对不起,是的,我只是不想在企业文档和开源文档之间造成混淆,尽管对于Puppet来说,它们在Puppet>4:)@PeterSouter中是相同的,这一切都是可以原谅的,但这更适合作为一个评论。