rwoinst: ajouter l'option -w qui peut être spécifiée en parallèle de -h pour déployer les resources web vers un serveur différent
This commit is contained in:
parent
9e4ccaef00
commit
f20cc48176
117
rwoinst
117
rwoinst
|
@ -16,9 +16,8 @@ OPTIONS
|
|||
un /tmp minuscule de 16 Mo.
|
||||
-S, --ssh SSH
|
||||
Spécifier le programme à utiliser pour la connection par ssh.
|
||||
-h, --host hosts
|
||||
-h, --host @hostsfile
|
||||
-H host
|
||||
-h, -H, --host hosts
|
||||
-h, -H, --host @hostsfile
|
||||
Spécifier un ou plusieurs hôtes sur lequels faire le déploiement. Pour
|
||||
spécifier plusieurs hôtes, il est possible d'utiliser plusieurs fois
|
||||
l'option -h, ou spécifier en une seule fois plusieurs hôtes en les
|
||||
|
@ -31,6 +30,17 @@ OPTIONS
|
|||
user@host, e.g -h user@host
|
||||
La forme @hostsfile permet de lire la liste des hôtes depuis le fichier
|
||||
hostsfile, à raison d'un hôte par ligne.
|
||||
-w, -W, --whost host[:htdocs]
|
||||
Comme --host, mais pour le déploiement des resources web. Contrairement
|
||||
à --host, un seul hôte peut être spécifié par occurence de l'option,
|
||||
pour permettre de spécifier éventuellement le répertoire vers lequel
|
||||
copier les resources web. Ainsi, les deux commandes suivantes sont
|
||||
équivalentes:
|
||||
rwoinst -h host.tld -- -W HTDOCSDIR=HTDOCSBASE/wo
|
||||
rwoinst -w host.tld:HTDOCSBASE/wo
|
||||
Il est possible de spécifier en une seule invocation --host et --whost
|
||||
pour déployer l'application sur un hôte et les resources web sur un
|
||||
autre.
|
||||
--deploy
|
||||
--no-deploy
|
||||
Autoriser (respectivement interdire) l'utilisation de la configuration
|
||||
|
@ -106,10 +116,49 @@ function fix_hosts() {
|
|||
array_map hosts __dot_is_localhost
|
||||
}
|
||||
|
||||
function deploy_to() {
|
||||
local archive="$1" host="$2" tmproot="$3"
|
||||
shift; shift; shift
|
||||
|
||||
local r=
|
||||
if [ "$host" == "localhost" ]; then
|
||||
etitle "Sur l'hôte local"
|
||||
"$archive" ${tmproot:+--tmproot "$tmproot"} -- "$@" || r=1
|
||||
eend
|
||||
else
|
||||
local user
|
||||
local archivename="$(basename "$archive")"
|
||||
|
||||
splituserhost "$host" user host
|
||||
[ -n "$user" ] || user=root
|
||||
|
||||
# sur l'hôte distant, ne rendre non interactif qu'à partir de -yy
|
||||
rinteraction=$__interaction
|
||||
[ $rinteraction -lt 2 ] && rinteraction=$(($rinteraction + 1))
|
||||
|
||||
etitle "Vers $user@$host"
|
||||
estep "Copie de l'archive"
|
||||
scp -S "$SSH" "$archive" "$user@$host:" || r=1
|
||||
if [ -z "$r" ]; then
|
||||
estep "Lancement du script de déploiement"
|
||||
"$SSH" -qt "$user@$host" "\
|
||||
__interaction=$rinteraction
|
||||
__estack=$(qval "$__estack")
|
||||
__tlevel=$(qval "$__tlevel")
|
||||
export __interaction __estack __tlevel
|
||||
${UTOOLS_LANG:+UTOOLS_LANG='$UTOOLS_LANG'; export UTOOLS_LANG
|
||||
}$(qvals "./$archivename" ${tmproot:+--tmproot "$tmproot"} -- MYHOST="$host" "$@")" || r=1
|
||||
fi
|
||||
eend
|
||||
fi
|
||||
return ${r:-0}
|
||||
}
|
||||
|
||||
action=deploy
|
||||
tmproot=
|
||||
SSH=
|
||||
hosts=()
|
||||
whosts=()
|
||||
deploy_enable=1
|
||||
deploy_confname=rwoinst
|
||||
parse_opts "${PRETTYOPTS[@]}" \
|
||||
|
@ -117,6 +166,7 @@ parse_opts "${PRETTYOPTS[@]}" \
|
|||
-T:,--tmproot: tmproot= \
|
||||
-S:,--ssh: SSH= \
|
||||
-h:,-H:,--host: hosts \
|
||||
-w:,-W:,--whost: whosts \
|
||||
--deploy deploy_enable=1 \
|
||||
--no-deploy deploy_enable= \
|
||||
-c:,--deploy-config deploy_confname= \
|
||||
|
@ -165,8 +215,10 @@ array_isempty hosts && read_value "Entrez une liste d'hôtes séparés par ':'"
|
|||
fix_hosts
|
||||
|
||||
## Création de l'archive
|
||||
|
||||
etitle "Création du répertoire de travail"
|
||||
ac_set_tmpdir workdir
|
||||
|
||||
bundles=()
|
||||
while [ -n "$1" ]; do
|
||||
if [ "$1" == "--" ]; then
|
||||
|
@ -202,55 +254,34 @@ while [ -n "$1" ]; do
|
|||
done
|
||||
|
||||
estep "Copie de l'environnement de déploiement"
|
||||
ulibsync "$workdir"
|
||||
echo '#!/bin/sh
|
||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
if . `dirname "$0"`/ulib/ulibsh; then
|
||||
urequire DEFAULTS woinst
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
OENC="$UTF8"
|
||||
woinst "$@"' >"$workdir/woinst"
|
||||
chmod +x "$workdir/woinst"
|
||||
mkdir -p "$workdir/lib"
|
||||
ulibsync "$workdir/lib"
|
||||
cp "$scriptdir/woinst.sh" "$workdir"
|
||||
chmod +x "$workdir/woinst.sh"
|
||||
|
||||
eend
|
||||
|
||||
etitle "Création de l'archive pour le déploiement"
|
||||
ac_set_tmpfile archive
|
||||
archivename="$(basename "$archive")"
|
||||
|
||||
etitle "Création de l'archive pour le déploiement" \
|
||||
"$scriptdir/mkusfx" --bare --tmp-archive -o "$archive" "$workdir" -- ./woinst --is-tmpdir "${bundles[@]}" || die
|
||||
"$scriptdir/mkusfx" --bare --tmp-archive -o "$archive" "$workdir" -- ./woinst.sh --is-tmpdir "${bundles[@]}" || die
|
||||
|
||||
eend
|
||||
|
||||
## Déploiement
|
||||
|
||||
# sur l'hôte distant, ne rendre interactif qu'à partir de -yy
|
||||
rinteraction=$__interaction
|
||||
[ $rinteraction -lt 2 ] && rinteraction=$(($rinteraction + 1))
|
||||
|
||||
etitle "Déploiement des bundles"
|
||||
for host in "${hosts[@]}"; do
|
||||
if [ "$host" == "localhost" ]; then
|
||||
etitle "Déploiement sur l'hôte local" \
|
||||
"$archive" ${tmproot:+--tmproot "$tmproot"} -- "$@"
|
||||
else
|
||||
if [[ "$host" == *@* ]]; then
|
||||
user="${host%%@*}"
|
||||
host="${host#*@}"
|
||||
else
|
||||
user=root
|
||||
fi
|
||||
deploy_to "$archive" "$host" "$tmproot" "$@" || die
|
||||
done
|
||||
eend
|
||||
|
||||
etitle "Déploiement sur $user@$host"
|
||||
estep "Copie de l'archive"
|
||||
scp -S "$SSH" "$archive" "$user@$host:" || die
|
||||
estep "Lancement du script de déploiement"
|
||||
"$SSH" -qt "$user@$host" "\
|
||||
__interaction=$rinteraction
|
||||
__estack=$(qval "$__estack")
|
||||
__tlevel=$(qval "$__tlevel")
|
||||
export __interaction __estack __tlevel
|
||||
${UTOOLS_LANG:+UTOOLS_LANG='$UTOOLS_LANG'; export UTOOLS_LANG
|
||||
}$(qvals "./$archivename" ${tmproot:+--tmproot "$tmproot"} -- MYHOST="$host" "$@")"
|
||||
if [ ${#whosts[*]} -gt 0 ]; then
|
||||
etitle "Déploiement des resources web"
|
||||
for hostdest in "${whosts[@]}"; do
|
||||
splitpair "$hostdest" host destdir
|
||||
deploy_to "$archive" "$host" "$tmproot" \
|
||||
-y -W ${destdir:+HTDOCSDIR="$destdir"} "$@" || die
|
||||
done
|
||||
eend
|
||||
fi
|
||||
done
|
||||
|
|
Loading…
Reference in New Issue