On Thursday, April 24, 2014 7:42:34 AM UTC-5, Felix.Frank wrote:
>
> Rule of thumb with defined types: Resources that those declare will want
> to have the $title (or $name) or their enclosing defined type in their
> title to avoid clashes.
>
> download_tomcat { "tomcat-dl-for-$name": version => $version }
>
>
Yes, but in this case there would still be a problem with that because the
defined type manages a File whose path depends only on the tomcat version.
That could be resolved by giving each tomcat instance its own, separate
tomcat tarball. That gets a bit messy, however, not to mention wasteful.
Personally, I'd have the tomcat instances share by declaring the tomcat
distribution virtually, something like this:
tomcat/manifests/dist.pp:
----
define tomcat::dist() {
$tc_name = "apache-tomcat-${title}"
$tarball = "${tc_name}.tar.gz"
$src_dir = '/usr/local/src'
file{ "${src_dir}/${tarball}":
ensure => present,
owner => root,
group => app,
mode => '0755',
source => "puppet:///modules/tomcat/${tarball}",
}
exec{"extract ${tc_name}":
command => "/bin/tar xzf ${src_dir}/${tarball}",
cwd => ${src_dir},
creates => "${src_dir}/${tc_name}",
require => File["${src_dir}/${tarball}"]
}
}
tomcat/manifests/init.pp:
----
class tomcat {
# Better if the available versions were drawn from external data:
$available_versions = ['6.0.39', '7.0.53', '8.0.5']
# Virtual declaration(s):
@tomcat::dist { $available_versions: }
...
}
tomcat/manifests/instance.pp:
----
# renamed from ensure_tomcats:
define tomcat::instance(
$tc_path,
$version
) {
include 'tomcat'
$tc_name = $title
# Realize instead of declaring:
realize Tomcat::Dist[$version]
exec{"$tc_name install":
...
require => Tomcat::Dist[$version]
}
...
}
manifests/site_or_some_other.pp:
----
node XY{
# no need to "include tomcat" here
tomcat::instance {
'tomcat1':
tc_path => "/app/tomcat1/tomcat",
version => "7.0.53";
'tomcat2':
tc_path => "/app/tomcat2/tomcat",
version => "7.0.53";
}
}
John
--
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/puppet-users/b45a2749-fcbe-42dd-bc5d-1e1453cf8de0%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.