2011-12-02 45 views
4

我們對Weblogic和Jboss服務器進行了大量Java Web應用程序部署。很多時候部署如下:從WAR/EAR中爲Puppet部署分離配置

  1. 複製的代碼和默認CONFIGS到應用服務器或WebLogic管理服務器上的一個臨時目錄。

  2. 編輯屬性文件來設置特定的環境變量(IP地址,用戶名等)

  3. 運行Ant創建耳朵/戰爭,並在相應的目錄刪除它。

  4. 開始服務

這已被證明是一個非常不友好的一系列步驟木偶使用,因爲我們的配置管理工具。我們希望一個更類似於Puppet的Package,File,Service trifecta的進程,但是在構建耳朵/戰爭之前必須配置屬性使得這很困難,因爲它需要額外的步驟來構建戰爭/耳朵主機在屬性被填充之後。

有沒有辦法建立一個與環境無關的戰爭/耳朵,並保持外部配置,刪除額外的構建步驟?

有沒有人專門與Web應用程序和Puppet合作,你有什麼建議嗎?

回答

4

我所做的與tomcat和.war webapps是建立一個系統包與解壓縮的戰爭,然後處理conf文件。我還沒有處理Weblogic或JBoss,所以我不知道它是如何處理解壓縮的WAR內容的。

1)構建一個軟件包(RPM),我做的所有的.war建築的東西,則是這樣的:

mkdir -p %{buildroot}/var/lib/tomcat5/webapps/APP 
cd %{buildroot}/var/lib/tomcat5/webapps/APP 
unzip ../APP.war 
rm ../APP.war 

(以便解壓.war文件是在包沒有實際的.war文件中有使用Tomcat它將然後獨自離開該目錄,特別是如果沒有寫權限,因爲這些文件屬於根)

2)木偶的東西有點像:

package { 
    "tomcat5": 
    require => Package["java-1.6.0-sun"], 
    ensure => installed; 
    "java-1.6.0-sun": 
    ensure => installed; 
    "APP": 
    ensure => installed, 
    notify => Service["tomcat5"], 
    require => Package["java-1.6.0-sun"]; 
} 

file { 
    "/usr/share/tomcat5/webapps/APP": 
    source => [ "puppet:///MODULE/APP" ], 
    ensure => directory, 
    ignore => [ 'CVS', '.git', '.svn', '*~' ], # ignore revision control and backup files 
    purge => false, # leaves other stuff alone 
    replace => true, # replaces stock files with ours 
    recurse => true, # gets everything recursively 
    require => Package[APP], # install package first 
    notify => Service[tomcat5]; # restart tomcat after 
} 

這個特定的軟件包在8個目錄中有32個文件,我們正在修改或推出來配置它。如果只是幾個文件,我會使用一些簡單的file{}資源來管理這些文件,而不是遞歸的東西。

如果你不想建立一個系統類型的包,你可以做的戰爭file{}資源到其他目錄,一個exec{"unzip ...": creates => '/path/to/unzipped/webapp;}並有file{}資源配置需要Exec["unzip ..."]