2013-07-31 34 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