Puppet 傀儡资源能否引用它自己的属性之一?

Puppet 傀儡资源能否引用它自己的属性之一?,puppet,Puppet,我有一个Exec资源,它用一些特定的标志/参数启动一个进程。如果确切的进程已经在运行,我不希望它运行。我想我可以引用资源自己的$command属性。但是,这真的不起作用是否有方法引用当前资源? exec { 'foo': command => 'foo --bar baz', unless => "pgrep -f '${command}'", } 不,没有 您可以(也应该)通过将exec包装到定义的类型中来解决这个问题 define safe_exec($command

我有一个
Exec
资源,它用一些特定的标志/参数启动一个进程。如果确切的进程已经在运行,我不希望它运行。我想我可以引用资源自己的
$command
属性。但是,这真的不起作用是否有方法引用当前资源?

exec { 'foo':
  command => 'foo --bar baz',
  unless  => "pgrep -f '${command}'",
}
不,没有

您可以(也应该)通过将
exec
包装到定义的类型中来解决这个问题

define safe_exec($command=$name, $parameters = "") {
    exec {
        "$command $parameters":
            unless => "pgrep -f '$command'",
    }
}

资源似乎没有任何方法可以引用自己的属性。您至少可以将命令提取到适当范围内的变量

$foo_bar = 'foo --bar baz'

exec { 'foo':
  command => $foo_bar,
  unless  => "pgrep -f '${foo_bar}'",
}
你为什么说“应该”?样式指南或最佳实践中有什么内容吗?没有,但这是用于将值分配给多个新资源或同一资源的多个属性值的语言构造。