如何访问Puppetfile中的环境名称

ETL*_*ETL 4 puppet

我正在使用 R10K 和 Puppet。基本上是PuppetfileDSL:

因为 Puppetfile 格式实际上是使用 Ruby DSL 实现的,所以可以使用任何有效的 Ruby 表达式。

参考: https: //github.com/puppetlabs/r10k/blob/master/doc/puppetfile.mkd

因此,基于此,我可以在Puppetfile. 我尝试过并且确实有效。但我没有找到也不知道如何访问某些变量。

最终,我正在尝试做这样的事情:

mod 'app',
  :git    => 'https://github.com/apps/app.git',
  :branch => ${environment}
Run Code Online (Sandbox Code Playgroud)

这样签出的模块分支与其签出的环境相同。显然${environment}lt 不是正确的语法,也不是真正的变量名称。

因此,这个问题的最佳答案是如何获取环境变量,第二个最佳答案是如何在Puppetfile.

ETL*_*ETL 5

当然,在我提出问题 10 分钟后,我就找到了答案(几个小时以来一直试图解决这个问题)......

在 中,Puppetfile您可以访问该类的变量DSL(请参阅GitHub 中的 DSL 类。因此,您可以访问@librarian该类的实例Puppetfile(请参阅puppetfile.rb)。从那里,您可以访问其属性。

所以获取当前环境名称的分支的答案是:

mod 'app',
  :git    => 'https://github.com/apps/app.git',
  :branch => @librarian.basedir.split('/').last
Run Code Online (Sandbox Code Playgroud)

不优雅,我希望它puppetfile.rb能让我们直接进入环境,但这对我有用。