132 lines
3.6 KiB
Django/Jinja
132 lines
3.6 KiB
Django/Jinja
# This file is managed via Ansible
|
|
# Any changes made WILL be overwritten
|
|
|
|
# Templates
|
|
define host {
|
|
name ansible-linux-server
|
|
check_period 24x7
|
|
check_interval 5
|
|
retry_interval 1
|
|
max_check_attempts 10
|
|
check_command check-host-alive
|
|
notification_period 24x7
|
|
notification_interval 120
|
|
hostgroups ansible
|
|
check_period 24x7
|
|
contacts salt
|
|
register 0
|
|
}
|
|
define service {
|
|
use generic-service
|
|
name ansible-generic-service
|
|
max_check_attempts 5
|
|
check_interval 5
|
|
retry_interval 1
|
|
register 0
|
|
}
|
|
|
|
# Contacts
|
|
define contact {
|
|
contact_name salt
|
|
host_notifications_enabled 1
|
|
host_notification_period 24x7
|
|
host_notification_commands notify-host-by-email
|
|
service_notifications_enabled 1
|
|
service_notification_period 24x7
|
|
service_notification_commands notify-service-by-email
|
|
email rehashedsalt@cock.li
|
|
}
|
|
|
|
# Default hostgroup and its checks
|
|
define hostgroup {
|
|
hostgroup_name ansible
|
|
alias Ansible-managed Hosts
|
|
}
|
|
define service {
|
|
use ansible-generic-service
|
|
service_description SSH
|
|
check_command check_ssh
|
|
hostgroup_name ansible
|
|
}
|
|
|
|
# Commands
|
|
# Ain't nobody here but us chickens...
|
|
|
|
# Services for all hosts
|
|
define service {
|
|
use ansible-generic-service
|
|
service_description HTTP
|
|
check_command check_http
|
|
hostgroup_name nagios-checkhttp
|
|
}
|
|
define service {
|
|
use ansible-generic-service
|
|
service_description HTTPS
|
|
check_command check_http!--ssl
|
|
hostgroup_name nagios-checkhttp
|
|
}
|
|
|
|
# Services for SNMP-capable hosts
|
|
define service {
|
|
use ansible-generic-service
|
|
service_description SNMP Check Hostname
|
|
check_command check_snmp!-P 3 -a SHA -x AES -o 1.3.6.1.2.1.1.1.0 -U {{ secret_snmp_rouser_username }} -A {{ secret_snmp_rouser_password }} -X {{ secret_snmp_rouser_privacy_passphrase }} -s $HOSTNAME$ -L authPriv
|
|
hostgroup_name snmp
|
|
}
|
|
|
|
# Manually-defined services for hosts
|
|
# web1.desu.ltd
|
|
{% for site in ["9iron.club","desu.ltd","nc.desu.ltd","git.desu.ltd"] %}
|
|
define service {
|
|
use ansible-generic-service
|
|
service_description HTTPS - {{ site }}
|
|
check_command check_http!--ssl -H {{ site }}
|
|
host_name web1.desu.ltd
|
|
}
|
|
{% endfor %}
|
|
# web2.desu.ltd
|
|
{% for site in ["cowfee.moe","tube.cowfee.moe"] %}
|
|
define service {
|
|
use ansible-generic-service
|
|
service_description HTTPS - {{ site }}
|
|
check_command check_http!--ssl -H {{ site }}
|
|
host_name web2.desu.ltd
|
|
}
|
|
{% endfor %}
|
|
# web3.desu.ltd
|
|
{% for site in ["netbox.desu.ltd","nagios.desu.ltd -e 401"] %}
|
|
define service {
|
|
use ansible-generic-service
|
|
service_description HTTPS - {{ site }}
|
|
check_command check_http!--ssl -H {{ site }}
|
|
host_name web3.desu.ltd
|
|
}
|
|
{% endfor %}
|
|
|
|
# Hostgroups
|
|
# Everything here is dynamically-generated based on tags from Netbox
|
|
{% for tag in query('netbox.netbox.nb_lookup', 'tags', api_endpoint='https://netbox.desu.ltd', token=netbox_token) %}
|
|
define hostgroup {
|
|
hostgroup_name {{ tag.value.slug }}
|
|
alias {{ tag.value.display }}
|
|
}
|
|
{% endfor %}
|
|
|
|
# This list of hosts is dynamically generated based on devices and VMs tagged with "nagios" in Netbox
|
|
{% for host in query('netbox.netbox.nb_lookup', 'devices', api_endpoint='https://netbox.desu.ltd', token=netbox_token) + query('netbox.netbox.nb_lookup', 'virtual-machines', api_endpoint='https://netbox.desu.ltd', token=netbox_token)%}
|
|
{% if host.value.primary_ip %}
|
|
{% for tag in host.value.tags %}
|
|
{% if tag.slug == "nagios" %}
|
|
define host {
|
|
use ansible-linux-server
|
|
host_name {{ host.value.name }}
|
|
alias {{ host.value.display }}
|
|
address {{ host.value.primary_ip.address.split('/',1)[0] }}
|
|
hostgroups ansible{% for tag in host.value.tags %},{{ tag.slug }}{% endfor %}
|
|
|
|
}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endfor %}
|