diff options
| -rw-r--r-- | platform.rb | 3 | ||||
| -rw-r--r-- | provider_base/common.json | 6 | ||||
| -rw-r--r-- | provider_base/files/service-definitions/provider.json.erb | 2 | ||||
| -rw-r--r-- | provider_base/provider.json | 18 | ||||
| -rw-r--r-- | provider_base/services/openvpn.json | 10 | ||||
| -rw-r--r-- | provider_base/services/tor.json | 2 | ||||
| -rw-r--r-- | provider_base/services/webapp.json | 10 | ||||
| -rw-r--r-- | provider_base/tags/development.json | 4 | ||||
| -rw-r--r-- | puppet/modules/site_nagios/files/configs/Debian/nagios.cfg | 86 | ||||
| -rw-r--r-- | puppet/modules/site_nagios/manifests/server.pp | 9 | ||||
| -rw-r--r-- | tests/order.rb | 15 | 
11 files changed, 95 insertions, 70 deletions
| diff --git a/platform.rb b/platform.rb index 54590f4b..3882ed8d 100644 --- a/platform.rb +++ b/platform.rb @@ -4,7 +4,7 @@  Leap::Platform.define do    self.version = "0.4.0" -  self.compatible_cli = "1.4.0".."1.99" +  self.compatible_cli = "1.5.0".."1.99"    #    # the facter facts that should be gathered @@ -26,6 +26,7 @@ Leap::Platform.define do      # input config files      :common_config    => 'common.json',      :provider_config  => 'provider.json', +    :provider_env_config => 'provider.#{arg}.json',      :secrets_config   => 'secrets.json',      :node_config      => 'nodes/#{arg}.json',      :service_config   => 'services/#{arg}.json', diff --git a/provider_base/common.json b/provider_base/common.json index 07a58bba..a4d9c5f2 100644 --- a/provider_base/common.json +++ b/provider_base/common.json @@ -3,10 +3,10 @@    "environment": null,    "services": [],    "tags": [], -  "contacts": "= global.provider.contacts.default", +  "contacts": "= provider.contacts.default",    "domain": { -     "full_suffix": "= global.provider.domain", -     "internal_suffix": "= global.provider.domain_internal", +     "full_suffix": "= provider.domain", +     "internal_suffix": "= provider.domain_internal",       "full": "= node.name + '.' + domain.full_suffix",       "internal": "= node.name + '.' + domain.internal_suffix",       "name": "= node.name + '.' + (dns.public ? domain.full_suffix : domain.internal_suffix)" diff --git a/provider_base/files/service-definitions/provider.json.erb b/provider_base/files/service-definitions/provider.json.erb index 5d4c63a0..97454f81 100644 --- a/provider_base/files/service-definitions/provider.json.erb +++ b/provider_base/files/service-definitions/provider.json.erb @@ -1,6 +1,6 @@  <%=    # grab some fields from provider.json -  hsh = global.provider.pick( +  hsh = provider.pick(      :languages, :description, :name,      :enrollment_policy, :default_language, :service    ) diff --git a/provider_base/provider.json b/provider_base/provider.json index 8864e24d..fa69318b 100644 --- a/provider_base/provider.json +++ b/provider_base/provider.json @@ -23,17 +23,17 @@      ],      "default_service_level": 1,      "bandwidth_limit": 102400, -    "allow_free": "= global.provider.service.levels.select {|l| l['rate'].nil?}.any?", -    "allow_paid": "= global.provider.service.levels.select {|l| !l['rate'].nil?}.any?", -    "allow_anonymous": "= global.provider.service.levels.select {|l| l['name'] == 'anonymous'}.any?", -    "allow_registration": "= global.provider.service.levels.select {|l| l['name'] != 'anonymous'}.any?", -    "allow_limited_bandwidth": "= global.provider.service.levels.select {|l| l['bandwidth'] == 'limited'}.any?", -    "allow_unlimited_bandwidth": "= global.provider.service.levels.select {|l| l['bandwidth'].nil?}.any?" +    "allow_free": "= provider.service.levels.select {|l| l['rate'].nil?}.any?", +    "allow_paid": "= provider.service.levels.select {|l| !l['rate'].nil?}.any?", +    "allow_anonymous": "= provider.service.levels.select {|l| l['name'] == 'anonymous'}.any?", +    "allow_registration": "= provider.service.levels.select {|l| l['name'] != 'anonymous'}.any?", +    "allow_limited_bandwidth": "= provider.service.levels.select {|l| l['bandwidth'] == 'limited'}.any?", +    "allow_unlimited_bandwidth": "= provider.service.levels.select {|l| l['bandwidth'].nil?}.any?"    },    "ca": { -    "name": "= global.provider.ca.organization + ' Root CA'", -    "organization": "= global.provider.name[global.provider.default_language]", -    "organizational_unit": "= 'https://' + global.provider.domain", +    "name": "= provider.ca.organization + ' Root CA'", +    "organization": "= provider.name[provider.default_language]", +    "organizational_unit": "= 'https://' + provider.domain",      "bit_size": 4096,      "digest": "SHA256",      "life_span": "10y", diff --git a/provider_base/services/openvpn.json b/provider_base/services/openvpn.json index 5d77f946..5a87335b 100644 --- a/provider_base/services/openvpn.json +++ b/provider_base/services/openvpn.json @@ -14,10 +14,10 @@      "filter_dns": false,      "adblock": false,      "user_ips": false, -    "allow_limited": "= global.provider.service.allow_limited_bandwidth", -    "allow_unlimited": "= global.provider.service.allow_unlimited_bandwidth", -    "limited_prefix": "= global.provider.ca.client_certificates.limited_prefix", -    "unlimited_prefix": "= global.provider.ca.client_certificates.unlimited_prefix", -    "rate_limit": "= openvpn.allow_limited ? global.provider.service.bandwidth_limit : nil" +    "allow_limited": "= provider.service.allow_limited_bandwidth", +    "allow_unlimited": "= provider.service.allow_unlimited_bandwidth", +    "limited_prefix": "= provider.ca.client_certificates.limited_prefix", +    "unlimited_prefix": "= provider.ca.client_certificates.unlimited_prefix", +    "rate_limit": "= openvpn.allow_limited ? provider.service.bandwidth_limit : nil"    }  } diff --git a/provider_base/services/tor.json b/provider_base/services/tor.json index 9173b8d4..ed75285c 100644 --- a/provider_base/services/tor.json +++ b/provider_base/services/tor.json @@ -1,6 +1,6 @@  {    "tor": {      "bandwidth_rate": 6550, -    "contacts": "= global.provider.contacts['tor'] || global.provider.contacts.default" +    "contacts": "= provider.contacts['tor'] || provider.contacts.default"    }  } diff --git a/provider_base/services/webapp.json b/provider_base/services/webapp.json index f7abdffd..29c0cbf9 100644 --- a/provider_base/services/webapp.json +++ b/provider_base/services/webapp.json @@ -8,10 +8,10 @@        "salt": "= hex_secret :couch_webapp_password_salt, 128"      },      "customization_dir": "= file_path 'webapp'", -    "client_certificates": "= global.provider.ca.client_certificates", -    "allow_limited_certs": "= global.provider.service.allow_limited_bandwidth", -    "allow_unlimited_certs": "= global.provider.service.allow_unlimited_bandwidth", -    "allow_anonymous_certs": "= global.provider.service.allow_anonymous", +    "client_certificates": "= provider.ca.client_certificates", +    "allow_limited_certs": "= provider.service.allow_limited_bandwidth", +    "allow_unlimited_certs": "= provider.service.allow_unlimited_bandwidth", +    "allow_anonymous_certs": "= provider.service.allow_anonymous",      "secret_token": "= secret :webapp_secret_token",      "api_version": 1,      "secure": false, @@ -19,7 +19,7 @@        "source": "https://leap.se/git/leap_web",        "revision": "origin/master"      }, -    "client_version": "= global.provider.client_version", +    "client_version": "= provider.client_version",      "nagios_test_user": {        "username": "nagios_test",        "password": "= secret :nagios_test_password" diff --git a/provider_base/tags/development.json b/provider_base/tags/development.json index 6d4f9e25..d9c2c007 100644 --- a/provider_base/tags/development.json +++ b/provider_base/tags/development.json @@ -1,7 +1,7 @@  {    "environment": "development",    "domain": { -     "full_suffix": "= 'dev.' + global.provider.domain", -     "internal_suffix": "= 'dev.' + global.provider.domain_internal" +     "full_suffix": "= 'dev.' + provider.domain", +     "internal_suffix": "= 'dev.' + provider.domain_internal"    }  }
\ No newline at end of file diff --git a/puppet/modules/site_nagios/files/configs/Debian/nagios.cfg b/puppet/modules/site_nagios/files/configs/Debian/nagios.cfg index 9bd3da28..e46ebf62 100644 --- a/puppet/modules/site_nagios/files/configs/Debian/nagios.cfg +++ b/puppet/modules/site_nagios/files/configs/Debian/nagios.cfg @@ -1,6 +1,6 @@  ##############################################################################  # -# NAGIOS.CFG - Sample Main Config File for Nagios  +# NAGIOS.CFG - Sample Main Config File for Nagios  #  #  ############################################################################## @@ -8,7 +8,7 @@  # LOG FILE  # This is the main log file where service and host events are logged -# for historical purposes.  This should be the first option specified  +# for historical purposes.  This should be the first option specified  # in the config file!!!  log_file=/var/log/nagios3/nagios.log @@ -36,7 +36,7 @@ cfg_dir=/etc/nagios-plugins/config  # OBJECT CACHE FILE  # This option determines where object definitions are cached when -# Nagios starts/restarts.  The CGIs read object definitions from  +# Nagios starts/restarts.  The CGIs read object definitions from  # this cache file (rather than looking at the object config files  # directly) in order to prevent inconsistencies that can occur  # when the config files are modified after Nagios starts. @@ -52,7 +52,7 @@ object_cache_file=/var/cache/nagios3/objects.cache  # file.  You can then start Nagios with the -u option to have it read  # object definitions from this precached file, rather than the standard  # object configuration files (see the cfg_file and cfg_dir options above). -# Using a precached object file can speed up the time needed to (re)start  +# Using a precached object file can speed up the time needed to (re)start  # the Nagios process if you've got a large and/or complex configuration.  # Read the documentation section on optimizing Nagios to find our more  # about how this feature works. @@ -86,7 +86,7 @@ status_file=/var/cache/nagios3/status.dat  # STATUS FILE UPDATE INTERVAL  # This option determines the frequency (in seconds) that -# Nagios will periodically dump program, host, and  +# Nagios will periodically dump program, host, and  # service status data.  status_update_interval=10 @@ -94,7 +94,7 @@ status_update_interval=10  # NAGIOS USER -# This determines the effective user that Nagios should run as.   +# This determines the effective user that Nagios should run as.  # You can either supply a username or a UID.  nagios_user=nagios @@ -102,7 +102,7 @@ nagios_user=nagios  # NAGIOS GROUP -# This determines the effective group that Nagios should run as.   +# This determines the effective group that Nagios should run as.  # You can either supply a group name or a GID.  nagios_group=nagios @@ -128,7 +128,7 @@ check_external_commands=1  # Nagios to check for external commands every minute.  If you specify a  # number followed by an "s" (i.e. 15s), this will be interpreted to mean  # actual seconds rather than a multiple of the interval_length variable. -# Note: In addition to reading the external command file at regularly  +# Note: In addition to reading the external command file at regularly  # scheduled intervals, Nagios will also check for external commands after  # event handlers are executed.  # NOTE: Setting this value to -1 causes Nagios to check the external @@ -143,7 +143,7 @@ command_check_interval=-1  # This is the file that Nagios checks for external command requests.  # It is also where the command CGI will write commands that are submitted  # by users, so it must be writeable by the user that the web server -# is running as (usually 'nobody').  Permissions should be set at the  +# is running as (usually 'nobody').  Permissions should be set at the  # directory level instead of on the file, as the file is deleted every  # time its contents are processed.  # Debian Users: In case you didn't read README.Debian yet, _NOW_ is the @@ -155,9 +155,9 @@ command_file=/var/lib/nagios3/rw/nagios.cmd  # EXTERNAL COMMAND BUFFER SLOTS  # This settings is used to tweak the number of items or "slots" that -# the Nagios daemon should allocate to the buffer that holds incoming  -# external commands before they are processed.  As external commands  -# are processed by the daemon, they are removed from the buffer.   +# the Nagios daemon should allocate to the buffer that holds incoming +# external commands before they are processed.  As external commands +# are processed by the daemon, they are removed from the buffer.  external_command_buffer_slots=4096 @@ -235,12 +235,12 @@ event_broker_options=-1  #	w	= Weekly rotation (midnight on Saturday evening)  #	m	= Monthly rotation (midnight last day of month) -log_rotation_method=d +log_rotation_method=n  # LOG ARCHIVE PATH -# This is the directory where archived (rotated) log files should be  +# This is the directory where archived (rotated) log files should be  # placed (assuming you've chosen to do log rotation).  log_archive_path=/var/log/nagios3/archives @@ -403,7 +403,7 @@ max_host_check_spread=30  # MAXIMUM CONCURRENT SERVICE CHECKS -# This option allows you to specify the maximum number of  +# This option allows you to specify the maximum number of  # service checks that can be run in parallel at any given time.  # Specifying a value of 1 for this variable essentially prevents  # any service checks from being parallelized.  A value of 0 @@ -425,7 +425,7 @@ check_result_reaper_frequency=10  # MAX CHECK RESULT REAPER TIME  # This is the max amount of time (in seconds) that  a single -# check result reaper event will be allowed to run before  +# check result reaper event will be allowed to run before  # returning control back to Nagios so it can perform other  # duties. @@ -439,7 +439,7 @@ max_check_result_reaper_time=30  # service checks that have not yet been processed.  #  # Note: Make sure that only one instance of Nagios has access -# to this directory!   +# to this directory!  check_result_path=/var/lib/nagios3/spool/checkresults @@ -448,7 +448,7 @@ check_result_path=/var/lib/nagios3/spool/checkresults  # MAX CHECK RESULT FILE AGE  # This option determines the maximum age (in seconds) which check -# result files are considered to be valid.  Files older than this  +# result files are considered to be valid.  Files older than this  # threshold will be mercilessly deleted without further processing.  max_check_result_file_age=3600 @@ -510,14 +510,14 @@ enable_predictive_service_dependency_checks=1  # SOFT STATE DEPENDENCIES -# This option determines whether or not Nagios will use soft state  -# information when checking host and service dependencies. Normally  -# Nagios will only use the latest hard host or service state when  +# This option determines whether or not Nagios will use soft state +# information when checking host and service dependencies. Normally +# Nagios will only use the latest hard host or service state when  # checking dependencies. If you want it to use the latest state (regardless -# of whether its a soft or hard state type), enable this option.  +# of whether its a soft or hard state type), enable this option.  # Values: -#  0 = Don't use soft state dependencies (default)  -#  1 = Use soft state dependencies  +#  0 = Don't use soft state dependencies (default) +#  1 = Use soft state dependencies  soft_state_dependencies=0 @@ -535,7 +535,7 @@ soft_state_dependencies=0  # This option determines whether or not Nagios will attempt to  # automatically reschedule active host and service checks to  # "smooth" them out over time.  This can help balance the load on -# the monitoring server.   +# the monitoring server.  # WARNING: THIS IS AN EXPERIMENTAL FEATURE - IT CAN DEGRADE  # PERFORMANCE, RATHER THAN INCREASE IT, IF USED IMPROPERLY @@ -598,7 +598,7 @@ perfdata_timeout=5  # This setting determines whether or not Nagios will save state  # information for services and hosts before it shuts down.  Upon  # startup Nagios will reload all saved service and host state -# information before starting to monitor.  This is useful for  +# information before starting to monitor.  This is useful for  # maintaining long-term data on state statistics, etc, but will  # slow Nagios down a bit when it (re)starts.  Since its only  # a one-time penalty, I think its well worth the additional @@ -610,7 +610,7 @@ retain_state_information=1  # STATE RETENTION FILE  # This is the file that Nagios should use to store host and -# service state information before it shuts down.  The state  +# service state information before it shuts down.  The state  # information in this file is also read immediately prior to  # starting to monitor the network when Nagios is restarted.  # This file is used only if the preserve_state_information @@ -633,7 +633,7 @@ retention_update_interval=60  # USE RETAINED PROGRAM STATE -# This setting determines whether or not Nagios will set  +# This setting determines whether or not Nagios will set  # program status variables based on the values saved in the  # retention file.  If you want to use retained program status  # information, set this value to 1.  If not, set this value @@ -660,7 +660,7 @@ use_retained_scheduling_info=1  # program restarts.  #  # The values of the masks are bitwise ANDs of values specified -# by the "MODATTR_" definitions found in include/common.h.   +# by the "MODATTR_" definitions found in include/common.h.  # For example, if you do not want the current enabled/disabled state  # of flap detection and event handlers for hosts to be retained, you  # would use a value of 24 for the host attribute mask... @@ -711,7 +711,7 @@ use_aggressive_host_checking=0  # SERVICE CHECK EXECUTION OPTION  # This determines whether or not Nagios will actively execute -# service checks when it initially starts.  If this option is  +# service checks when it initially starts.  If this option is  # disabled, checks are not actively made, but Nagios can still  # receive and process passive check results that come in.  Unless  # you're implementing redundant hosts or have a special need for @@ -733,7 +733,7 @@ accept_passive_service_checks=1  # HOST CHECK EXECUTION OPTION  # This determines whether or not Nagios will actively execute -# host checks when it initially starts.  If this option is  +# host checks when it initially starts.  If this option is  # disabled, checks are not actively made, but Nagios can still  # receive and process passive check results that come in.  Unless  # you're implementing redundant hosts or have a special need for @@ -790,7 +790,7 @@ process_performance_data=0  # These commands are run after every host and service check is  # performed.  These commands are executed only if the  # enable_performance_data option (above) is set to 1.  The command -# argument is the short name of a command definition that you  +# argument is the short name of a command definition that you  # define in your host configuration file.  Read the HTML docs for  # more information on performance data. @@ -870,7 +870,7 @@ obsess_over_services=0  # OBSESSIVE COMPULSIVE SERVICE PROCESSOR COMMAND  # This is the command that is run for every service check that is  # processed by Nagios.  This command is executed only if the -# obsess_over_services option (above) is set to 1.  The command  +# obsess_over_services option (above) is set to 1.  The command  # argument is the short name of a command definition that you  # define in your host configuration file. Read the HTML docs for  # more information on implementing distributed monitoring. @@ -894,7 +894,7 @@ obsess_over_hosts=0  # OBSESSIVE COMPULSIVE HOST PROCESSOR COMMAND  # This is the command that is run for every host check that is  # processed by Nagios.  This command is executed only if the -# obsess_over_hosts option (above) is set to 1.  The command  +# obsess_over_hosts option (above) is set to 1.  The command  # argument is the short name of a command definition that you  # define in your host configuration file. Read the HTML docs for  # more information on implementing distributed monitoring. @@ -933,9 +933,9 @@ passive_host_checks_are_soft=0  # ORPHANED HOST/SERVICE CHECK OPTIONS -# These options determine whether or not Nagios will periodically  +# These options determine whether or not Nagios will periodically  # check for orphaned host service checks.  Since service checks are -# not rescheduled until the results of their previous execution  +# not rescheduled until the results of their previous execution  # instance are processed, there exists a possibility that some  # checks may never get rescheduled.  A similar situation exists for  # host checks, although the exact scheduling details differ a bit @@ -1003,9 +1003,9 @@ additional_freshness_latency=15  # FLAP DETECTION OPTION  # This option determines whether or not Nagios will try -# and detect hosts and services that are "flapping".   +# and detect hosts and services that are "flapping".  # Flapping occurs when a host or service changes between -# states too frequently.  When Nagios detects that a  +# states too frequently.  When Nagios detects that a  # host or service is flapping, it will temporarily suppress  # notifications for that host/service until it stops  # flapping.  Flap detection is very experimental, so read @@ -1049,7 +1049,7 @@ date_format=iso8601  # the system configured timezone.  #  # NOTE: In order to display the correct timezone in the CGIs, you -# will also need to alter the Apache directives for the CGI path  +# will also need to alter the Apache directives for the CGI path  # to include your timezone.  Example:  #  #   <Directory "/usr/local/nagios/sbin/"> @@ -1086,7 +1086,7 @@ enable_embedded_perl=1  # This option determines whether or not Nagios will process Perl plugins  # and scripts with the embedded Perl interpreter if the plugins/scripts  # do not explicitly indicate whether or not it is okay to do so. Read -# the HTML documentation on the embedded Perl interpreter for more  +# the HTML documentation on the embedded Perl interpreter for more  # information on how this option works.  use_embedded_perl_implicitly=1 @@ -1133,7 +1133,7 @@ use_regexp_matching=0  # "TRUE" REGULAR EXPRESSION MATCHING -# This option controls whether or not "true" regular expression  +# This option controls whether or not "true" regular expression  # matching takes place in the object config files.  This option  # only has an effect if regular expression matching is enabled  # (see above).  If this option is DISABLED, regular expression @@ -1186,7 +1186,7 @@ use_large_installation_tweaks=0  # This option determines whether or not Nagios will make all standard  # macros available as environment variables when host/service checks  # and system commands (event handlers, notifications, etc.) are -# executed.  Enabling this option can cause performance issues in  +# executed.  Enabling this option can cause performance issues in  # large installations, as it will consume a bit more memory and (more  # importantly) consume more CPU.  # Values: 1 - Enable environment variable macros (default) @@ -1227,7 +1227,7 @@ enable_environment_macros=1  # This option determines how much (if any) debugging information will  # be written to the debug file.  OR values together to log multiple  # types of information. -# Values:  +# Values:  #          -1 = Everything  #          0 = Nothing  #	   1 = Functions diff --git a/puppet/modules/site_nagios/manifests/server.pp b/puppet/modules/site_nagios/manifests/server.pp index 7106c36a..85443917 100644 --- a/puppet/modules/site_nagios/manifests/server.pp +++ b/puppet/modules/site_nagios/manifests/server.pp @@ -46,4 +46,13 @@ class site_nagios::server inherits nagios::base {    include site_nagios::server::apache    include site_check_mk::server    include site_shorewall::monitor + +  augeas { +    'logrotate_nagios': +      context => '/files/etc/logrotate.d/nagios/rule', +      changes => [ 'set file /var/log/nagios3/nagios.log', 'set rotate 7', +        'set schedule daily', 'set compress compress', +        'set missingok missingok', 'set ifempty notifempty', +        'set copytruncate copytruncate' ] +  }  } diff --git a/tests/order.rb b/tests/order.rb new file mode 100644 index 00000000..ffa6ae4e --- /dev/null +++ b/tests/order.rb @@ -0,0 +1,15 @@ +class LeapCli::Config::Node +  # +  # returns a list of node names that should be tested before this node. +  # make sure to not return ourselves (please no dependency loops!). +  # +  def test_dependencies +    dependents = LeapCli::Config::ObjectList.new +    unless services.include?('couchdb') +      if services.include?('webapp') || services.include?('mx') || services.include?('soledad') +        dependents.merge! nodes_like_me[:services => 'couchdb'] +      end +    end +    dependents.keys.delete_if {|name| self.name == name} +  end +end
\ No newline at end of file | 
