在我们复杂的Puppet环境中,我们使用一个大的Puppetfile,它总是为每个模块列出其Git URL(:git
)和引用(:ref
):
(...)
mod 'foobar',
:git => 'ssh://git@bitbucket.example.com:7777/pup/puppet-foobar.git',
:ref => 'puppet-foobar-3.14'
(...)
模块版本一直在更新,因此:ref
的值经常更改。
当我们通过命令行运行Puppet代理时,有没有办法知道在该特定运行中应用了哪个:ref
?
答案 0 :(得分:2)
Puppet master在生成的每个目录中都包含一个版本号,您可以通过config_version
环境设置自定义该版本号。
当代理运行并应用目录时,会记录并显示它:
Info: Applying configuration version '1488468780'
(显示默认值,编译的Unix /纪元时间戳)
这可以是任何数据,包括时间戳,SCM修订号(例如git SHA)或更人性化的内容。
如果你有很多模块,那么最好使用Puppetfile本身的修订版,假设它在源代码控制中被跟踪。如果使用git,您可以使用git rev-parse HEAD
来获取当前版本。
在environment.conf(docs中配置config_version
参数,例如/etc/puppetlabs/code/environments/production/environment.conf
)以指向脚本:
config_version = '/usr/bin/git --git-dir $confdir/environments/$environment/.git rev-parse HEAD'
(来自R10k + Directory Environments - Gary Larizza)
R10k还有一个很好的基于git的脚本,您可能会发现它很有用:config_version.sh,其中包含最新的提交消息和SHA。