我所做的與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 ..."]
。