OSDN Git Service

add .envrc
[metasearch/grid-chef-repo.git] / roles / pleiades-nm.rb
index 1b0e841..7f75dce 100644 (file)
+#
+# Copyright 2013-2014, whitestar
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+$LOAD_PATH.push("#{File.dirname(__FILE__)}/_lib")
+#${chef-repo}/roles/_lib/grid.rb
+require 'grid'
+
 name 'pleiades-nm'
 description 'Pleiades nagios node'
 
 run_list(
   'role[node_commons]',
-  'role[grid-realm]',
-  'role[ganglia-gmond]'
+  'role[nameservice-client-grid]',
+  'role[ganglia-gmond]',
+  'role[nagios]'
 )
 
 #env_run_lists "prod" => ["recipe[apache2]"], "staging" => ["recipe[apache2::staging]"], "_default" => []
 
-mcast_addr = '239.2.11.2'
+this_cluster = Grid::CLUSTERS[:pleiades]
+this_subcluster = Grid::CLUSTERS[:pleiades][:nagioses]
+mcast_addr = this_subcluster[:mcast_addr]
 port = '8649'
+=begin
+# uni-cast
+udp_send_channels4ucast = []
+this_subcluster[:nodes].first(2).each {|host|
+  udp_send_channels4ucast.push(
+    {
+      'mcast_join' => '',
+      'host' => "#{host}.#{Grid::DOMAIN}",
+      'port' => port,
+      'ttl' => ''
+    }
+  )
+}
+=end
+
+host_templates = []
+hosts = []
+hostgroups = []
+hostgroup_names = []
+
+Grid::CLUSTERS[:pleiades].each {|key, cluster|
+  host_templates.push(
+    {
+      'name' => cluster[:use_host_object],
+      'use' => 'generic-grid-host',
+      'register' => '0'
+    }
+  )
+
+  cluster[:nodes].each {|host|
+    hosts.push(
+      {
+        'host_name' => host,
+        'use' => cluster[:use_host_object],
+        'address' => "#{host}.#{Grid::DOMAIN}",
+      }
+    )
+  }  
+
+  hostgroups.push( 
+    {
+      'hostgroup_name' => cluster[:name],
+      'alias' => cluster[:alias],
+      'members' => cluster[:nodes].join(','),
+    }
+  )
+  hostgroup_names.push(cluster[:name])
+}
+
+nagios_objects = {
+  'contacts' => [
+    {
+      'name' => 'generic-grid-contact',
+      'service_notification_period' => '24x7',
+      'host_notification_period' => '24x7',
+      'service_notification_options' => 'w,u,c,r',
+      'host_notification_options' => 'd,u,r',
+      'service_notification_commands' => 'notify-service-by-email',
+      'host_notification_commands' => 'notify-host-by-email',
+      'register' => '0'
+    },
+    {
+      'contact_name' => 'alice',
+      'use' => 'generic-grid-contact',
+      'alias' => 'Alice',
+      'email' => 'alice@localhost'
+    },
+    {
+      'contact_name' => 'bob',
+      'use' => 'generic-grid-contact',
+      'alias' => 'Bob',
+      'email' => 'bob@localhost'
+    }
+  ],
+  'contactgroups' => [
+    {
+      'contactgroup_name' => 'grid-admins',
+      'alias' => 'Grid Administrators',
+      'members' => 'root'
+      #'members' => 'alice,bob'
+    }
+  ],
+  'hosts' => [
+    {
+      'name' => 'generic-grid-host',
+      'use' => 'generic-host',
+      'alias' => 'Grid Node',
+      'check_command' => 'check-host-alive',
+      'max_check_attempts' => '20',
+      'notification_interval' => '60',
+      'notification_period' => '24x7',
+      'notification_options' => 'd,u,r',
+      'register' => '0',
+    },
+  ] + host_templates + hosts,
+  'hostgroups' => \
+    hostgroups + [
+      # all nodes
+      {
+        'hostgroup_name' => 'grid-servers',
+        'alias' => 'GridServers',
+        'hostgroup_members' => hostgroup_names.join(',')
+      }
+    ],
+  'services' => [
+    # ganglia gmetad monitoring
+    {
+      'use' => 'generic-check_ganglia_cache-service',
+      'host_name' => 'localhost',
+      'contact_groups' => 'grid-admins',
+    },
+    {
+      'use' => 'generic-ganglia_heartbeat-service',
+      'hostgroup_name' => "#{this_cluster[:gmetads][:name]}",
+      'contact_groups' => 'grid-admins',
+    },
+    # standard monitoring.
+    {
+      'use' => 'generic-ping-service',
+      'hostgroup_name' => 'grid-servers',
+      'contact_groups' => 'grid-admins',
+    },
+    {
+      'use' => 'generic-ssh-service',
+      'hostgroup_name' => 'grid-servers',
+      'contact_groups' => 'grid-admins',
+    },
+    {
+      'use' => 'generic-ntp-service',
+      'hostgroup_name' => 'grid-servers',
+      'contact_groups' => 'grid-admins',
+    },
+    {
+      'use' => 'generic-load_one-service',
+      'hostgroup_name' => 'grid-servers',
+      'contact_groups' => 'grid-admins',
+    },
+    {
+      'use' => 'generic-load_five-service',
+      'hostgroup_name' => 'grid-servers',
+      'contact_groups' => 'grid-admins',
+    },
+    {
+      'use' => 'generic-load_fifteen-service',
+      'hostgroup_name' => 'grid-servers',
+      'contact_groups' => 'grid-admins',
+    },
+    {
+      'use' => 'generic-part_max_used-service',
+      'hostgroup_name' => 'grid-servers',
+      'contact_groups' => 'grid-admins',
+    },
+    {
+      'use' => 'generic-proc_total-service',
+      'hostgroup_name' => 'grid-servers',
+      'contact_groups' => 'grid-admins',
+    },
+    {
+      'use' => 'generic-http-service',
+      'hostgroup_name' \
+        => "#{this_cluster[:gmetads][:name]},#{this_cluster[:nagioses][:name]}",
+      'contact_groups' => 'grid-admins',
+    },
+=begin
+    {
+      'use' => 'generic-https-port-cert-service',
+      'service_description' => 'HTTPS_443_cert',
+      'hostgroup_name' => 'grid-proxy-servers',
+      'contact_groups' => 'grid-admins',
+    },
+    {
+      'use' => 'generic-https-service',
+      'hostgroup_name' => 'grid-proxy-servers',
+      'contact_groups' => 'grid-admins',
+    },
+    {
+      'use' => 'generic-mysql-service',
+      'hostgroup_name' => 'grid-oozie-servers',
+      'contact_groups' => 'grid-admins',
+    },
+    {
+      'use' => 'generic-mysql-slave-service',
+      'hostgroup_name' => 'grid-oozie-servers',
+      'contact_groups' => 'grid-admins',
+    },
+    {
+      'use' => 'generic-remote-mysql-heartbeat-service',
+      'hostgroup_name' => 'grid-oozie-servers',
+      'contact_groups' => 'grid-admins',
+    },
+    {
+      'use' => 'generic-ldap-service',
+      'hostgroup_name' => 'grid-nameservice-servers',
+      'check_command' => 'check_ldap3!dc=grid,dc=example,dc=com',
+      'contact_groups' => 'grid-admins',
+    },
+=end
+  ],
+  'servicedependencies' => [
+    {
+      'host_name' => 'localhost',
+      'service_description' => 'Cache for check_ganglia_metric',
+      #'dependent_host_name' => '.*',  # NG!
+      'dependent_hostgroup_name' => 'grid-servers',
+      'dependent_service_description' => '.* via Ganglia$',
+      'execution_failure_criteria' => 'c,p'
+    }
+  ]
+}
 
 default_attributes(
+  'nagios' => {
+    'objects' => nagios_objects,
+    'web' => {
+      'Allow' => [
+        "from .#{Grid::DOMAIN}",
+        'from 192.168.0.0/16'],
+      'AuthType' => 'Kerberos',
+      'mod_auth_kerb' => {
+        'KrbAuthRealms' => Grid::REALM,
+        'Krb5Keytab' => '/etc/krb5.keytab'
+      }
+    },
+    'check_external_commands' => '1',
+    'use_regexp_matching' => '1',
+    'authorized_for_system_information' => '*',
+    'authorized_for_configuration_information' => '*',
+    'authorized_for_system_commands' => '*',
+    'authorized_for_all_services' => '*',
+    'authorized_for_all_hosts' => '*',
+    'authorized_for_all_service_commands' => '*',
+    'authorized_for_all_host_commands' => '*',
+    'check_ganglia_metric' => {
+      'enabled' => true,
+      'gmetad_host' => "#{this_cluster[:gmetads][:service_hostname]}.#{Grid::DOMAIN}"
+    },
+  }
 )
 
 override_attributes(
   'ganglia' => {
     # gmond
     'cluster' => {
-      'name' => 'Nagios',
-      'owner' => 'grid.example.com'
+      'name' => this_subcluster[:alias],
+      'owner' => Grid::DOMAIN
     },
     'static' => {
       ## static multi-cast
@@ -41,20 +299,7 @@ override_attributes(
       ]
 =begin
       ## static uni-cast
-      'udp_send_channels' => [
-        {
-          'mcast_join' => '',
-          'host' => "nm00.#{this.domain}",
-          'port' => port,
-          'ttl' => ''
-        },
-        {
-          'mcast_join' => '',
-          'host' => "nm01.#{this.domain}",
-          'port' => port,
-          'ttl' => ''
-        }
-      ],
+      'udp_send_channels' => udp_send_channels4ucast,
       'udp_recv_channels' => [
         {
           'mcast_join' => '',