如何从puppet资源中获取值

如何从puppet资源中获取值,puppet,Puppet,我的木偶剧本有问题 我想在我的资源文件中设置一个值。我声明这样的资源 define checkxml( $account = '', $pwd = template('abc/abc.erb'), ){ if(empty($pwd)){ fail('pwd empty') } } 我称之为: checkxml{"$agtaccount": account => $agtaccount, } 我想得到$pwd的价值。$pwd将按模板获得值。如果我尝试在我的资

我的木偶剧本有问题

我想在我的资源文件中设置一个值。我声明这样的资源

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

checkxml{"$agtaccount":
  account => $agtaccount,
}
我想得到$pwd的价值。$pwd将按模板获得值。如果我尝试在我的资源定义中显示该值,那么就可以得到正确的值,这样模板就可以正常工作

我的问题是在调用ressource后获取访问该值的权限。我看到了的getparam,但对我不起作用

getparam(Checkxml["$agtaccount"],"pwd")
如果我尝试获取帐户参数而不是pwd,那么就可以了。我想既然我没有申报pwd,我就不能让他回来

我怎么才能找到他


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

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

最终参数值的解析相当复杂,因此依赖于这种内省功能的清单可能会出现很多问题


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

谢谢您的回答。$agtaccount包含我的用户名。我的目标是获取与此帐户关联的密码。密码保存在xml文件中。My Template,在调用资源时返回$account变量中指定帐户的密码。因此,在调用模板之前无法检索密码,并且我不想手动设置密码。如果我必须只得到一次,那就很好了(使用类,然后访问变量),但是这里的主要问题是我有很多帐户,所以很多密码要返回。你应该考虑把数据存储在Hiera而不是外部XML源。用XML代替hiera会更好,因为在我的例子中,这些数据被其他程序和脚本使用,我需要它们可用。我继续尝试木偶,也许我会找到一种方法。再次感谢您的帮助:)您可以从Puppet生成XML并部署它供其他组件使用。最后,拥有一个无歧义的数据源非常重要。