Ajout : vm_hosted : rule_nsd3_configure .
authorJulien Moutinho <julm+burette@autogeree.net>
Tue, 26 Mar 2013 16:02:52 +0000 (17:02 +0100)
committerJulien Moutinho <julm+burette@autogeree.net>
Tue, 26 Mar 2013 18:23:37 +0000 (19:23 +0100)
etc/nsd3/nsd.conf [new file with mode: 0644]
etc/nsd3/zone.d/heureux-cyclage.org.conf [new file with mode: 0644]
etc/nsd3/zone.d/heureux-cyclage.org.zone.m4 [new file with mode: 0644]
vm_hosted

diff --git a/etc/nsd3/nsd.conf b/etc/nsd3/nsd.conf
new file mode 100644 (file)
index 0000000..1c83a0b
--- /dev/null
@@ -0,0 +1,28 @@
+# chroot: "/etc/nsd3"
+database: "/var/lib/nsd3/nsd.db"
+# debug-mode: no
+# difffile: "/var/lib/nsd3/ixfr.db"
+hide-version: yes
+# identify the server (CH TXT ID.SERVER entry).
+# identity: "unidentified server"
+# ip6-only: no
+ipv4-edns-size: 4096
+# ipv6-edns-size: 4096
+# logfile: "/var/log/nsd.log"
+# nsid: "aabbccdd"
+pidfile: "/run/nsd3.pid"
+port: 53
+rrl-ratelimit: 200
+rrl-size: 1000000
+rrl-whitelist-ratelimit: 2000
+server-count: 1
+statistics: 3600
+tcp-count: 10
+tcp-query-count: 0
+tcp-timeout: 120
+username: nsd
+verbosity: 2
+# xfrd-reload-timeout: 10
+# xfrdfile: "/var/lib/nsd3/xfrd.state"
+zone-stats-file: "/var/log/nsd.stats"
+zonesdir: "/etc/nsd3"
diff --git a/etc/nsd3/zone.d/heureux-cyclage.org.conf b/etc/nsd3/zone.d/heureux-cyclage.org.conf
new file mode 100644 (file)
index 0000000..a785e19
--- /dev/null
@@ -0,0 +1,2 @@
+
+# vim: ft=sh
diff --git a/etc/nsd3/zone.d/heureux-cyclage.org.zone.m4 b/etc/nsd3/zone.d/heureux-cyclage.org.zone.m4
new file mode 100644 (file)
index 0000000..f61d990
--- /dev/null
@@ -0,0 +1,81 @@
+divert(-1)
+dnl changecom(`;')
+
+* outils
+define(`ALIAS', `define($1`_IP4', $2`'_IP4)')
+define(`MAKE_GETTER', `define(`$1', $`'1`_'$`'0)')
+MAKE_GETTER(`NAME')
+MAKE_GETTER(`IP4')
+define(`FQDN', `NAME($1).ZONE_DOMAIN')
+
+* ATELIERS
+define(`ATELIERS_NAME', `ateliers')
+define(`ATELIERS_IP4', `IP4(VM)')
+define(`ATELIERS_NS_NAME', `ns')
+ALIAS(`ATELIERS_NS', `ATELIERS')
+define(`ATELIERS_MX_NAME', `mx')
+ALIAS(`ATELIERS_MX', `ATELIERS')
+
+divert(0)dnl
+; vim: ft=bindzone
+
+$TTL 1d ; TTL (Time To Live) par défaut pour les enregistrements
+
+; ENREGISTREMENT « SOA » (Start Of Authority).
+@ SOA NAME(ATELIERS_NS) hostmaster (
+       ZONE_SERIAL ; Serial number.
+       1d ; Refresh.
+       15m ; Retry.
+       2592000 ; Expire.
+       1d ; TTL (Time To Live) minimum.
+ )
+
+; ENREGISTREMENTS « A » (DNS -> adresse IPv4)
+NAME(ATELIERS) A IP4(ATELIERS)
+
+@          A IP4(ATELIERS)
+git        A IP4(ATELIERS)
+imap       A IP4(ATELIERS_MX)
+mail       A IP4(ATELIERS_MX)
+mx         A IP4(ATELIERS_MX)
+ns         A IP4(ATELIERS_NS)
+remorque   A IP4(ATELIERS)
+smtp       A IP4(ATELIERS_MX)
+submission A IP4(ATELIERS_MX)
+www        A IP4(ATELIERS)
+
+; ENREGISTREMENTS « CNAME » (Canonical NAME)
+; NOTE : l'utilisation de CNAME n'est judicieuse que si la ressource pointée
+; n'est pas sous notre contrôle. Par exemple,
+; foo.example.org. CNAME foo.example.com.
+; Dans le cas contraire, le seul résultat est un traffic réseau accru,
+; et l'emploi de macros est préférable.
+; ```You keep using CNAME records. I do not think they mean what you think they mean.'''
+
+; ENREGISTREMENTS « MX » (Mail eXchange)
+; NOTE : le reverse et le forward associés au nom donné à un enregistrement MX
+; devraient correspondre. Certains antispams le vérifient, et certains (rares) admins
+; bloquent même au niveau de la session SMTP si il ne correspond pas.
+@ MX 10 NAME(ATELIERS_MX)
+
+; ENREGISTREMENTS « NS » (Name Server)
+@ NS NAME(ATELIERS_NS)
+
+; ENREGISTREMENTS "PTR" (IPv* -> name)
+; NOTE : Dans le cas d’hébergement massif de domaines virtuels derrière une même adresse IP,
+;        il est recommandé de ne pas appliquer sans discernement la règle un enregistrement PTR
+;        par enregistrement A (ou AAAA) : le nombre des champs PTR à renvoyer pouvant faire dépasser
+;        à la réponse la taille des paquets UDP et entraîner l’utilisation du protocole TCP
+;        (plus coûteux en resources) pour envoyer la réponse à la requête DNS ;
+;        cf. section "4.4 Usage and deployment considerations" du document :
+;        http://tools.ietf.org/html/draft-ietf-dnsop-reverse-mapping-considerations
+
+; ENREGISTREMENTS "SPF" (Sender Policy Framework)
+@ 3600 IN SPF "v=spf1 mx -all"
+@ 3600 IN TXT "v=spf1 mx -all"
+
+; ENREGISTREMENTS « SRV » (SeRVice)
+_git._tcp.git 18000 IN SRV 0 0 9418 git
+
+; ENREGISTREMENTS « SSHFP » (Secure SHell FingerPrint)
+esyscmd(sudo ssh-keygen -r $(hostname))
index 11dd8bb..91ec25a 100755 (executable)
--- a/vm_hosted
+++ b/vm_hosted
@@ -780,34 +780,6 @@ rule_network_configure () {
                    pre-down  ip address delete $vm_ipv4/32 dev \$IFACE
                EOF
  }
-rule_www_configure () {
-       rule adduser www \
-        --disabled-login \
-        --disabled-password \
-        --group \
-        --home /home/www \
-        --shell /bin/false \
-        --system
-       rule adduser log-www \
-        --disabled-login \
-        --disabled-password \
-        --group \
-        --home /home/www/log \
-        --shell /bin/false \
-        --system
-       #sudo adduser www www-data
-       sudo adduser www log-www
-       #sudo adduser log log-www
-       usermod --home /home/www/pub www-data
-       sudo install -d -m 751 -o www -g www \
-        /home/www
-       sudo install -d -m 750 -o www -g www \
-        /home/www/etc
-       sudo install -d -m 1771 -o www-data -g www-data \
-        /home/www/pub
-       sudo install -d -m 1771 -o log-www -g log-www \
-        /home/www/log
- }
 rule_nginx_configure () {
        local -; set +f
        rule apt_get_install nginx
@@ -889,6 +861,48 @@ rule_nginx_configure () {
                #       de leurs groupes supplémentaires.
        sudo service nginx restart
  }
+rule_nsd3_configure () { # NOTE: DNS autoritaire uniquement
+       local -; set +f
+       rule apt_get_install nsd m4
+       sudo rm -rf \
+        /etc/nsd3/zone.d
+       sudo install -d -m 750 -o root -g nsd \
+        /etc/nsd3/zone.d
+       {
+               cat <<-EOF
+                       server:
+                               ip-address: $vm_ipv4
+                               ip4-only: yes
+                       EOF
+               cat "$tool"/etc/nsd3/nsd.conf
+               local conf
+               for conf in "$tool"/etc/nsd3/zone.d/*.conf
+                do conf=${conf#"$tool"/etc/nsd3/zone.d/}
+                       local domain=${conf%.conf}
+                       if test -e "$tool"/etc/nsd3/zone.d/"$domain".zone.m4
+                        then m4 \
+                                --define=ZONE_DOMAIN=$domain \
+                                --define=ZONE_SERIAL=$(cd "$tool" && git log -1 --format="%ct" -- etc/nsd3/zone.d/"$domain".zone.m4) \
+                                --define=VM_IP4=$vm_ipv4 \
+                                       "$tool"/etc/nsd3/zone.d/"$domain".zone.m4
+                        else cat "$tool"/etc/nsd3/zone.d/"$domain".zone
+                        fi |
+                       sudo install -m 440 -o root -g nsd /dev/stdin \
+                        /etc/nsd3/zone.d/"$domain".zone
+                       sudo install -m 440 -o root -g nsd \
+                        "$tool"/etc/nsd3/zone.d/"$conf" \
+                               /etc/nsd3/zone.d/"$conf"
+                       cat <<-EOF
+                               zone:
+                                       name: $domain
+                                       zonefile: /etc/nsd3/zone.d/$domain.zone
+                               EOF
+                done
+       } |
+       sudo install -m 640 -o root -g nsd /dev/stdin \
+        /etc/nsd3/nsd.conf
+       sudo service nsd3 restart
+ }
 rule_php5_fpm_configure () {
        local -; set +f
        rule apt_get_install \
@@ -1395,6 +1409,34 @@ rule_user_root_configure () {
         do sudo gpg --import "$key"
         done
  }
+rule_www_configure () {
+       rule adduser www \
+        --disabled-login \
+        --disabled-password \
+        --group \
+        --home /home/www \
+        --shell /bin/false \
+        --system
+       rule adduser log-www \
+        --disabled-login \
+        --disabled-password \
+        --group \
+        --home /home/www/log \
+        --shell /bin/false \
+        --system
+       #sudo adduser www www-data
+       sudo adduser www log-www
+       #sudo adduser log log-www
+       usermod --home /home/www/pub www-data
+       sudo install -d -m 751 -o www -g www \
+        /home/www
+       sudo install -d -m 750 -o www -g www \
+        /home/www/etc
+       sudo install -d -m 1771 -o www-data -g www-data \
+        /home/www/pub
+       sudo install -d -m 1771 -o log-www -g log-www \
+        /home/www/log
+ }
 rule_configure () {
        rule apt_configure
        rule git_configure
@@ -1415,6 +1457,7 @@ rule_configure () {
        rule php5_fpm_configure
        rule nginx_configure
        #rule apache2_configure
+       rule nsd3_configure
        rule runit_configure
  }