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 ### Fichiers à écrire
# Répertoire d'écriture des fichiers de zone # 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 # 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é ? ### Sur quelles zones on a autorité ?
## En cas de modification de ces zones penser à regéner le fichier de ## 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 # Résolution directe
zones_direct = [ 'crans.org' , 'crans.ens-cachan.fr', 'wifi.crans.org' , 'ferme.crans.org' , 'clubs.ens-cachan.fr', 'adm.crans.org' ] zones_direct = [ 'crans.org' , 'crans.ens-cachan.fr', 'wifi.crans.org' , 'ferme.crans.org' , 'clubs.ens-cachan.fr', 'adm.crans.org' ]
# Résolution inverse # Résolution inverse
zones_reverse = [ '138.231.136.0/21', '138.231.144.0/24', '138.231.148.0/22' ] zones_reverse = [ '138.231.136.0/21', '138.231.144.0/24', '138.231.148.0/22' ]
### Liste DNS ### 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 = [ '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 ### 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 # 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.'] } 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"; 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_template_slave="""
zone "%(NOM_zone)s" { zone "%(NOM_zone)s" {
type slave; type slave;
file "%(FICHIER_zone)s"; 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 n[2] += 1
# Ecriture # Ecriture
fd = self._open_conf(self.DNS_CONF,'//') fd = self._open_conf(self.DNS_CONF_CFENGINE,'//')
for zone in zones : for zone in zones :
fd.write(self.zone_template_slave % { 'NOM_zone' : zone, 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() fd.close()
@ -255,9 +261,21 @@ zone "%(NOM_zone)s" {
if __name__ == '__main__' : if __name__ == '__main__' :
from socket import gethostname from socket import gethostname
if gethostname().split(".")[0] == 'rouge' : from config import cfengine_main
print "Ce serveur est maître !, utiliser generate." def short_name(fullhostname):
else : return fullhostname.split(".")[0]
print "Reconfiguration de bind en esclave (penser à le relancer)." 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 = dns()
c.gen_slave() 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."