如何在 Puppetfile 中访问环境名称

如何在 Puppetfile 中访问环境名称

我正在使用 R10K 和 Puppet。它Puppetfile基本上是 DSL:

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

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

因此,基于此,我可以在 中编写一些 Ruby 代码Puppetfile。我试过了,确实有效。但我没有找到也不知道如何访问一些变量。

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

mod 'app',
  :git    => 'https://github.com/apps/app.git',
  :branch => ${environment}

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

因此,这个问题的最佳答案是如何获取环境变量,第二最佳答案是如何在中引用变量(以及有哪些可用的变量)Puppetfile

答案1

当然,我问了这个问题 10 分钟后就找到了答案(我已经尝试解决这个问题好几个小时了)......

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

因此获取当前环境名称的分支的答案是:

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

不太优雅,我希望它puppetfile.rb能让我们直接访问环境,但这对我来说有用。

相关内容