如何从puppet资源中获取值

时间:2014-05-28 10:12:35

标签: puppet

我的木偶剧有问题。

我想在资源文件中设置一个值。我宣布像这样的资源

define checkxml(
  $account = '',
  $pwd = template('abc/abc.erb'),
){
  if(empty($pwd)){
    fail('pwd empty') 
  }
}

我通过以下方式致电:

checkxml{"$agtaccount":
  account => $agtaccount,
}

我想获得$ pwd的价值。 $ pwd将获得模板的价值。如果我尝试在我的资源定义中显示该值,那么我得到了正确的值,因此模板工作正常。

我的问题是在调用ressource后访问此值。我看到了stdlib的getparam,但对我来说并不起作用。

getparam(Checkxml["$agtaccount"],"pwd")

如果我尝试获取帐户参数而不是pwd,那就没关系。我认为因为我没有宣布我无法让他回来

我怎么能找到他?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

呃,这看起来很危险。首先,我建议避开该功能及其所体现的概念。它面临着评估顺序依赖性,这总是会导致不一致的清单行为。

至于值本身的检索 - 如果使用默认值,这可能不起作用。这是因为在目录构建级别上,如果有任何意义,则还没有绑定到参数的值。

最终参数值的分辨率相当复杂,因此有很多东西可能会出现依赖于这种内省功能的清单。

我建议在更中心的位置(取决于您的清单结构)检索所需的值,并在声明Checkxml [“$ agtaccount”]资源及其他用途时使用它(目前您正在使用它)试图提取它。)