diff options
| author | varac <varacanero@zeromail.org> | 2013-09-23 14:15:46 +0200 | 
|---|---|---|
| committer | varac <varacanero@zeromail.org> | 2013-10-18 14:10:10 +0200 | 
| commit | cf9b3a637b4e348cd7c055ccb361e28d737914fd (patch) | |
| tree | 48872f2f9209a278219634d132d57f62c7b11953 | |
| parent | c884bc04e2eb29bdaacc5c6673ed7f212dc28e88 (diff) | |
nagios: use hash instead of array for hosts (Bug #3909)
Puppet 2.7.19 introduced a change that don't allow resource titles to be
something else that a string. from the puppet 2.7.19 changelog:
Don’t allow resource titles which aren’t strings
  It was possible to create resources whose titles weren't strings, by
  using a variable containing a hash, or the result of a function which
  doesn't return a string. This can cause problems resolving relationships
  when the stringified version of the title differs between master and
  agent.
  Now we will only accept primitives, and will stringify them. That is:
  string, symbol, number, boolean. Arrays or nested arrays will still be
  flattened and used to create multiple resources. Any other value (for
  instance: a hash) will cause a parse error.
currently, it's much easier to iterate over a hash in puppet than over
an array, cause every resource you call iterating over an array would
need a unique name, and you don't have this in arrays.
| -rw-r--r-- | puppet/modules/site_nagios/manifests/add_host.pp | 51 | ||||
| -rw-r--r-- | puppet/modules/site_nagios/manifests/server.pp | 7 | 
2 files changed, 30 insertions, 28 deletions
| diff --git a/puppet/modules/site_nagios/manifests/add_host.pp b/puppet/modules/site_nagios/manifests/add_host.pp index 498552b5..94352de4 100644 --- a/puppet/modules/site_nagios/manifests/add_host.pp +++ b/puppet/modules/site_nagios/manifests/add_host.pp @@ -1,31 +1,32 @@ -define site_nagios::add_host { -  $nagios_host       = $name -  $nagios_hostname   = $name['domain_internal'] -  $nagios_ip         = $name['ip_address'] -  $nagios_services   = $name['services'] -  $nagios_openvpn_gw = $name['openvpn_gateway_address'] +define site_nagios::add_host ( +  $domain_internal, +  $ip_address, +  $services, +  $openvpn_gateway_address='' ) { -  # Add Nagios host -  nagios_host { $nagios_hostname: -    address => $nagios_ip, -    use     => 'generic-host', -  } +    $nagios_hostname = $domain_internal -  # Add Nagios service +    # Add Nagios host +    nagios_host { $nagios_hostname: +      address => $ip_address, +      use     => 'generic-host', +    } -  # First, we need to turn the serice array into hash, using a "hash template" -  # see https://github.com/ashak/puppet-resource-looping -  $nagios_service_hashpart = { -    'hostname'    => $nagios_hostname, -    'ip_address'  => $nagios_ip, -    'openvpn_gw'  => $nagios_openvpn_gw, -  } -  $dynamic_parameters = { -    'service' => '%s' -  } -  $nagios_servicename = "${nagios_hostname}_%s" +    # Add Nagios service -  $nagios_service_hash = create_resources_hash_from($nagios_servicename, $nagios_services, $nagios_service_hashpart, $dynamic_parameters) +    # First, we need to turn the serice array into hash, using a "hash template" +    # see https://github.com/ashak/puppet-resource-looping +    $nagios_service_hashpart = { +      'hostname'    => $nagios_hostname, +      'ip_address'  => $ip_address, +      'openvpn_gw'  => $openvpn_gateway_address, +    } +    $dynamic_parameters = { +      'service' => '%s' +    } +    $nagios_servicename = "${nagios_hostname}_%s" -  create_resources ( site_nagios::add_service, $nagios_service_hash ) +    $nagios_service_hash = create_resources_hash_from($nagios_servicename, $services, $nagios_service_hashpart, $dynamic_parameters) + +    create_resources ( site_nagios::add_service, $nagios_service_hash )  } diff --git a/puppet/modules/site_nagios/manifests/server.pp b/puppet/modules/site_nagios/manifests/server.pp index a088921a..3e1ef7e7 100644 --- a/puppet/modules/site_nagios/manifests/server.pp +++ b/puppet/modules/site_nagios/manifests/server.pp @@ -5,9 +5,9 @@ class site_nagios::server inherits nagios::base {      stage => setup    } -  $nagios_hiera=hiera('nagios') +  $nagios_hiera   = hiera('nagios')    $nagiosadmin_pw = htpasswd_sha1($nagios_hiera['nagiosadmin_pw']) -  $hosts = $nagios_hiera['hosts'] +  $hosts          = $nagios_hiera['hosts']    include nagios::defaults    include nagios::base @@ -35,6 +35,7 @@ class site_nagios::server inherits nagios::base {      group  => 'nagios',    } -  site_nagios::add_host {$hosts:} +  create_resources ( site_nagios::add_host, $hosts ) +    include site_shorewall::monitor  } | 
