我正在为木偶做一个项目,但目前只停留在一个逻辑中。
因此,想知道我们可以从puppet清单文件中的.yaml,.json或纯文本文件中获取变量。
例如,我的puppet清单想要创建用户,但变量存在于.yaml或任何配置文件中,因此需要从外部文件中获取varibale。如果.yaml文件中存在多个用户,则puppet清单也可以进行循环。
我读了关于hiera,但是让我们说我们没有使用hiera是否有任何可行的方法。
使用内置和stdlib函数的组合可以通过多种方式实现此目的,至少对于YAML和JSON。
parseyaml
或parsejson
stdlib函数:在mymodule / files / myfile.yaml创建一个文件:
▶ cat files/myfile.yaml
---
foo: bar
然后在您的清单中将其读入字符串并解析它:
$myhash = parseyaml(file('mymodule/myfile.yaml'))
notice($myhash)
这将输出:
Notice: Scope(Class[mymodule]): {foo => bar}
loadyaml
或loadjson
stdlib函数:$myhash = loadyaml('/etc/puppet/data/myfile.yaml')
notice($myhash)
这种方法的问题是你需要知道Puppet master上的文件路径。或者,您可以使用Puppet 6 deferred函数并从代理节点上的文件中读取数据。
(你是否应该这样做完全是另一回事 - 提示:答案是你几乎肯定应该使用Hiera - 但这不是你问的问题。)