diff --git a/gestion/gen_confs/bind.py b/gestion/gen_confs/bind.py index b9f3ed36..925a6ae6 100755 --- a/gestion/gen_confs/bind.py +++ b/gestion/gen_confs/bind.py @@ -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." + +