From 9896558d73677871f006fcea854a89c2052b1ced Mon Sep 17 00:00:00 2001 From: Gardouille Date: Fri, 20 Feb 2015 11:33:03 +0100 Subject: [PATCH] Create a new subclass to build the dl_url and pkg_name to get Xymon server package. xymon::server::install: download the Xymon server package --- manifests/params.pp | 5 +++- manifests/server.pp | 7 +++++- manifests/server/install.pp | 21 ++++++++++++---- manifests/server/preconfig.pp | 45 +++++++++++++++++++++++++++++++++++ 4 files changed, 72 insertions(+), 6 deletions(-) create mode 100644 manifests/server/preconfig.pp diff --git a/manifests/params.pp b/manifests/params.pp index fba7bae..3bcb52c 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -40,7 +40,10 @@ class xymon::params { ## Server # Package $srv_dep_pkg_name = [ 'debconf', 'libc-ares2', 'libc6', 'libldap-2.4-2', 'libpng12-0', 'librrd4', 'libssl1.0.0', 'perl' ] - $srv_package_name = 'xymon' + $srv_download_dir = '/opt/xymon/packages' + $srv_download_url = undef + $srv_new_version = '4.3.17' + $srv_package_name = undef } default: { diff --git a/manifests/server.pp b/manifests/server.pp index 856907b..a06cc8d 100644 --- a/manifests/server.pp +++ b/manifests/server.pp @@ -23,6 +23,9 @@ # class xymon::server ( $dep_pkg_name = $xymon::params::srv_dep_pkg_name, + $download_dir = $xymon::params::srv_download_dir, + $download_url = $xymon::params::srv_download_url, + $new_version = $xymon::params::srv_new_version, $package_name = $xymon::params::srv_package_name, ) inherits xymon::params { @@ -32,11 +35,13 @@ class xymon::server ( } } + include '::xymon::server::preconfig' include '::xymon::server::install' #include '::xymon::server::config' #include '::xymon::server::service' - #Class['::xymon::server::install'] -> + Class['::xymon::server::preconfig'] -> + Class['::xymon::server::install'] #Class['::xymon::server::config'] -> #Class['::xymon::server::service'] diff --git a/manifests/server/install.pp b/manifests/server/install.pp index 03ff6ab..4a34e3a 100644 --- a/manifests/server/install.pp +++ b/manifests/server/install.pp @@ -4,15 +4,28 @@ # class xymon::server::install { + Exec { + path => [ '/bin', '/sbin', '/usr/bin', '/usr/sbin' ], + logoutput => 'on_failure', + } + + ## Packages # Install dependencies¬ ensure_resource('package', $xymon::server::dep_pkg_name , {'ensure' => 'present'}) - # Install Xymon server package - package { $xymon::server::package_name: - ensure => present, - require => [ Package[$xymon::server::dep_pkg_name], Class['::xymon::client'] ], + # Download the latest Xymon server package + exec { 'Download Xymon Server': + command => "wget ${xymon::server::preconfig::dl_url}/${xymon::server::preconfig::pkg_name} -O ${xymon::server::preconfig::pkg_name}", + cwd => $xymon::server::download_dir, + creates => "${xymon::server::download_dir}/${xymon::server::preconfig::pkg_name}", } + #-> + # Install Xymon server package + #package { $xymon::server::package_name: + #ensure => present, + #require => [ Package[$xymon::server::dep_pkg_name], Class['::xymon::server'] ], + #} } # Private class: xymon::server::install diff --git a/manifests/server/preconfig.pp b/manifests/server/preconfig.pp new file mode 100644 index 0000000..a2272ec --- /dev/null +++ b/manifests/server/preconfig.pp @@ -0,0 +1,45 @@ +# == Class: xymon::server::preconfig +# +# Some configurations before install Xymon server +# +class xymon::server::preconfig { + + # Define the download URL + if $xymon::server::download_url == undef { + case $::osfamily { + 'Debian': { + # From Xymon project via Sourceforge + $dl_url = "http://ufpr.dl.sourceforge.net/project/xymon/Xymon/${xymon::server::new_version}" + } + default: { + fail('Please define a download_url.') + } + } + } else { + $dl_url = $xymon::server::download_url + } + + # Define the package name + if $xymon::server::package_name == undef { + case $::osfamily { + 'Debian': { + $pkg_name = "xymon_${xymon::server::new_version}_${::architecture}.deb" + } + default: { + fail('Please define a package_name.') + } + } + } else { + $pkg_name = $xymon::server::package_name + } + #http://ufpr.dl.sourceforge.net/project/xymon/Xymon/4.3.17/xymon_4.3.17_amd64.deb + + exec { 'Create download directory for Xymon server package': + path => [ '/bin', '/sbin', '/usr/bin', '/usr/sbin' ], + command => "mkdir -p -- ${xymon::server::download_dir}", + creates => $xymon::server::download_dir, + logoutput => 'on_failure', + } + + +} # Private class: xymon::server::preconfig