2013-07-31 38 views
1

我正在测试一种新方法来管理在puppet托管主机上使用logback的java应用程序,并且想知道是否有人对此有最佳方法提供了一些建议。我陷入了一个捉襟见肘的情况。Logback config,puppet和应用程序版本

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

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

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

任何想法是如何得到这个工作?

回答

2

我会写一个custom fact,事实是在客户端上执行。

如:

的logback /舱单/ 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”才能使其工作。

+0

谢谢,事实将完全满足我的需求。 – Brett