X-Git-Url: https://git.cyclocoop.org/?a=blobdiff_plain;f=vm_hosted;h=9743830488a48aa776f4e38b85070f509e83636e;hb=e80dbf50a89c0b84174e566b85af9593410becfb;hp=46aa6af1bfa1ea2bb020c23ee529af9a6a81c6fa;hpb=a79f9f3838b98f9b06fa492a2bbd902658ff223d;p=lhc%2Fateliers.git diff --git a/vm_hosted b/vm_hosted index 46aa6af..9743830 100755 --- a/vm_hosted +++ b/vm_hosted @@ -7,6 +7,7 @@ while test -L "$tool" tool=${tool%/*} . "$tool"/lib/rule.sh . "$tool"/etc/vm.sh +export TRACE=1 rule_help () { # SYNTAX: [--hidden] local hidden; [ ${1:+set} ] || hidden=set @@ -35,6 +36,16 @@ rule_git_configure () { tool=$(cd "$tool"; cd -) sudo ln -fns "$tool"/vm_hosted /usr/local/sbin/ sudo ln -fns "$tool"/vm_hosted /usr/local/sbin/vm + sudo install -m 770 /dev/stdin .git/hooks/post-update <<-EOF + #!/bin/sh -efux + case \$1 in + (refs/remotes/master) + cd .. + git --git-dir=\$PWD/.git checkout -f -B master remotes/master + git --git-dir=\$PWD/.git clean -f -d -x + ;; + esac + EOF ) } rule_git_reset () { @@ -208,7 +219,7 @@ rule_apache2_configure () { /etc/apache2/site.d/"$site" \ /home/www/etc/apache2/"$site" test -e /home/www/pub/"$site" || - sudo install -d -m 770 -o www."$site" -g www."$site" \ + sudo install -d -m 2770 -o www."$site" -g www."$site" \ /home/www/pub/"$site" getent passwd www."$site" >/dev/null || sudo adduser \ @@ -589,7 +600,7 @@ rule_gitolite_configure () { rmdir "$home"/etc/gitolite/"$d" done rule apt_get_install gitweb highlight - #sudo sv restart spawn-fcgi.git.80.git.heureux-cyclage.org + #sudo sv restart fcgi.git.80.git.heureux-cyclage.org #sudo sv restart git-daemon.git.9418 } rule_locales_configure () { @@ -711,9 +722,11 @@ rule_mysql_configure () { sudo install -m 644 -o root -g root \ "$tool"/etc/mysql/my.cnf \ /etc/mysql/my.cnf - sudo install -d -m 750 -o mysql -g mysql \ - /home/mysql - sudo service mysql restart + if test ! -d /home/mysql; then + sudo install -d -m 750 -o mysql -g mysql \ + /home/mysql + sudo -u mysql mysql_install_db --no-defaults --datadir=/home/mysql/ + fi } rule_network_configure () { sudo install -m 644 -o root -g root /dev/stdin /etc/hostname <<-EOF @@ -783,7 +796,7 @@ rule_www_configure () { 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 \ + /home/www/pub sudo install -d -m 1771 -o log.www -g log.www \ /home/www/log } @@ -1024,6 +1037,7 @@ rule_postfix_configure () { abuse: root admin: root contact: root + mailer-daemon: root postmaster: root root: $(getent group sudo | cut -f 4 -d : | tr , ' ') EOF @@ -1104,10 +1118,20 @@ rule_procmail_configure () { rule_runit_configure () { rule apt_get_install runit local -; set +f - rm -f /etc/service/* - # NOTE: runsvdir éteindra les services qui n'apparaîtront plus ici. - for sv in "$tool"/etc/sv/* - do sv=${sv#"$tool"/etc/sv/} + for sv in ${1-/etc/service/*} + # NOTE: stoppe les services en retenant leur status de départ + do sv=$(basename "$sv") + local sv_hash=$(printf %s "$sv" | sha1sum | cut -f 1 -d ' ') + local sv_status + IFS= read -r sv_status_$sv_hash <<-EOF + $(sv status "$sv") + EOF + rm -f /etc/service/"$sv" + done + for sv in ${1-"$tool"/etc/sv/*} + # NOTE: configure et (re-)démarre les services + do sv=$(basename "$sv") + local sv_hash=$(printf %s "$sv" | sha1sum | cut -f 1 -d ' ') sudo install -d -m 770 -o root -g root \ /etc/sv/"$sv" sudo install -m 770 -o root -g root \ @@ -1121,12 +1145,14 @@ rule_runit_configure () { "$tool"/etc/sv/"$sv"/log/run \ /etc/sv/"$sv"/log/run fi - if test ! -x "$tool"/etc/sv/"$sv"/configure || - "$tool"/etc/sv/"$sv"/configure - then - ln -fns ../sv/"$sv" /etc/service/"$sv" - sv restart "$sv" - fi + test ! -x "$tool"/etc/sv/"$sv"/configure || + "$tool"/etc/sv/"$sv"/configure + ln -fns ../sv/"$sv" /etc/service/"$sv" + eval local sv_status=\"\${sv_status_$sv_hash-}\" + case $sv_status in + ("") sv start "$sv";; + (run:*) sv restart "$sv";; + esac done } rule_ssh_configure () {