#!/bin/sh
set -e -f ${DRY_RUN:+-n} -u
tool=${0%/*}
-. "$tool"/lib/functions.sh
+. "$tool"/lib/rule.sh
. "$tool"/etc/vm.sh
+. "$tool"/lib/mk.sh
rule_help () { # SYNTAX: [--hidden]
local hidden; [ ${1:+set} ] || hidden=set
)
}
+rule_apt_get_install () { # SYNTAX: $package
+ case $(dpkg -s "$1" | grep '^Status: ') in
+ ("Status: install ok installed");;
+ (*)
+ test ! -x /usr/bin/etckeeper ||
+ assert 'sudo etckeeper unclean'
+ sudo apt-get "$@";;
+ esac
+ }
+
rule__chrooted_configure () { # NOTE: est-ce bien utile à un moment ?
export LANG=C
export LC_CTYPE=C
EOF
}
rule_apticron_configure () {
- sudo apt-get install --reinstall apticron
+ rule apt_get_install apticron
mk_reg mod=644 own=root:root /etc/apticron/apticron.conf <<-EOF
EMAIL="admin@heureux-cyclage.org"
# DIFF_ONLY="1"
# CUSTOM_NO_UPDATES_SUBJECT=""
# CUSTOM_FROM="root@ateliers.heureux-cyclage.org"
EOF
- sudo service apticron restart
}
rule_boot_configure () {
- sudo apt-get install --reinstall grub-pc # XXX: attention à n'installer GRUB sur AUCUN disque proposé !
+ warn "attention à n'installer GRUB sur AUCUN disque proposé !"
+ rule apt_get_install grub-pc
mk_dir mod=644 own=root:root /boot/grub
- sudo apt-get install --reinstall linux-image-$vm_arch
+ rule apt_get_install linux-image-$vm_arch
mk_reg mod=644 own=root:root /etc/default/grub <<-EOF
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
HIGHLEVEL_PACKAGE_MANAGER=apt
LOWLEVEL_PACKAGE_MANAGER=dpkg
EOF
+ rule apt_get_install etckeeper
}
rule_filesystem_configure () {
mk_reg mod=644 own=root:root /etc/fstab <<-EOF
sudo sed -e '/^configure_networking /s/ &$//' \
-i /usr/share/initramfs-tools/scripts/init-premount/dropbear
# NOTE: corrige une vermine : dropbear doit attendre que le réseau soit configuré..
- sudo rm -f \
- /etc/initramfs-tools/etc/dropbear/dropbear_dss_host_key \
- /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
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
done; return 1 ) ||
+ {
+ sudo rm -f \
+ /etc/initramfs-tools/etc/dropbear/dropbear_rsa_host_key \
+ /etc/initramfs-tools/etc/dropbear/dropbear_rsa_host_key.pub
sudo dropbearkey -t rsa -s 4096 -f \
/etc/initramfs-tools/etc/dropbear/dropbear_rsa_host_key
- ssh-keygen -F "init.$vm_fqdn" -f "$tool"/etc/openssh/known_hosts |
- ( while IFS= read -r line
- do case $line in (*" DSA") return 0; break;; esac
- done; return 1 ) ||
- sudo dropbearkey -t dss -s 1024 -f \
- /etc/initramfs-tools/etc/dropbear/dropbear_dss_host_key
+ }
+ # NOTE: ne se préoccupe pas de dropbear_dss_host_key ; Debian la génère et l'utilise néamoins.
mk_dir mod=640 own=root:root \
/etc/initramfs-tools/root \
/etc/initramfs-tools/root/.ssh
network $vm_ipv4
broadcast $vm_ipv4
netmask 255.255.255.255
- #mtu 1300
+ mtu 1300
+ # NOTE: il y a besoin de ça en l'état actuel du réseau de Grenode
+ # car la MTU des tunnels GRE/IPsec entre les routeurs de Grenode l'impose.
+ #
+ # root@ateliers:~# ping -M do -c 1 -s \$((1500-20-8-200)) soupirail.grenode.net
+ # PING soupirail.grenode.net (91.216.110.1) 1272(1300) bytes of data.
+ # 1280 bytes from soupirail.grenode.net (91.216.110.1): icmp_req=1 ttl=63 time=18.0 ms
+ #
+ # --- soupirail.grenode.net ping statistics ---
+ # 1 packets transmitted, 1 received, 0% packet loss, time 0ms
+ # rtt min/avg/max/mdev = 18.027/18.027/18.027/0.000 ms
+ # root@ateliers:~# ping -M do -c 1 -s \$((1500-20-8-200+1)) soupirail.grenode.net
+ # PING soupirail.grenode.net (91.216.110.1) 1273(1301) bytes of data.
+ # From estran.grenode.net (91.216.110.6) icmp_seq=1 Frag needed and DF set (mtu = 1300)
+ #
+ # --- soupirail.grenode.net ping statistics ---
+ # 0 packets transmitted, 0 received, +1 errors
post-up ip address add $vm_ipv4/32 dev \$IFACE
pre-down ip address delete $vm_ipv4/32 dev \$IFACE
EOF
done
done |
mk_reg mod=640 own=root:root /root/etc/ssh/authorized_keys
- local key
+ local key; local -; set +f
for key in "$tool"/var/pub/openpgp/*.key
do sudo gpg --import "$key"
done
rule login_configure
rule user_root_configure
rule boot_configure
+ rule apticron_configure
rule bin_configure
}
-rule_disk_key_change () {
+rule_luks_key_change () {
sudo cryptsetup luksChangeKey /dev/$vm_lvm_vg/${vm_lvm_lv}_root
}
+rule_user_admin_configure () {
+ rule initramfs_configure
+ rule user_root_configure
+ }
rule_user_admin_add () { # SYNTAX: $user
local user=$1
id "$user" >/dev/null ||
sudo adduser "$user" sudo
mk_reg mod=640 own=$user:$user "$home"/etc/ssh/authorized_keys \
<"$tool"/var/pub/ssh/"$user".key
- rule initramfs_configure
- rule user_root_configure
local key; local -; set +f
for key in "$tool"/var/pub/openpgp/*.key
do sudo -u "$user" gpg --import "$key"
done
+ rule user_admin_configure
}
rule_user_mail_format () {
mk_dir mod=770 own=root:adm /etc/skel/etc/procmail