X-Git-Url: https://git.cyclocoop.org/?a=blobdiff_plain;f=vm_hosted;h=4ae72230cdfe9c721e1ce5f00c7dd0969a3978d7;hb=5c42a4d606c3fb4de3420b220d45077b08f13a40;hp=b9275fa05a2ba53560d5a983e115236c5d785294;hpb=5ce6d51b9c15b2e316d60fad4ecfa1ea1b32bf7b;p=lhc%2Fateliers.git diff --git a/vm_hosted b/vm_hosted index b9275fa..4ae7223 100755 --- a/vm_hosted +++ b/vm_hosted @@ -8,7 +8,6 @@ tool=${tool%/*} . "$tool"/lib/rule.sh . "$tool"/etc/vm.sh export TRACE=1 -cd / rule_help () { # SYNTAX: [--hidden] local hidden; [ ${1:+set} ] || hidden=set @@ -61,10 +60,16 @@ rule_adduser () { sudo adduser "$@" "$user" } rule_apt_get_install () { # SYNTAX: $package - sudo DEBIAN_FRONTEND=noninteractive apt-get install --yes "$@" + sudo \ + DEBIAN_FRONTEND=noninteractive \ + DEBIAN_PRIORITY=low \ + apt-get install --yes "$@" } rule_dpkg_reconfigure () { # SYNTAX: $package - sudo DEBIAN_FRONTEND=noninteractive dpkg-reconfigure "$@" + sudo \ + DEBIAN_FRONTEND=noninteractive \ + DEBIAN_PRIORITY=low \ + dpkg-reconfigure "$@" } rule__chrooted_configure () { # NOTE: est-ce bien utile à un moment ? @@ -243,16 +248,16 @@ rule_apache2_configure () { # XXX: cette règle n'est pas testée/mise-à-jour sudo service apache2 restart } rule_apt_configure () { - sudo install -m 660 -o root -g root /dev/stdin /etc/apt/sources.list <<-EOF + sudo install -m 664 -o root -g root /dev/stdin /etc/apt/sources.list <<-EOF deb http://ftp.rezopole.net/debian $vm_lsb_name main EOF - sudo install -m 660 -o root -g root /dev/stdin /etc/apt/sources.list.d/$vm_lsb_name-backports.list <<-EOF + sudo install -m 664 -o root -g root /dev/stdin /etc/apt/sources.list.d/$vm_lsb_name-backports.list <<-EOF deb http://ftp.rezopole.net/debian $vm_lsb_name-backports main EOF - sudo install -m 660 -o root -g root /dev/stdin /etc/apt/sources.list.d/openerp.list <<-EOF + sudo install -m 664 -o root -g root /dev/stdin /etc/apt/sources.list.d/openerp.list <<-EOF deb http://nightly.openerp.com/7.0/nightly/deb/ ./ EOF - sudo install -m 660 -o root -g root /dev/stdin /etc/apt/preferences <<-EOF + sudo install -m 664 -o root -g root /dev/stdin /etc/apt/preferences <<-EOF Package: * Pin: release a=$vm_lsb_name Pin-Priority: 200 @@ -552,26 +557,49 @@ rule_network_configure () { sudo install -m 640 -o root -g root /dev/stdin \ /etc/network/interfaces } -rule_runit_configure () { # SYNTAX: $sv +rule_runit_configure () { # SYNTAX: $sv [...] -- $configure_options rule apt_get_install runit - local -; set +f - sudo find /etc/sv -mindepth 1 -maxdepth 1 -type d -name "${1:-*}" -exec \ - /bin/sh -efux -c 'case $(sv stop "$1") in - (*": runsv not running") true;; - (*": unable to open supervise/ok: file does not exist") true;; - ("ok: down:"*) true;; - (*) false;; - esac' '' {} + - for sv in ${1-"$tool"/etc/sv/*} - do sv=${sv##*/} - rule runit_sv_configure "$sv" - rule runit_sv_start "$sv" - done - #sleep 3 - #sudo find -L /etc/service -type l -delete + if test $# = 0 + then + set +x + sudo sv status \ + $(sudo find /etc/sv \ + -mindepth 1 -maxdepth 1 -type d \ + -printf '%p\n' | sort) + else + local services= + while [ $# -gt 0 ] + do case $1 in + (--) shift; break;; + (*) services="$services $1"; shift;; + esac + done + #for sv in $(sudo find /etc/sv \ + # -mindepth 1 -maxdepth 1 -type d \ + # -false $(printf -- '-or -name %s\n' $services) \ + # -printf '%f\n') + # do + # case $(sudo sv stop "$sv" | tee /dev/stderr) in + # (*": runsv not running") true;; + # (*": unable to open supervise/ok: file does not exist") true;; + # ("ok: down:"*) true;; + # (*) false;; + # esac + # done + for sv in $(find "$tool"/etc/sv \ + -mindepth 1 -maxdepth 1 -type d \ + -false $(printf -- '-or -name %s\n' $services) \ + -printf '%f\n') + do + rule _runit_sv_configure "$sv" "$@" + rule _runit_sv_start "$sv" + done + #sleep 3 + #sudo find -L /etc/service -type l -delete + fi } -rule_runit_sv_configure () { # SYNTAX: $sv - local sv="$1" +rule__runit_sv_configure () { # SYNTAX: $sv $configure_options + local sv="$1"; shift sudo install -d -m 770 -o root -g root \ /etc/sv/"$sv" sudo install -m 770 -o root -g root \ @@ -587,30 +615,32 @@ rule_runit_sv_configure () { # SYNTAX: $sv fi ( test ! -r "$tool"/etc/sv/"$sv"/configure.sh || - . "$tool"/etc/sv/"$sv"/configure.sh + . "$tool"/etc/sv/"$sv"/configure.sh || return 1 + ) + ( test ! -r "$tool"/etc/sv/"$sv"/log/configure.sh || - . "$tool"/etc/sv/"$sv"/log/configure.sh + . "$tool"/etc/sv/"$sv"/log/configure.sh || return 1 ) sudo ln -fns \ ../sv/"$sv" \ /etc/service/"$sv" } -rule_runit_sv_restart () { # SYNTAX: $sv +rule__runit_sv_restart () { # SYNTAX: $sv local sv="$1" while true - do case $(sudo sv restart "$sv") in - ("fail: $sv: runsv not running") sleep 1;; - ("warning: $sv: unable to open supervise/ok: file does not exists") sleep 1;; + do case $(sudo sv restart "$sv" | tee /dev/stderr) in + (*": runsv not running") sleep 1;; + (*": unable to open supervise/ok: file does not exist") sleep 1;; (*) break;; esac done } -rule_runit_sv_start () { # SYNTAX: $sv +rule__runit_sv_start () { # SYNTAX: $sv local sv="$1" while true - do case $(sudo sv start "$sv") in - ("fail: $sv: runsv not running") sleep 1;; - ("warning: $sv: unable to open supervise/ok: file does not exists") sleep 1;; + do case $(sudo sv start "$sv" | tee /dev/stderr) in + (*": runsv not running") sleep 1;; + (*": unable to open supervise/ok: file does not exist") sleep 1;; (*) break;; esac done @@ -745,6 +775,9 @@ rule_user_configure () { sudo install -m 644 -o root -g root \ "$tool"/etc/bash.bashrc \ /etc/bash.bashrc + sudo install -m 644 -o root -g root \ + "$tool"/etc/inputrc \ + /etc/inputrc sudo install -m 644 -o root -g root \ "$tool"/etc/screenrc \ /etc/screenrc @@ -752,7 +785,9 @@ rule_user_configure () { for sh in "$tool"/etc/user.d/*/configure.sh do sh=${sh#"$tool"/etc/user.d/} local user="${sh%/configure.sh}" - . "$tool"/etc/user.d/"$sh" + ( + . "$tool"/etc/user.d/"$sh" || return 1 + ) done } rule_user_admin_add () { # SYNTAX: $user @@ -796,7 +831,7 @@ rule_user_root_configure () { do sudo gpg --import "$key" done } -rule_www_configure () { +rule__www_configure () { rule adduser www \ --disabled-login \ --disabled-password \ @@ -853,6 +888,7 @@ case $rule in (help);; (*) assert 'test "$(hostname --fqdn)" = "$vm_fqdn"' vm_fqdn + cd / ;; esac rule $rule "$@"