puppet - 在Puppet中,如何访问已定义类型内的变量/属性?

标签 puppet

我想在已定义类型的实例中引用变量。例如,如何在栏$x中引用foo $yab

 define foo($x, $y) {
  }

  define bar($foo) {
          notify { "${::$foo::x}": } # <- how to make this reference work?
  }

  foo { 'a':
          x => 'oh bar may you reference me',
          y => 'please'
  }

  bar { 'b':
          foo     => Foo['a'],
          require => Foo['a']
  }

我之所以想这样做,是因为foo实例可能包含许多我不想对可能需要它们的每个资源重复的值。与其一遍又一遍地传递这些值,而不是重复我自己,我宁愿将引用传递给它们的容器。

我一直到处寻找并尝试了很多方法,但似乎无法在任何地方找到该问题的答案。我知道可以修改属性,引用资源并读取类属性,但是可以读取资源/定义类型的属性吗?如果不是,那么最好的解决方法是什么?

最佳答案

我实际上刚刚发现Puppetlab's stdlib module包含可用于解决此问题的getparam function

所以这终于是我自己的问题的解决方案:

define foo($x, $y) {
}

define bar($foo) {
  notify { getparam(Foo[$foo], 'x'): }
  notify { getparam(Foo[$foo], 'y'): }
}

foo { 'a':
  x => 'oh bar may you reference me',
  y => 'please'
}

bar { 'b':
  foo  => 'a'
}

请注意,似乎不需要require => Foo['a']中的Bar['b']

关于puppet - 在Puppet中,如何访问已定义类型内的变量/属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19013084/

相关文章:

xml - 如何使用 Augeas 更新现有的或创建新的 XML 节点

ruby - 如何使用 Puppet Ruby DSL 定义类继承

ruby - 使用 Ruby 解析和编写 Puppet 节点定义

upgrade - Facts.d - 在 puppet 运行期间无法检索 Pluginfacts

ruby - puppet --version 因 ruby​​ 问题而失败

arrays - 在 Puppet 中循环数组

linux - Puppet 分阶段重启

regex - 在 Perl 中将一个正则表达式与另一个正则表达式进行匹配

rspec - 在参数化 puppet 模块中 rspec 测试子类的最佳方法是什么

yaml - puppet 中 hiera 的嵌套 YAML