Initial commit with previous code
This commit is contained in:
commit
16863fdf60
14 changed files with 772 additions and 0 deletions
251
defaults/main.yml
Normal file
251
defaults/main.yml
Normal file
|
@ -0,0 +1,251 @@
|
|||
---
|
||||
### TODO: REMEMBER TO CONVERT TO DEFAULS ###
|
||||
## Checks to-do:
|
||||
## Check HTTPS services
|
||||
## Check IMAP
|
||||
## Check SMTP
|
||||
##
|
||||
nagios4_config:
|
||||
admin_email: 'monitor-admin@example.org'
|
||||
admin_pager: 'monitor-admin-pager@example.com'
|
||||
log_file: "/var/log/nagios4/nagios.log"
|
||||
object_cache_file: "/var/lib/nagios4/objects.cache"
|
||||
precached_object_file: "/var/lib/nagios4/objects.precache"
|
||||
resource_file: "/etc/nagios4/resource.cfg"
|
||||
status_file: "/var/lib/nagios4/status.dat"
|
||||
status_update_interval: 30
|
||||
nagios_user: 'nagios'
|
||||
nagios_group: 'nagios'
|
||||
check_external_commands: 1
|
||||
command_file: "/var/lib/nagios4/rw/nagios.cmd"
|
||||
lock_file: "/var/lib/nagios4/nagios.lock"
|
||||
temp_file: "/var/lib/nagios4/nagios.tmp"
|
||||
temp_path: '/tmp'
|
||||
event_broker_options: -1
|
||||
log_rotation_method: 'd'
|
||||
log_archive_path: "/var/lib/nagios4/archive"
|
||||
use_syslog: 1
|
||||
log_notifications: 1
|
||||
log_service_retries: 1
|
||||
log_host_retries: 1
|
||||
log_event_handlers: 1
|
||||
log_initial_states: 0
|
||||
log_current_states: 1
|
||||
log_external_commands: 1
|
||||
log_passive_checks: 1
|
||||
service_inter_check_delay_method: 's'
|
||||
max_service_check_spread: 30
|
||||
service_interleave_factor: 's'
|
||||
host_inter_check_delay_method: 's'
|
||||
max_host_check_spread: 30
|
||||
max_concurrent_checks: 0
|
||||
check_result_reaper_frequency: 30
|
||||
max_check_result_reaper_time: 60
|
||||
check_result_path: "/var/lib/nagios4/spool/checkresults"
|
||||
max_check_result_file_age: 3600
|
||||
cached_host_check_horizon: 15
|
||||
cached_service_check_horizon: 35
|
||||
enable_predictive_host_dependency_checks: 1
|
||||
enable_predictive_service_dependency_checks: 1
|
||||
soft_state_dependencies: 0
|
||||
auto_reschedule_checks: 0
|
||||
auto_rescheduling_interval: 90
|
||||
auto_rescheduling_window: 360
|
||||
service_check_timeout: 60
|
||||
host_check_timeout: 30
|
||||
event_handler_timeout: 30
|
||||
notification_timeout: 30
|
||||
ocsp_timeout: 5
|
||||
perfdata_timeout: 5
|
||||
retain_state_information: 1
|
||||
state_retention_file: "/var/lib/nagios4/retention.dat"
|
||||
retention_update_interval: 60
|
||||
use_retained_program_state: 1
|
||||
use_retained_scheduling_info: 1
|
||||
retained_host_attribute_mask: 0
|
||||
retained_service_attribute_mask: 0
|
||||
retained_process_host_attribute_mask: 0
|
||||
retained_process_service_attribute_mask: 0
|
||||
retained_contact_host_attribute_mask: 0
|
||||
retained_contact_service_attribute_mask: 0
|
||||
interval_length: 60
|
||||
check_for_updates: 1
|
||||
bare_update_check: 0
|
||||
use_aggressive_host_checking: 0
|
||||
execute_service_checks: 1
|
||||
accept_passive_service_checks: 1
|
||||
execute_host_checks: 1
|
||||
accept_passive_host_checks: 1
|
||||
enable_notifications: 1
|
||||
enable_event_handlers: 1
|
||||
process_performance_data: 1
|
||||
#host_perfdata_file: '/usr/local/pnp4nagios/var/host-perfdata'
|
||||
#service_perfdata_file: '/usr/local/pnp4nagios/var/service-perfdata'
|
||||
#host_perfdata_file_template: 'DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$'
|
||||
#service_perfdata_file_template: 'DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$'
|
||||
#host_perfdata_file_mode: 'a'
|
||||
#service_perfdata_file_mode: 'a'
|
||||
#host_perfdata_file_processing_interval: 15
|
||||
#service_perfdata_file_processing_interval: 15
|
||||
#host_perfdata_file_processing_command: 'process-host-perfdata-file'
|
||||
#service_perfdata_file_processing_command: 'process-service-perfdata-file'
|
||||
obsess_over_services: 0
|
||||
obsess_over_hosts: 0
|
||||
translate_passive_host_checks: 0
|
||||
passive_host_checks_are_soft: 0
|
||||
check_for_orphaned_services: 1
|
||||
check_for_orphaned_hosts: 1
|
||||
check_service_freshness: 1
|
||||
service_freshness_check_interval: 60
|
||||
service_check_timeout_state: 'c'
|
||||
check_host_freshness: 0
|
||||
host_freshness_check_interval: 60
|
||||
additional_freshness_latency: 15
|
||||
enable_flap_detection: 1
|
||||
low_service_flap_threshold: 5.0
|
||||
high_service_flap_threshold: 20.0
|
||||
low_host_flap_threshold: 5.0
|
||||
high_host_flap_threshold: 20.0
|
||||
date_format: 'u'
|
||||
illegal_object_name_chars: "`~!$%^&*|'\"<>?,(): '"
|
||||
illegal_macro_output_chars: "`~$&|'\"<>"
|
||||
use_regexp_matching: 0
|
||||
use_true_regexp_matching: 0
|
||||
daemon_dumps_core: 0
|
||||
use_large_installation_tweaks: 0
|
||||
enable_environment_macros: 1
|
||||
debug_level: 0
|
||||
debug_verbosity: 1
|
||||
debug_file: "/var/log/nagios4/nagios.debug"
|
||||
max_debug_file_size: 1000000
|
||||
allow_empty_hostgroup_assignment: 0
|
||||
cgi_config:
|
||||
main_config_file: /etc/nagios4/nagios.cfg
|
||||
physical_html_path: /usr/share/nagios4/htdocs
|
||||
url_html_path: /nagios4
|
||||
show_context_help: 0
|
||||
use_pending_states: 1
|
||||
use_authentication: 0
|
||||
use_ssl_authentication: 0
|
||||
authorized_for_system_information: nagiosadmin
|
||||
authorized_for_configuration_information: nagiosadmin
|
||||
authorized_for_system_commands: nagiosadmin
|
||||
authorized_for_all_services: nagiosadmin
|
||||
authorized_for_all_hosts: nagiosadmin
|
||||
authorized_for_all_service_commands: nagiosadmin
|
||||
authorized_for_all_host_commands: nagiosadmin
|
||||
default_statuswrl_layout: 4
|
||||
ping_syntax: /bin/ping -n -U -c 5 $HOSTADDRESS$
|
||||
refresh_rate: 90
|
||||
result_limit: 100
|
||||
escape_html_tags: 1
|
||||
action_url_target: _blank
|
||||
notes_url_target: _blank
|
||||
lock_author_names: 1
|
||||
navbar_search_for_addresses: 1
|
||||
navbar_search_for_aliases: 1
|
||||
|
||||
nagios_user: nagios
|
||||
nagios_group: nagios
|
||||
monitored_hosts:
|
||||
- host_name: localhost
|
||||
use: linux-server
|
||||
alias: Server-1
|
||||
address: 127.0.0.1
|
||||
services:
|
||||
- use: local-service
|
||||
description: PING
|
||||
check_command: check_ping!100.0,20%!500.0,60%
|
||||
- host_name: server1
|
||||
use: linux-server
|
||||
alias: Server-1
|
||||
address: server1.example.org
|
||||
services:
|
||||
- use: local-service
|
||||
description: PING
|
||||
check_command: check_ping!100.0,20%!500.0,60%
|
||||
hostgroups:
|
||||
- hostgroup_name: linux servers
|
||||
alias: Linux Servers
|
||||
members:
|
||||
- localhost
|
||||
- server1
|
||||
services:
|
||||
- service_description: 'PING'
|
||||
check_command: "check_ping!200.0,20%!500.0,60%"
|
||||
- hostgroup_name: external servers
|
||||
alias: External Servers
|
||||
services:
|
||||
- service_description: 'PING'
|
||||
check_command: "check_ping!200.0,20%!500.0,60%"
|
||||
- hostgroup_name: imap servers
|
||||
alias: IMAP servers
|
||||
services:
|
||||
- service_description: 'PING'
|
||||
check_command: "check_ping!200.0,20%!500.0,60%"
|
||||
- hostgroup_name: mail transport agents
|
||||
alias: Mail Transport Agents
|
||||
services:
|
||||
- service_description: 'PING'
|
||||
check_command: "check_ping!200.0,20%!500.0,60%"
|
||||
- hostgroup_name: appliances
|
||||
alias: Appliances
|
||||
services:
|
||||
- service_description: 'PING'
|
||||
check_command: "check_ping!200.0,20%!500.0,60%"
|
||||
- hostgroup_name: web servers
|
||||
alias: Web servers
|
||||
services:
|
||||
- service_description: 'PING'
|
||||
check_command: "check_ping!200.0,20%!500.0,60%"
|
||||
commands: []
|
||||
contacts: []
|
||||
templates: []
|
||||
timeperiods: []
|
||||
|
||||
vhosts:
|
||||
- vhostname: nagios4.example.org
|
||||
web_port: 80
|
||||
ssl_port: 443
|
||||
ssl: yes
|
||||
#docroot: /var/www/host.example.org
|
||||
serveradmin: webmaster@example.org
|
||||
#server_aliases: []
|
||||
#root_options:
|
||||
# - '-Indexes'
|
||||
# - '-FollowSymLinks'
|
||||
aliases:
|
||||
- dest: nagios4
|
||||
src: /usr/share/nagios4/htdocs
|
||||
# directories:
|
||||
# - path: /var/www/host.example.org/custom_dir
|
||||
# options:
|
||||
# - '-Indexes'
|
||||
# - '-FollowSymLinks'
|
||||
# allow_override: None
|
||||
# require: 'all granted'
|
||||
# custom_code: ""
|
||||
custom_code: "<DirectoryMatch (/usr/share/nagios4/htdocs|/usr/lib/cgi-bin/nagios4|/etc/nagios4/stylesheets)>
|
||||
Options FollowSymLinks
|
||||
DirectoryIndex index.php index.html
|
||||
AllowOverride AuthConfig
|
||||
#Require ip ::1/128 fc00::/7 fe80::/10 10.0.0.0/8 127.0.0.0/8 169.254.0.0/16 172.16.0.0/12 192.168.0.0/16
|
||||
<Files \"cmd.cgi\">
|
||||
AuthDigestDomain \"Nagios4\"
|
||||
AuthDigestProvider file
|
||||
AuthUserFile \"/etc/nagios4/htdigest.users\"
|
||||
AuthGroupFile \"/etc/group\"
|
||||
AuthName \"Nagios4\"
|
||||
AuthType Digest
|
||||
Require all granted
|
||||
#Require valid-user
|
||||
</Files>
|
||||
</DirectoryMatch>
|
||||
|
||||
<Directory /usr/share/nagios4/htdocs>
|
||||
Options +ExecCGI
|
||||
</Directory>"
|
||||
# ldap:
|
||||
# url: ldap://ldap.example.org/ou=People,ou=Users,dc=example,dc=org?uid
|
||||
# require: valid-user
|
||||
#reverse_proxy: http://127.0.0.1:8080/
|
10
handlers/main.yml
Normal file
10
handlers/main.yml
Normal file
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
- name: Restart Nagios4
|
||||
systemd:
|
||||
name: nagios4
|
||||
state: restarted
|
||||
|
||||
- name: Restart Apache2
|
||||
systemd:
|
||||
name: apache2
|
||||
state: restarted
|
137
tasks/configure.yml
Normal file
137
tasks/configure.yml
Normal file
|
@ -0,0 +1,137 @@
|
|||
---
|
||||
# - name: Ensure Nagios is configured
|
||||
# template:
|
||||
# dest: /etc/nagios4/nagios.cfg
|
||||
# src: templates/nagios.cfg.j2
|
||||
# owner: "{{ nagios_user }}"
|
||||
# group: "{{ nagios_group }}"
|
||||
# mode: 0660
|
||||
# backup: yes
|
||||
# notify: Restart Nagios4
|
||||
|
||||
- name: Ensure folder for Nagios configurations exists
|
||||
file:
|
||||
path: /etc/nagios4/conf.d
|
||||
state: directory
|
||||
owner: "{{ nagios_user }}"
|
||||
group: "{{ nagios_group }}"
|
||||
|
||||
- name: Ensure nagios is configured
|
||||
lineinfile:
|
||||
path: /etc/nagios4/nagios.cfg
|
||||
line: "{{ item.key }}={{ item.value }}"
|
||||
regexp: "^{{ item.key }}="
|
||||
backup: yes
|
||||
create: yes
|
||||
#validate: '/usr/sbin/nagios4 --verify-config %s'
|
||||
loop: "{{ lookup('dict', nagios4_config) }}"
|
||||
notify: Restart Nagios4
|
||||
|
||||
- name: Ensure nagios CGI is configured
|
||||
lineinfile:
|
||||
path: /etc/nagios4/cgi.cfg
|
||||
line: "{{ item.key }}={{ item.value }}"
|
||||
regexp: "^{{ item.key }}="
|
||||
backup: yes
|
||||
create: yes
|
||||
#validate: '/usr/sbin/nagios4 --verify-config %s'
|
||||
loop: "{{ lookup('dict', cgi_config) }}"
|
||||
notify: Restart Nagios4
|
||||
|
||||
- name: Ensure commands are configured
|
||||
template:
|
||||
dest: /etc/nagios4/objects/commands.cfg
|
||||
src: templates/commands.cfg.j2
|
||||
owner: "{{ nagios_user }}"
|
||||
group: "{{ nagios_group }}"
|
||||
mode: 0660
|
||||
backup: yes
|
||||
#validate: '/usr/sbin/nagios4 --verify-config /etc/nagios4/nagios.cfg #%s'
|
||||
notify: Restart Nagios4
|
||||
|
||||
- name: Ensure sudo commands are added
|
||||
community.general.sudoers:
|
||||
name: "allow_sudo_{{ item.command_name }}"
|
||||
state: present
|
||||
user: nagios
|
||||
commands: "{{ item.command_line.split(' ')[1] | replace('$USER1$', '/usr/lib/nagios/plugins') }}"
|
||||
nopassword: true
|
||||
loop: "{{ commands }}"
|
||||
when: "'sudo ' in item.command_line"
|
||||
|
||||
- name: Ensure hostgroups are configured
|
||||
template:
|
||||
dest: /etc/nagios4/conf.d/hostgroups.cfg
|
||||
src: templates/hostgroups.cfg.j2
|
||||
owner: "{{ nagios_user }}"
|
||||
group: "{{ nagios_group }}"
|
||||
mode: 0660
|
||||
backup: yes
|
||||
#validate: '/usr/sbin/nagios4 --verify-config /etc/nagios4/nagios.cfg #%s'
|
||||
notify: Restart Nagios4
|
||||
|
||||
- name: Ensure contacts and contactgroups are configured
|
||||
template:
|
||||
dest: /etc/nagios4/objects/contacts.cfg
|
||||
src: templates/contacts.cfg.j2
|
||||
owner: "{{ nagios_user }}"
|
||||
group: "{{ nagios_group }}"
|
||||
mode: 0660
|
||||
backup: yes
|
||||
#validate: '/usr/sbin/nagios4 --verify-config /etc/nagios4/nagios.cfg #%s'
|
||||
notify: Restart Nagios4
|
||||
|
||||
- name: Ensure hosts are configured
|
||||
template:
|
||||
dest: "/etc/nagios4/conf.d/{{ item.host_name }}.cfg"
|
||||
src: templates/host_template.j2
|
||||
owner: "{{ nagios_user }}"
|
||||
group: "{{ nagios_group }}"
|
||||
mode: 0660
|
||||
backup: yes
|
||||
#validate: '/usr/sbin/nagios4 --verify-config /etc/nagios4/nagios.cfg #%s'
|
||||
notify: Restart Nagios4
|
||||
with_items: "{{ monitored_hosts }}"
|
||||
|
||||
- name: Ensure templates are configured
|
||||
template:
|
||||
dest: "/etc/nagios4/objects/templates.cfg"
|
||||
src: templates/templates_template.j2
|
||||
owner: "{{ nagios_user }}"
|
||||
group: "{{ nagios_group }}"
|
||||
mode: 0660
|
||||
backup: yes
|
||||
#validate: '/usr/sbin/nagios4 --verify-config /etc/nagios4/nagios.cfg #%s'
|
||||
notify: Restart Nagios4
|
||||
|
||||
- name: Ensure timeperiods are configured
|
||||
template:
|
||||
dest: "/etc/nagios4/objects/timeperiods.cfg"
|
||||
src: templates/timeperiods.cfg.j2
|
||||
owner: "{{ nagios_user }}"
|
||||
group: "{{ nagios_group }}"
|
||||
mode: 0660
|
||||
backup: yes
|
||||
#validate: '/usr/sbin/nagios4 --verify-config /etc/nagios4/nagios.cfg #%s'
|
||||
notify: Restart Nagios4
|
||||
|
||||
- name: Ensure nagios is not loading the locahost.cfg file
|
||||
lineinfile:
|
||||
path: /etc/nagios4/nagios.cfg
|
||||
line: "#cfg_file=/etc/nagios4/objects/localhost.cfg"
|
||||
regexp: "^cfg_file=/etc/nagios4/objects/localhost.cfg$"
|
||||
backup: yes
|
||||
create: yes
|
||||
#validate: '/usr/sbin/nagios4 --verify-config %s'
|
||||
notify: Restart Nagios4
|
||||
|
||||
- name: Ensure locahost.cfg file is absent
|
||||
file:
|
||||
path: /etc/nagios4/objects/localhost.cfg
|
||||
state: absent
|
||||
|
||||
- name: Ensure Nagios service is enabled and started
|
||||
systemd:
|
||||
name: nagios4
|
||||
enabled: yes
|
||||
state: started
|
23
tasks/configure_apache.yml
Normal file
23
tasks/configure_apache.yml
Normal file
|
@ -0,0 +1,23 @@
|
|||
---
|
||||
- name: Ensure configuration file is available to Apache
|
||||
template:
|
||||
dest: "/etc/apache2/sites-available/25-{{ vhost_name }}.conf"
|
||||
src: templates/apache_vhost.j2
|
||||
mode: 0644
|
||||
backup: yes
|
||||
|
||||
- name: Create auth user file
|
||||
htpasswd:
|
||||
path: "{{ auth_user_file }}"
|
||||
name: "{{ nagios_admin_user }}"
|
||||
password: "{{ nagios_admin_password }}"
|
||||
owner: root
|
||||
group: www-data
|
||||
mode: 0640
|
||||
|
||||
- name: Ensure vhost is enabled
|
||||
file:
|
||||
state: link
|
||||
src: "/etc/apache2/sites-available/25-{{ vhost_name }}.conf"
|
||||
path: "/etc/apache2/sites-enabled/25-{{ vhost_name }}.conf"
|
||||
notify: Restart Apache2
|
18
tasks/install.yml
Normal file
18
tasks/install.yml
Normal file
|
@ -0,0 +1,18 @@
|
|||
---
|
||||
- name: Ensure software is installed
|
||||
package:
|
||||
name:
|
||||
- apache2
|
||||
- apache2-utils
|
||||
- libapache2-mod-php
|
||||
- php-gd
|
||||
#- libgdchart-gd2-xpm-dev
|
||||
- snmp
|
||||
- smbclient
|
||||
- fping
|
||||
- iputils-ping
|
||||
- gettext
|
||||
- daemon
|
||||
- nagios4
|
||||
- nagios-nrpe-plugin
|
||||
- rrdtool
|
9
tasks/main.yml
Normal file
9
tasks/main.yml
Normal file
|
@ -0,0 +1,9 @@
|
|||
---
|
||||
- name: Ensure Nagios is installed
|
||||
include_tasks: install.yml
|
||||
|
||||
- name: Ensure Nagios is configured
|
||||
include_tasks: configure.yml
|
||||
|
||||
- name: Ensure Apache is configured for Nagios
|
||||
include_tasks: configure_apache.yml
|
125
templates/apache_vhost.j2
Normal file
125
templates/apache_vhost.j2
Normal file
|
@ -0,0 +1,125 @@
|
|||
<VirtualHost *:80>
|
||||
ServerName {{ vhost_name }}
|
||||
ServerAdmin {{ webadmin }}
|
||||
ServerAlias {{ vhost_aliases }}
|
||||
|
||||
## Logging
|
||||
ErrorLog "/var/log/apache2/{{ vhost_name }}_error_ssl.log"
|
||||
ServerSignature Off
|
||||
CustomLog "/var/log/apache2/{{ vhost_name }}_access_ssl.log" combined
|
||||
ErrorDocument 404 https://susurrando.com/notfound.php
|
||||
ErrorDocument 500 https://susurrando.com/error500.php
|
||||
ErrorDocument 503 https://susurrando.com/error503.php
|
||||
|
||||
|
||||
ScriptAlias /cgi-bin/nagios4 /usr/lib/cgi-bin/nagios4
|
||||
ScriptAlias /nagios4/cgi-bin /usr/lib/cgi-bin/nagios4
|
||||
|
||||
# Where the stylesheets (config files) reside
|
||||
Alias /nagios4/stylesheets /etc/nagios4/stylesheets
|
||||
|
||||
# Where the HTML pages live
|
||||
Alias /nagios4 /usr/share/nagios4/htdocs
|
||||
|
||||
<DirectoryMatch (/usr/share/nagios4/htdocs|/usr/lib/cgi-bin/nagios4|/etc/nagios4/stylesheets)>
|
||||
Options +FollowSymLinks
|
||||
DirectoryIndex index.php index.html
|
||||
AllowOverride None
|
||||
<IfVersion >= 2.3>
|
||||
<RequireAll>
|
||||
Require all granted
|
||||
AuthName "Nagios Access"
|
||||
AuthType Basic
|
||||
AuthUserFile {{ auth_user_file }}
|
||||
Require valid-user
|
||||
</RequireAll>
|
||||
</IfVersion>
|
||||
<IfVersion < 2.3>
|
||||
Order allow,deny
|
||||
Allow from all
|
||||
AuthName "Nagios Access"
|
||||
AuthType Basic
|
||||
AuthUserFile {{ auth_user_file }}
|
||||
Require valid-user
|
||||
</IfVersion>
|
||||
</DirectoryMatch>
|
||||
|
||||
<Directory /usr/share/nagios4/htdocs>
|
||||
Options +ExecCGI
|
||||
</Directory>
|
||||
|
||||
# PNP4Nagios
|
||||
Alias /pnp4nagios "/usr/local/pnp4nagios/share"
|
||||
|
||||
<Directory "/usr/local/pnp4nagios/share">
|
||||
AllowOverride None
|
||||
Order allow,deny
|
||||
Allow from all
|
||||
#
|
||||
# Use the same value as defined in nagios.conf
|
||||
#
|
||||
AuthName "Nagios Access"
|
||||
AuthType Basic
|
||||
AuthUserFile {{ auth_user_file }}
|
||||
Require valid-user
|
||||
<IfModule mod_rewrite.c>
|
||||
# Turn on URL rewriting
|
||||
RewriteEngine On
|
||||
Options +symLinksIfOwnerMatch
|
||||
# Installation directory
|
||||
RewriteBase /pnp4nagios/
|
||||
# Protect application and system files from being viewed
|
||||
RewriteRule "^(?:application|modules|system)/" - [F]
|
||||
# Allow any files or directories that exist to be displayed directly
|
||||
RewriteCond "%{REQUEST_FILENAME}" !-f
|
||||
RewriteCond "%{REQUEST_FILENAME}" !-d
|
||||
# Rewrite all other URLs to index.php/URL
|
||||
RewriteRule "^.*$" "index.php/$0" [PT]
|
||||
</IfModule>
|
||||
</Directory>
|
||||
|
||||
# HighCharts
|
||||
Alias /highcharts "/usr/local/highcharts"
|
||||
<Directory "/usr/local/highcharts">
|
||||
Options None
|
||||
AllowOverride None
|
||||
Order allow,deny
|
||||
Allow from all
|
||||
## Only for apache 2.4 ##
|
||||
# Require all granted
|
||||
</Directory>
|
||||
|
||||
</VirtualHost>
|
||||
|
||||
<VirtualHost *:443>
|
||||
ServerName {{ vhost_name }}
|
||||
ServerAdmin {{ webadmin }}
|
||||
|
||||
## Logging
|
||||
ErrorLog "/var/log/apache2/{{ vhost_name }}_ssl_error_ssl.log"
|
||||
ServerSignature Off
|
||||
CustomLog "/var/log/apache2/{{ vhost_name }}_ssl_access_ssl.log" combined
|
||||
ErrorDocument 404 https://susurrando.com/notfound.php
|
||||
ErrorDocument 500 https://susurrando.com/error500.php
|
||||
ErrorDocument 503 https://susurrando.com/error503.php
|
||||
## Rewrite rules
|
||||
RewriteEngine On
|
||||
|
||||
|
||||
## SSL directives
|
||||
SSLEngine on
|
||||
SSLCertificateFile "/etc/letsencrypt/live/{{ vhost_name }}/fullchain.pem"
|
||||
SSLCertificateKeyFile "/etc/letsencrypt/live/{{ vhost_name }}/privkey.pem"
|
||||
SSLProtocol all -SSLv3 -SSLv2 -TLSv1 -TLSv1.1
|
||||
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
|
||||
|
||||
## Custom fragment
|
||||
|
||||
SSLHonorCipherOrder on
|
||||
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
|
||||
SSLProxyEngine On
|
||||
SSLProxyCheckPeerCN on
|
||||
SSLProxyCheckPeerExpire on
|
||||
ProxyPass / http://{{ vhost_name }}/
|
||||
ProxyPassReverse / http://{{ vhost_name }}/
|
||||
</VirtualHost>
|
10
templates/commands.cfg.j2
Normal file
10
templates/commands.cfg.j2
Normal file
|
@ -0,0 +1,10 @@
|
|||
# File managed by Ansible
|
||||
|
||||
# COMMANDS DEFINITIONS
|
||||
{% if commands %}{% for command in commands %}
|
||||
define command{
|
||||
{% for key, value in command.items() %}
|
||||
{{ key }} {{ value }}
|
||||
{% endfor %}
|
||||
}
|
||||
{% endfor %}{% endif %}
|
25
templates/contacts.cfg.j2
Normal file
25
templates/contacts.cfg.j2
Normal file
|
@ -0,0 +1,25 @@
|
|||
# File managed by Ansible
|
||||
|
||||
# CONTACTS DEFINITIONS
|
||||
{% if contacts %}{% for contact in contacts %}
|
||||
define contact{
|
||||
{% for key, value in contact.items() %}
|
||||
{{ key }} {{ value }}
|
||||
{% endfor %}
|
||||
}
|
||||
{% endfor %}{% endif %}
|
||||
|
||||
|
||||
# CONTACTGROUPS DEFINITIONS
|
||||
{% if contactgroups %}{% for contactgroup in contactgroups %}
|
||||
define contactgroup{
|
||||
{% for key, value in contactgroup.items() %}
|
||||
{% if key != "members" %}
|
||||
{{ key }} {{ value }}
|
||||
{% endif %}
|
||||
{% if 'members' in contactgroup %}
|
||||
members {{ contactgroup.members | join(',') }}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
}
|
||||
{% endfor %}{% endif %}
|
23
templates/host_template.j2
Normal file
23
templates/host_template.j2
Normal file
|
@ -0,0 +1,23 @@
|
|||
# File managed by Ansible
|
||||
|
||||
# HOST DEFINITION
|
||||
define host{
|
||||
{% for key, value in item.items() %}
|
||||
{% if key != "services" %}
|
||||
{{ key }} {{ value }}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
}
|
||||
|
||||
{% if 'services' in item %}
|
||||
# SERVICES DEFINITION
|
||||
{% for service in item.services %}
|
||||
|
||||
define service{
|
||||
host {{ item.host_name }}
|
||||
{% for key, value in service.items() %}
|
||||
{{ key }} {% if key == "service_description" %}{{ value | replace(" ", "_") }}{% else %}{{ value }}{% endif %}
|
||||
|
||||
{% endfor %}
|
||||
}
|
||||
{% endfor %}{% endif %}
|
34
templates/hostgroups.cfg.j2
Normal file
34
templates/hostgroups.cfg.j2
Normal file
|
@ -0,0 +1,34 @@
|
|||
# File managed by Ansible
|
||||
|
||||
# HOSTGROUPS DEFINITIONS
|
||||
{% if hostgroups %}{% for group in hostgroups %}
|
||||
# Group {{ group.hostgroup_name }}
|
||||
define hostgroup{
|
||||
{% for key, value in group.items() %}
|
||||
{% if key != "members" and key != "services" %}
|
||||
{{ key }} {{ value }}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if 'members' in group %}
|
||||
members {{ group.members | join(',') }}
|
||||
{% endif %}
|
||||
}
|
||||
{% if group.services is defined %}{% for service in group.services %}
|
||||
# Service {{ service.service_description }}
|
||||
define service{
|
||||
use {{ service.service_template |default('local-service') }}
|
||||
hostgroup_name {{ group.hostgroup_name }}
|
||||
service_description {{ service.service_description | replace(" ", "_") }}
|
||||
check_command {{ service.check_command }}
|
||||
notifications_enabled {{ service.notifications_enabled |default(1) }}
|
||||
{% if service.action_url is defined %}
|
||||
action_url {{ service.action_url }}
|
||||
{% endif %}
|
||||
{% if service.notes_url is defined %}
|
||||
notes_url {{ service.notes_url }}
|
||||
{% endif %}
|
||||
|
||||
}
|
||||
{% endfor %}{% endif %}
|
||||
{% endfor %}{% endif %}
|
||||
|
3
templates/nagios.cfg.j2
Normal file
3
templates/nagios.cfg.j2
Normal file
|
@ -0,0 +1,3 @@
|
|||
{% if nagios4_config %}{% for key, value in nagios4_config.items() %}
|
||||
{{ key }}={{ value }}
|
||||
{% endfor %}{% endif %}
|
72
templates/templates_template.j2
Normal file
72
templates/templates_template.j2
Normal file
|
@ -0,0 +1,72 @@
|
|||
###############################################################################
|
||||
# MANAGED BY ANSIBLE!!
|
||||
# TEMPLATES.CFG - SAMPLE OBJECT TEMPLATES
|
||||
#
|
||||
#
|
||||
# NOTES: This config file provides you with some example object definition
|
||||
# templates that are refered by other host, service, contact, etc.
|
||||
# definitions in other config files.
|
||||
#
|
||||
# You don't need to keep these definitions in a separate file from your
|
||||
# other object definitions. This has been done just to make things
|
||||
# easier to understand.
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
|
||||
{% if templates.contacts is defined %}
|
||||
###############################################################################
|
||||
###############################################################################
|
||||
#
|
||||
# CONTACT TEMPLATES
|
||||
#
|
||||
###############################################################################
|
||||
###############################################################################
|
||||
|
||||
# Generic contact definition template - This is NOT a real contact, just a template!
|
||||
{% for contact in templates.contacts %}
|
||||
define contact{
|
||||
{% for key, value in contact.items() %}
|
||||
{{ key }} {{ value }}
|
||||
{% endfor %}
|
||||
}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{% if templates.hosts is defined %}
|
||||
###############################################################################
|
||||
###############################################################################
|
||||
#
|
||||
# HOSTS TEMPLATES
|
||||
#
|
||||
###############################################################################
|
||||
###############################################################################
|
||||
|
||||
# Generic host definition template - This is NOT a real host, just a template!
|
||||
{% for host in templates.hosts %}
|
||||
define host{
|
||||
{% for key, value in host.items() %}
|
||||
{{ key }} {{ value }}
|
||||
{% endfor %}
|
||||
}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{% if templates.contacts is defined %}
|
||||
###############################################################################
|
||||
###############################################################################
|
||||
#
|
||||
# SERVICE TEMPLATES
|
||||
#
|
||||
###############################################################################
|
||||
###############################################################################
|
||||
|
||||
# Generic service definition template - This is NOT a real service, just a template!
|
||||
{% for service in templates.services %}
|
||||
define service{
|
||||
{% for key, value in service.items() %}
|
||||
{{ key }} {{ value }}
|
||||
{% endfor %}
|
||||
}
|
||||
{% endfor %}
|
||||
{% endif %}
|
32
templates/timeperiods.cfg.j2
Normal file
32
templates/timeperiods.cfg.j2
Normal file
|
@ -0,0 +1,32 @@
|
|||
###############################################################################
|
||||
# ATTENTION!!! FILE MANAGED BY ANSIBLE ROLE NAGIOS
|
||||
# TIMEPERIODS.CFG - SAMPLE TIMEPERIOD DEFINITIONS
|
||||
#
|
||||
#
|
||||
# NOTES: This config file provides you with some example timeperiod definitions
|
||||
# that you can reference in host, service, contact, and dependency
|
||||
# definitions.
|
||||
#
|
||||
# You don't need to keep timeperiods in a separate file from your other
|
||||
# object definitions. This has been done just to make things easier to
|
||||
# understand.
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
|
||||
|
||||
###############################################################################
|
||||
###############################################################################
|
||||
#
|
||||
# TIME PERIODS
|
||||
#
|
||||
###############################################################################
|
||||
###############################################################################
|
||||
{% if timeperiods is defined %}{% for period in timeperiods %}
|
||||
define timeperiod{
|
||||
{% for key, value in period.items() %}
|
||||
{{ key }} {{ value }}
|
||||
{% endfor %}
|
||||
}
|
||||
{% endfor %}{% endif %}
|
||||
|
Loading…
Reference in a new issue