木偶异常处理?

Puppet exception handling?

我想知道如何在人偶清单中进行 try/catch/throw 类型的异常处理。这就是我希望木偶的工作方式......

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

谢谢

我认为 Puppet 中没有您希望以编程方式进行的异常处理。如果你声明了一个资源,那么 Puppet 会把你的机器带到那个状态(已安装的包),如果没有,它会自动失败。 您可以做的一件事(我不推荐)但不是 "puppet way" 如下:

  1. 创建自定义因子(不是自定义函数,因为它是在 puppet master 上执行的,并且您希望此 ruby 代码在 puppet agent 上执行)
  2. 因为它实际上是纯 ruby 代码,所以您可以进行异常处理和所有程序化的事情。您可以从 puppet 代码将包安装为 unix 命令,并有一些逻辑,如果没有安装,它将检索一些值作为 fact
  3. 您将使用此事实值并根据它确定是否要创建文件

此外,如果更简单,您可以编写 bash 脚本来执行此逻辑并使用 exec 资源从 puppet 执行它

希望对您有所帮助。