我正在用Puppet使用R10K。 Puppetfile基本上是DSL:
由于Puppetfile格式实际上是使用Ruby DSL实现的,因此可以使用任何有效的Rubyexpression式。
参考: https : //github.com/puppetlabs/r10k/blob/master/doc/puppetfile.mkd
所以基于此,我可以在Puppetfile编写一些Ruby代码。 我试过了,它确实有效。 但是我不知道和知道的是如何访问一些variables。
最终,我试图做这样的事情:
mod 'app', :git => 'https://github.com/apps/app.git', :branch => ${environment}
这样检出的模块分支与检出的环境相同。 显然${environment}不是正确的语法,也不是一个真正的variables名。
所以这个问题的最佳答案是如何获得环境variables,第二个最好的答案是如何引用Puppetfile的variables(以及可用的variables)。
当然,在我问这个问题10分钟后,我想出了答案(一直试图解决这个问题)…
在Puppetfile你可以访问DSL类的variables(参见GitHub中的DLS类),因此你可以访问Puppetfile类的实例Puppetfile (参见puppetfile.rb ),然后从那里访问其属性。
因此,获得当前环境名称的分支的答案是:
mod 'app', :git => 'https://github.com/apps/app.git', :branch => @librarian.basedir.split('/').last
不优雅,我希望puppetfile.rb会给我们一个直接的访问环境,但这对我puppetfile.rb 。