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