То, что я сделал с 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 он тогда оставит этот каталог в покое, особенно если он не 'у него нет прав на запись, потому что файлы принадлежат пользователю root)
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
}
Этот конкретный пакет содержит 32 файла в 8 каталогах, которые мы модифицируем или выталкиваемнастроить это.Если бы это было всего несколько файлов, я бы использовал пару простых file{}
ресурсов для управления этими файлами вместо рекурсивного материала.
Если вы не хотите создавать пакет системного типа, вы можетесделать ресурс file{}
для войны в альтернативный каталог, exec{"unzip ...": creates => '/path/to/unzipped/webapp;}
и иметь ресурсы file{}
для конфигурации, требующие Exec["unzip ..."]
.