从Puppetfile

时间:2017-03-02 15:08:29

标签: puppet

在我们复杂的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

1 个答案:

答案 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。