Le fichier zones_crans est dorenavantgere par cfengine

darcs-hash:20070509125836-9e428-915964fd108acd440a8e2126e15ac0fbe1e5a7ee.gz
This commit is contained in:
bobot 2007-05-09 14:58:36 +02:00
parent 727c6a4ba3
commit 59469b06de

View file

@ -29,24 +29,29 @@ la base LDAP
### Fichiers à écrire
# Répertoire d'écriture des fichiers de zone
DNS_DIR='/etc/bind/generated/' # Avec un / à la fin
DNS_DIR = '/etc/bind/generated/' # Avec un / à la fin
# Fichier de définition des zones pour le maître
DNS_CONF=DNS_DIR + 'zones_crans'
DNS_CONF = DNS_DIR + 'zones_crans'
# Fichier de définition des zones pour les esclaves géré par cfengine
DNS_CONF_CFENGINE = "/etc/cfengine/files/etc/bind/generated/zones_crans.esclave"
### Sur quelles zones on a autorité ?
## En cas de modification de ces zones penser à regéner le fichier de
## zone des esclaves (python /usr/scripts/gestion/gen_confs/bind.py)
## zone des esclaves (sur le serveur principal de cfengine : python /usr/scripts/gestion/gen_confs/bind.py puis lancer cfrun)
# Résolution directe
zones_direct = [ 'crans.org' , 'crans.ens-cachan.fr', 'wifi.crans.org' , 'ferme.crans.org' , 'clubs.ens-cachan.fr', 'adm.crans.org' ]
# Résolution inverse
zones_reverse = [ '138.231.136.0/21', '138.231.144.0/24', '138.231.148.0/22' ]
### Liste DNS
# Le premier est doit être le maitre
# Le premier doit être le maitre
DNSs = [ 'rouge.crans.org' , 'sila.crans.org' , 'freebox.crans.org' ]
DNSs_private = ['vert.adm.crans.org']
ip_master_DNS = "138.231.136.3"
### Liste des délégations de zone
# Pour les demandes des ces zones, le DNS dira d'aller voir les serveurs listés ici
# Pour les demandes de ces zones, le DNS dira d'aller voir les serveurs listés ici
# Pour les noms des serveurs on met l'IP sans point ou le nom avec un point
DELEG = { 'tv.crans.org' : ['rouge.crans.org.' , 'sila.crans.org.' , 'freebox.crans.org.', 'mouton.ferme.crans.org.'] }
@ -74,12 +79,12 @@ zone "%(NOM_zone)s" {
file "%(FICHIER_zone)s";
};
"""
# Syntaxe utilisée dans le fichier DNS_CONF pour définir une zone sur le maître
# Syntaxe utilisée dans le fichier DNS_CONF_CFENFINE pour définir une zone sur un esclave
zone_template_slave="""
zone "%(NOM_zone)s" {
type slave;
file "%(FICHIER_zone)s";
masters { 138.231.136.3; };
masters { %(ip_master_DNS)s; };
};
"""
@ -112,10 +117,11 @@ zone "%(NOM_zone)s" {
n[2] += 1
# Ecriture
fd = self._open_conf(self.DNS_CONF,'//')
fd = self._open_conf(self.DNS_CONF_CFENGINE,'//')
for zone in zones :
fd.write(self.zone_template_slave % { 'NOM_zone' : zone,
'FICHIER_zone' : self.DNS_DIR + 'db.' + zone })
'FICHIER_zone' : self.DNS_DIR + 'db.' + zone,
'ip_master_DNS': self.ip_master_DNS})
fd.close()
@ -255,9 +261,21 @@ zone "%(NOM_zone)s" {
if __name__ == '__main__' :
from socket import gethostname
if gethostname().split(".")[0] == 'rouge' :
print "Ce serveur est maître !, utiliser generate."
else :
print "Reconfiguration de bind en esclave (penser à le relancer)."
from config import cfengine_main
def short_name(fullhostname):
return fullhostname.split(".")[0]
hostname = short_name(gethostname())
if hostname == short_name(cfengine_main):
print "Reconfiguration du fichier de cfengine pour configurer le bind d'un serveur en esclave (pensez à lancer cfrun)."
c = dns()
c.gen_slave()
if hostname == short_name(dns.DNSs[0]):
print "Ce serveur est également serveur maitre, mais la reconfiguration du DNS maitre se fait par generate."
elif hostname == short_name(dns.DNSs[0]):
print "Ce serveur est maître ! Utilisez generate."
elif hostname in map(lambda fullhostname : short_name(fullhostname),dns.DNSs[1:]+dns.DNSs_private):
print "Ce serveur est esclave! Lancez le sur %s, puis lancez cfrun" % cfengine_main
else:
print "Ce serveur ne correspond à rien pour la configuration DNS."