crans_bcfg2/Python/etc/munin/munin-node.conf
Daniel STAN 696fd6a0b6 munin-node: allow by regex for ipv4
Parce que c'est quand-même plus propre avec des cidr, donc on le fait pour les
ipv6, au moins. Malheureusement, un bug dans munin/un plugin netaddr de Perl
rend l'usage des cidr ipv4 et ipv6 simultanés buggés.
Cf: https://bugs.debian.org/cgi-bin/bugreport.cgi?msg=20;bug=645292

Source vers la fonction de conversion cidr ipv4 -> regex:
https://chris-lamb.co.uk/posts/matching-ips-regexes-concidrd-harmful
2014-02-13 23:06:25 +01:00

78 lines
2.2 KiB
Python

# -*- coding: utf-8; mode: python -*-
import sys
include("ip")
if '/usr/scripts/' not in sys.path:
sys.path.append('/usr/scripts/')
from gestion import config
info["owner"] = "root"
info["group"] = "root"
# Remplacement du nom d'hôte pour les hôtes particuliers
# (deprecated)
munin_hostname = {
"canard": "canard.ferme.crans.org",
"jouvence": "poulet.ferme.crans.org",
"lapin": "lapin.ferme.crans.org",
"dindon": "dindon.ferme.crans.org",
"mdr": "vache.ferme.crans.org",
"oie": "oie.ferme.crans.org",
}.get(hostname, pubhostname)
header("""
Fichier de configuration de Munin-Node.
Pour des informations détaillées, consulter
http://munin.projects.linpro.no/wiki/munin-node.conf
""")
@# Fichier PID, configuration du démon
@pid_file /var/run/munin/munin-node.pid
@background 1
@setsid yes
@setseid 1
@
@# Port sur lequel se binder. On s'ouvre sur toutes les interfaces, le tri se fait plus bas
@host *
@port 4949
@
@# Utilisateur sous lequel tourne le démon munin-node
@user root
@group root
@
@# Fichiers à ignorer
@ignore_file ~$
@ignore_file \.bak$
@ignore_file %$
@ignore_file \.dpkg-(tmp|new|old|dist)$
@
@# Nom d'hôte reporté au serveur munin
print "host_name %s" % munin_hostname
@
@# Attention: allow_cidr ne peut être utilisé à la fois avec des IPv4 et IPv6
@# (merci munin et debian). Comme c'est vachement mieux d'utiliser des cidr
@# plutôt que des regexp, on utilise les regexp uniquement pour les IPv4
@# utilisant une fonction de conversion et la directive allow.
def allow(cidr):
"""On fait des regex pour les IPv4 uniquement. Retirer ce kludge
quand cidr_allow sera supporté pour les deux types d'IPs.
Cf https://bugs.debian.org/cgi-bin/bugreport.cgi?msg=20;bug=645292"""
if ':' in cidr:
print "cidr_allow " + cidr
else:
print "allow " + cidr_to_regex(cidr)
if not has("users"):
@# On autorise tout adm et localhost
allow('127.0.0.0/8')
allow('::1/128')
for net in config.NETs['adm'] + config.prefix['adm']:
allow(net)
else:
@# On autorise seulement le serveur munin
for ip in ips_of_metadata(metadata.query.by_profiles(['munin-server'])):
allow(ip + (128 if ':' in ip else 32))