Puppet 伪异常处理?

Puppet 伪异常处理?,puppet,Puppet,我想知道如何在傀儡清单中进行try/catch/throw类型异常处理。下面是我希望木偶能工作的方式 class simple { unless ( package { 'simple': ensure => present } ) { file { '/tmp/simple.txt': content => template( 'simple/simple.erb' ), } } } 谢谢我认为在Pupp

我想知道如何在傀儡清单中进行try/catch/throw类型异常处理。下面是我希望木偶能工作的方式

class simple {
    unless ( package { 'simple': ensure => present } ) {
        file { '/tmp/simple.txt':
            content => template( 'simple/simple.erb' ), 
        }
    }
} 

谢谢

我认为在Puppet中没有您想要的编程方式的异常处理。如果您声明了一个资源,那么puppet会将您的机器带到该状态(已安装的包),如果不是,它将自动失败。 有一件事你可以做(我不推荐),那不是“傀儡方式”,那就是:

  • 创建自定义factor(不是自定义函数,因为它是在puppet master上执行的,并且您希望此ruby代码在puppet代理上执行)
  • 因为它是纯ruby代码,所以可以进行异常处理和所有编程操作。您可以从puppet代码中以unix命令的形式安装该包,并具有一些逻辑,如果未安装,这些逻辑将检索一些值作为事实
  • 您将使用这个事实值,并根据它确定是否要创建文件
  • 此外,如果更简单,您可以编写bash脚本来执行此逻辑,并使用exec资源从puppet执行它


    希望有帮助。

    如果我错了,请纠正我。您只想在包存在时创建文件。在这种情况下,您可以使用
    exec
    创建一个文件并指定
    ,除非那里有
    参数。嗨,谢谢你的评论。如果包资源由于任何原因失败,我想执行一个puppet块。