Création automatique de zones BIND et virtual host

Bonjour

Pour mon serveur Web, j’ai plusieurs sites Internet… et donc aussi des alldom. Ca fait beaucoup de création… Si on doit faire ca manuellement… ca peut prendre des heures…
Ces scripts doivent être adaptés à votre utilisation. Les “sleep” ne sont pas utiles. Je les utilise car ayant une centaine de domaines… j’ai besoin d’avoir le temps de voir que tout s’est bien passé.

Donc voici les scripts à créer dans votre [mono]/home/user[/mono] :

Fichier [mono]liste_domaines[/mono] qui contiendra la liste de vos domaines… :

site_one.tld
site_two.tld[/code]

[mono]script_zone_bind.sh[/mono] qui contiendra les zones BIND9 :

[code]#!/bin/sh

rougefonce='\e[0;31m'
vertfonce='\e[0;32m'
neutre='\e[0;m'

#Fonction de test d'erreur
gestion_retour() {
	if [ $1 -eq 0 ]; then
		echo -e "${vertfonce}[OK]${neutre} $2"
	else
		echo -e "${rougefonce}[ERREUR]${neutre} $2"
	fi
}

#Chemin de la liste des noms de domaine
LISTE_DOMAIN_NAME="/home/user/liste_domaines" 
#Chemin où seront situées les zones dans BIND (/etc/bind)
PATH_ZONE_BIND="/etc/bind"
#Date inscrite dans les zones (date du jour du lancement du script)
DATE_ZONE="2015090301"
####

echo " "

#Création des fichiers de zone
for i in `cat $LISTE_DOMAIN_NAME`; 
do 
echo ";
; BIND data file for local loopback interface
;
$TTL 12H
$ORIGIN $i.
@	IN	SOA	ns1.domaine.tld. contact.domaine.tld. (
		     $DATE_ZONE		; Serial
			 604800		; Refresh
			  86400		; Retry
			2419200		; Expire
			 604800 )	; Negative Cache TTL
;
@	IN	NS	ns1.domaine.tld.
@	IN	NS	ns2.domainetld
@	IN	MX	10	mail.domaine.tld.
@	IN	A	IP_SERVEUR
ns1	IN	A	IP_SERVEUR
mail	IN	A	IP_SERVEUR
*	IN	A	IP_SERVEUR
www	IN	CNAME	$i.
ftp	IN	CNAME	$i." > ${PATH_ZONE_BIND}/db.$i;

	if [ -f ${PATH_ZONE_BIND}/db.$i ]
	then
		echo -e "${vertfonce}[OK]${neutre} Le fichier \"db.$i\" a bien été créé";
	else
		echo -e "${rougefonce}[ERREUR]${neutre} Le fichier \"db.$i\" n'a pas été créé";
	fi

	sleep 2;

done


sleep 4;

#Redémarrage du service BIND9
/etc/init.d/bind9 reload

gestion_retour $? "Redémarrage du service BIND9"

#Vérification des fichiers de zone
for i in `cat $LISTE_DOMAIN_NAME`; 
do 
	echo " "
	echo "--------------- $i ------------------------"
	echo " "

	named-checkzone $i /etc/bind/db.$i
	gestion_retour $? "Check du fichier db.\"$i\""


	echo " "

	nslookup $i. ns1.domaine.tld

	gestion_retour $? "nslookup du domaine \"$i\""

	echo " "

	nslookup IP_SERVEUR $i

	gestion_retour $? "Reverse du domaine \"$i\""

	sleep 7;

done[/code]

Bon, a changer selon vos besoins.

Ensuite, créations de nos virtual hosts (apache) [mono]script_zone_apache.sh[/mono] (virtual host a changer selon vos besoins !!!) :

[code]#!/bin/sh

rougefonce='\e[0;31m'
vertfonce='\e[0;32m'
neutre='\e[0;m'

#Fonction de test d'erreur
gestion_retour() {
	if [ $1 -eq 0 ]; then
		echo -e "${vertfonce}[OK]${neutre} $2"
	else
		echo -e "${rougefonce}[ERREUR]${neutre} $2"
	fi
}
 
#Chemin de la liste des noms de domaine
LISTE_DOMAIN_NAME="/home/user/liste_domaines" 
#Chemin où seront situées les zones dans Apache2 (/etc/apache2/sites-available)
PATH_ZONE_APACHE="/etc/apache2/sites-available"
####

echo " "
	
#Création des fichiers de zone
for i in `cat $LISTE_DOMAIN_NAME`; 
do 
echo "
<VirtualHost *:80>
ServerAdmin contact@domaine.tld
ServerName $i
ServerAlias *.$i
DocumentRoot /var/www/votre_chemin/
<Directory /var/www/$votre_chemin>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerSignature Off
</VirtualHost> 
" > ${PATH_ZONE_APACHE}/$i.conf;

fi

	if [ -f ${PATH_ZONE_APACHE}/$i.conf ]
	then
		echo -e "${vertfonce}[OK]${neutre} Le fichier \"$i.conf\" a bien été créé";
	else
		echo -e "${rougefonce}[ERREUR]${neutre} Le fichier \"$i.conf\" n'a pas été créé";
	fi

	sleep 2;
done

	sleep 4;

#Vérification des fichiers de zone
for i in `cat $LISTE_DOMAIN_NAME`; 
do 
	echo " "
	echo "--------------- $i ------------------------"
	echo " "

	a2ensite $i

	gestion_retour $? "Création du virtual host \"$i\""

	sleep 4;

done

echo " "

service apache2 restart
service apache2 reload

gestion_retour $? "Redémarrage de Apache2"

J’espère ne pas avoir fait d’erreur en éditant. (mes fichiers étaient fait selon la configuration de mes sites, en écrivant ce message j’ai supprimé l’indentation, et certaines choses propre à mes sites …)