Ajout : lib/log.sh .
[lhc/ateliers.git] / vm_hosted
index 925f1a9..ebb930d 100755 (executable)
--- a/vm_hosted
+++ b/vm_hosted
@@ -3,7 +3,6 @@ set -e -f ${DRY_RUN:+-n} -u
 tool=${0%/*}
 . "$tool"/lib/functions.sh
 . "$tool"/etc/vm.sh
-test "$(hostname --fqdn)" = "$vm_fqdn"
 
 rule_help () {
        cat >&2 <<-EOF
@@ -40,7 +39,7 @@ rule__etckeeper_init () {
                GIT_COMMIT_OPTIONS=""
                AVOID_DAILY_AUTOCOMMITS=1
                #AVOID_SPECIAL_FILE_WARNING=1
-               #AVOID_COMMIT_BEFORE_INSTALL=1
+               AVOID_COMMIT_BEFORE_INSTALL=1
                HIGHLEVEL_PACKAGE_MANAGER=apt
                LOWLEVEL_PACKAGE_MANAGER=dpkg
                EOF
@@ -70,7 +69,7 @@ rule__network_init () {
                    network   $vm_ipv4
                    broadcast $vm_ipv4
                    netmask   255.255.255.255
-                   mtu 1300 # TODO: voir si c'est nécessaire à Lyon
+                   #mtu 1300
                    post-up   ip address add    $vm_ipv4/32 dev \$IFACE
                    pre-down  ip address delete $vm_ipv4/32 dev \$IFACE
                EOF
@@ -80,7 +79,7 @@ rule__apt_init () {
                deb http://ftp.fr.debian.org/debian $vm_lsb_name main contrib non-free
                EOF
        mk_reg mod= own= /etc/apt/sources.list.d/$vm_lsb_name-backports.list <<-EOF
-               deb http://backports.debian.org/debian-backports $vm_lsb_name-backports main contrib non-free
+               #deb http://backports.debian.org/debian-backports $vm_lsb_name-backports main contrib non-free
                EOF
        mk_reg mod= own= /etc/apt/preferences <<-EOF
                Package: *
@@ -183,17 +182,17 @@ rule__login_init () {
                HUSHLOGIN_FILE   .hushlogin
                ENV_SUPATH       PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
                ENV_PATH         PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
-               # NOTE: met les sbin/ dans ENV_PATH ;
-               #  - ça n'apporte aucune protection de ne pas les mettre ;
-               #  - ça frustre de ne pas les trouver.
+                # NOTE: met les sbin/ dans ENV_PATH ;
+                #  - ça n'apporte aucune protection de ne pas les mettre ;
+                #  - ça frustre de ne pas les trouver.
                TTYGROUP         tty
                TTYPERM          0600
                ERASECHAR        0177
                KILLCHAR         025
-               # NOTE: rwxrwx--- ;
-               #  - donne une même confiance au groupe propriétaire qu'au propriétaire ;
-               #  - facilite l'utilisation des ACL, qui sont dépendantes des droits du groupe propriétaire.
                UMASK            007
+                # NOTE: rwxrwx--- ;
+                #  - donne une même confiance au groupe propriétaire qu'au propriétaire ;
+                #  - facilite l'utilisation des ACL, qui sont dépendantes des droits du groupe propriétaire.
                PASS_MAX_DAYS    99999
                PASS_MIN_DAYS    0
                PASS_WARN_AGE    7
@@ -220,16 +219,19 @@ rule__user_root_init () {
        mk_lnk etc/gpg /root/.gnupg
        mk_lnk etc/ssh /root/.ssh
        getent group sudo |
-       while IFS=: read -r group x x users
-        do while IFS=, read -r user
-                do eval local home\; home="~$user"
-                       cat "$home"/etc/ssh/authorized_keys
-                done <<-EOF
+       while test -n "$users" && IFS=: read -r group x x users
+        do while IFS=, read -r user users <<-EOF
                        $users
                        EOF
+                do eval local home\; home="~$user"
+                       cat "$home"/etc/ssh/authorized_keys
+                done
         done |
        mk_reg mod=640 own=root:root /root/etc/ssh/authorized_keys
-       sudo find "$tool"/var/pub/openpgp -type f -name '*.key' -exec gpg --import {} \;
+       local key
+       for key in "$tool"/var/pub/openpgp/*.key
+        do sudo gpg --import "$key"
+        done
  }
 rule__initramfs_init () {
        mk_reg mod=644 own=root:root /etc/initramfs-tools/initramfs.conf <<-EOF
@@ -262,9 +264,6 @@ rule__initramfs_init () {
         /etc/initramfs-tools/etc/dropbear/dropbear_dss_host_key.pub \
         /etc/initramfs-tools/etc/dropbear/dropbear_rsa_host_key \
         /etc/initramfs-tools/etc/dropbear/dropbear_rsa_host_key.pub
-       #mk_reg mod=640 own=root:root </dev/null \
-       # /etc/initramfs-tools/etc/dropbear/dropbear_dss_host_key \
-       # /etc/initramfs-tools/etc/dropbear/dropbear_dss_host_key.pub
        ssh-keygen -F "init.$vm_fqdn" -f "$tool"/etc/openssh/known_hosts |
        ( while IFS= read -r line
         do case $line in (*" RSA") return 0; break;; esac
@@ -282,12 +281,12 @@ rule__initramfs_init () {
         /etc/initramfs-tools/root/.ssh
        getent group sudo |
        while IFS=: read -r group x x users
-        do while IFS=, read -r user
-                do eval local home\; home="~$user"
-                       cat "$home"/etc/ssh/authorized_keys
-                done <<-EOF
+        do while test -n "$users" && IFS=, read -r user users <<-EOF
                        $users
                        EOF
+                do eval local home\; home="~$user"
+                       cat "$home"/etc/ssh/authorized_keys
+                done
         done |
        mk_reg mod=644 own=root:root /etc/initramfs-tools/root/.ssh/authorized_keys
        sudo rm -f \
@@ -317,6 +316,25 @@ rule__boot_init () {
        sudo update-grub2 # NOTE: prend en compte /boot/grub/device.map
        rule__initramfs_init
  }
+rule_apticron_init () {
+       sudo apt-get install --reinstall apticron
+       mk_reg mod=644 own=root:root /etc/default/grub <<-EOF
+               EMAIL="admin@heureux-cyclage.org"
+               # DIFF_ONLY="1"
+               # LISTCHANGES_PROFILE="apticron"
+               # ALL_FQDNS="1"
+               # SYSTEM="foobar.example.com"
+               # IPADDRESSNUM="1"
+               # IPADDRESSES="192.0.2.1 2001:db8:1:2:3::1"
+               # NOTIFY_HOLDS="0"
+               # NOTIFY_NEW="0"
+               # NOTIFY_NO_UPDATES="0"
+               # CUSTOM_SUBJECT=""
+               # CUSTOM_NO_UPDATES_SUBJECT=""
+               # CUSTOM_FROM="root@ateliers.heureux-cyclage.org"
+               EOF
+       sudo service apticron restart
+ }
 rule__bin_init () {
        mk_lnk "$tool"/vm_hosted /usr/local/sbin/
  }
@@ -428,10 +446,14 @@ rule_user_admin_add () { # SYNTAX: $user
                # NOTE: le mot-de-passe doit être initialisé par l'utilisateur à l'aide de passwd-init .
        eval local home\; home="~$user"
        sudo adduser "$user" sudo
-       ssh_key_add user=$user "$tool"/var/pub/ssh/"$user".key "$home"/etc/ssh/authorized_keys
+       mk_reg mod=640 own=$user:$user "$home"/etc/ssh/authorized_keys \
+        <"$tool"/var/pub/ssh/"$user".key
        rule__initramfs_init
        rule__user_root_init
-       sudo gpg --import "$tool"/var/pub/opengpg/"$user".key
+       local key; local -; set +f
+       for key in "$tool"/var/pub/openpgp/*.key
+        do sudo -u "$user" gpg --import "$key"
+        done
  }
 rule_user_mail_format () {
        mk_dir mod=770 own=root:adm /etc/skel/etc/procmail
@@ -800,5 +822,12 @@ rule_mail_install () {
 
 rule=${1:-help}
 ${1+shift}
-set "${TRACE:+-x}"
+case $rule in
+ (help);;
+ (*)
+       test "$(hostname --fqdn)" = "$vm_fqdn" ||
+       error 1 "mauvaise machine"
+       ${TRACE:+set -x}
+       ;;
+ esac
 rule_$rule "$@"