我正在使用 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
能让我们直接访问环境,但这对我来说有用。