1

我正忙于测试一种新方法来管理在 puppet 托管主机上使用 logback 的 java 应用程序,并且想知道是否有人对此最佳方法有一些建议。我陷入了第 22 条问题。

Java 应用程序由自动化系统 (CI) 部署到主机。部署将应用程序版本号写入文件(例如 /etc/app.version 可能包含“0001”)

logback 配置文件 (logback.xml) 由 puppet 管理。

我正在尝试将应用程序配置为在日志记录布局中包含它的版本号(例如<pattern>VERSION: %version%</pattern>。但是,我不确定该方法,因为 logback 配置文件没有“包含”功能(包含一个文件将版本号添加到 logback 配置中。同时,我没有看到让 puppet 使用主机端文件进行客户端模板构建的方法(我尝试过使用模板方法,但是模板在 puppet 服务器端编译)。

关于如何使它工作的任何想法?

4

1 回答 1

2

我会写一个自定义事实。事实在客户端上执行。

例如:

logback/manifests/init.pp

file { '/etc/logback.xml':
  content => template('logback/logback.xml.erb')
}

logback/模板/logback.xml.erb

...
<pattern>VERSION: <%= scope.lookupvar('::my_app_version') %></pattern>
...

logback/lib/facter/my_app_version.rb

Facter.add('my_app_version') do
  setcode do
    begin
       File.read('/etc/app.version')
    rescue
       nil
    end
  end
end

希望有帮助。我认为在 Puppet < 3.0 中,您必须在 puppet.conf 中设置“pluginsync = true”才能使其正常工作。

于 2013-08-02T01:56:44.947 回答