class installer::zenpack($zpack_hash) {
define zpack_installer($sure='present', $inst='false') {
$z_pack = $installer::zenpack::zpack_hash[$name]
$zp_ver = inline_template("<%= @z_pack['ver'].to_s.chomp %>")
$zp_repo = inline_template("<%= @z_pack['rep'].to_s.chomp %>")
$zp_rqed = inline_template("<%= @z_pack['req'].to_s.chomp %>")
package { $name:
ensure => $sure ? { present => $zp_ver, default => $sure },
notify => Exec[ 'refresh_zenpack_daemons', 'create_default_conf' ],
require => [
File[ '/opt/zenpack/etc/global.conf' ],
Yumrepo[ $zp_repo ],
];
}
}
$my_zpack_list = keys($zpack_hash)
zpack_installer { $my_zpack_list: }
}
class packages::zenpacks::core {
$hr_zenoss_zpack_core = hiera_hash('zenoss_four::zpack_core', undef)
class { 'installer::zenpack':
zpack_hash => $hr_zenoss_zpack_core,
require => [
Yumrepo[ $installer::zenpack::zpack_installer::zp_repo ],
File[ '/opt/zenoss/etc/global.conf' ],
Installer::Zenpack::Zpack_installer[ $installer::zenpack::zpack_installer::zp_rqed ],
];
}
}
err: Failed to apply catalog: Could not find dependency Yumrepo[undef] for Class[Installer::Zenpack]
zpack_four::zpack_core:
zenpack-apachemonitor:
ver: latest
repo: "zenpack-four-%{environment}"
req: zenpack-apachemonitor
zenpack-digmonitor:
ver: latest
repo: "zenpack-four-%{environment}"
rqed: zenpack-apachemonitor
define installer::zpack_installer($sure='present',
$inst='false',
$zp_ver, $zp_rep) {
....
....
}
class packages::zenpacks::core($pkgs_hash) {
define installer::zpack_installer($sure='present',
$inst='false',
$zp_ver, $zp_rep)) {
package { $name:
ensure => $zp_ver,
require => [
Yumrepo[ $zp_rep ],
Package[ 'zenpack-tools', 'patchutils' ],
];
}
.......
.......
}
create_resources(installer::zpack_installer, $pkgs_hash)
}
installer::zpack_installer {
'zenpack-digmonitor':
require => Installer::Zpack_installer[ 'zenpack-apachemonitor' ];
}