Hello,
I fight with a tomcat module and try to ensure several tomcat instances:
node XY{
include tomcat
ensure_tomcats{
"tomcat1":
tc_name => "tomcat1",
tc_path => "/app/tomcat1/tomcat",
version => "7.0.53";
"tomcat2":
tc_name => "tomcat2",
tc_path => "/app/tomcat2/tomcat",
version => "7.0.53";
}
I guess that my module isn't best practice:
#cat tomcat/manifests/init.pp
define download($version=""){
file{"download apache-tomcat-$version":
path => "/usr/local/src/apache-tomcat-$version.tar.gz",
ensure => present,
owner => $tc_name,
group => app,
mode => "0755",
source =>
"puppet:///modules/tomcat/apache-tomcat-$version.tar.gz",
}
}
define ensure_tomcats($tc_name, $tc_path, $version) {
download{"receive $tc_name $version":
version => $version,
}
file{"$tc_path":
ensure => present,
owner => $tc_name,
group => "app",
recurse => true,
require => Exec["$tc_name install"],
}
exec{"$tc_name extract apache-tomcat-$version":
command => "/bin/tar xfz
/usr/local/src/apache-tomcat-$version.tar.gz",
cwd => "/usr/local/src",
creates => "/usr/local/src/apache-tomcat-$version",
user => "root",
require => File["download apache-tomcat-$version"],
}
exec{"$tc_name install":
command => "/bin/cp -r /usr/local/src/apache-tomcat-$version
$tc_path",
cwd => "/usr/local/src",
creates => "$tc_path",
user => "root",
require => [ Exec["$tc_name extract apache-tomcat-$version"],
],
}
file{"$tc_path/webapps/examples":
ensure => absent,
force => true,
require => Exec["$tc_name install"],
}
file{"$tc_path/webapps/docs":
ensure => absent,
force => true,
require => Exec["$tc_name install"],
}
file{"/app/para/$tc_name.para":
ensure => present,
owner => "root",
group => "app",
mode => "0644",
source => [
"puppet:///modules/tomcat/$tc_name.para.$::hostname",
"puppet:///modules/tomcat/$tc_name.para" ],
}
user{"$tc_name":
ensure => present,
home => $tc_path,
managehome => true,
groups => "app",
}
file{"tomcat-users $tc_name":
ensure => file,
path => "${tc_path}/conf/tomcat-users.xml",
owner => $tc_name,
group => "app",
source => [
"puppet:///modules/tomcat/$::hostname.tomcat-users.xml",
"puppet:///modules/tomcat/tomcat-users.xml",
],
require => Exec["$tc_name install"],
}
file{"server.xml $tc_name":
ensure => file,
path => "${tc_path}/conf/server.xml",
owner => $tc_name,
group => "app",
source => [
"puppet:///modules/tomcat/$::hostname.$tc_name.server.xml",
"puppet:///modules/tomcat/$tc_name.server.xml",
"puppet:///modules/tomcat/server.xml",
],
notify => Service["$tc_name"],
require => Exec["$tc_name install"],
}
file{"manager web.xml $tc_name":
ensure => file,
path => "${tc_path}/webapps/manager/WEB-INF/web.xml",
owner => $tc_name,
group => "app",
source => [
"puppet:///modules/tomcat/$::hostname.$tc_name.manager.web.xml",
"puppet:///modules/tomcat/$::hostname.manager.web.xml",
"puppet:///modules/tomcat/manager.web.xml",
],
notify => Service["$tc_name"],
require => Exec["$tc_name install"],
}
file{"setenv.sh $tc_name":
ensure => file,
path => "${tc_path}/bin/setenv.sh",
owner => $tc_name,
group => "app",
mode => "0750",
source => [
"puppet:///modules/tomcat/$::hostname.$tc_name.setenv.sh",
"puppet:///modules/tomcat/$::hostname.setenv.sh",
"puppet:///modules/tomcat/setenv.sh",
],
require => Exec["$tc_name install"],
}
file {"/etc/init.d/$tc_name":
content => template('tomcat/tomcat_init.erb'),
owner => root,
group => root,
mode => 0755,
}
service{"$tc_name":
ensure => running,
enable => true,
hasrestart => true,
require => [ File["$tc_path"], File["setenv.sh
$tc_name"],
File["manager web.xml $tc_name"], File["server.xml
$tc_name"],
File["/etc/init.d/$tc_name"], ],
}
}
class tomcat{
file{'/app/proc/tomcat':
ensure => present,
owner => "root",
group => "app",
mode => "0750",
source => "puppet:///modules/tomcat/tomcat",
}
}
My problem is that if there're two tomcat instances with the same version
the module try to download the apache-tomcat tarball every time.
Error: Could not retrieve catalog from remote server: Error 400 on SERVER:
Duplicate declaration: File[download apache-tomcat-7.0.53] is already
declared in file /etc/puppet/modules/tomcat/manifests/init.pp:9; cannot
redeclare at /etc/puppet/modules/tomcat/manifests/init.pp:9 on node YX
Thanks in advance
Björn
--
You received this message because you are subscribed to the Google Groups
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to puppet-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/puppet-users/e8137ae2-4c8e-47aa-9de0-1102fc207f36%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.