在puppet清单中从yaml获取变量

问题描述 投票:1回答:1

我正在为木偶做一个项目,但目前只停留在一个逻辑中。

因此,想知道我们可以从puppet清单文件中的.yaml,.json或纯文本文件中获取变量。

例如,我的puppet清单想要创建用户,但变量存在于.yaml或任何配置文件中,因此需要从外部文件中获取varibale。如果.yaml文件中存在多个用户,则puppet清单也可以进行循环。

我读了关于hiera,但是让我们说我们没有使用hiera是否有任何可行的方法。

yaml puppet manifest puppet-enterprise
1个回答
3
投票

使用内置和stdlib函数的组合可以通过多种方式实现此目的,至少对于YAML和JSON。

  • 使用内置的file函数和parseyamlparsejson 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}
  • 或者,使用loadyamlloadjson stdlib函数:
$myhash = loadyaml('/etc/puppet/data/myfile.yaml')
notice($myhash)

这种方法的问题是你需要知道Puppet master上的文件路径。或者,您可以使用Puppet 6 deferred函数并从代理节点上的文件中读取数据。

(你是否应该这样做完全是另一回事 - 提示:答案是你几乎肯定应该使用Hiera - 但这不是你问的问题。)

© www.soinside.com 2019 - 2024. All rights reserved.