finaliser le support de .toinst.conf et traiter les options --exclude, --protect et --rsync-option
This commit is contained in:
parent
9d8b32bcd1
commit
fc467cb250
134
toinst
134
toinst
|
@ -66,12 +66,22 @@ OPTIONS
|
||||||
être spécifiés en les séparant par des virgules. Si src est mentionné
|
être spécifiés en les séparant par des virgules. Si src est mentionné
|
||||||
plusieurs fois, e.g src:dest1,src:dest2 alors la webapp src est déployée
|
plusieurs fois, e.g src:dest1,src:dest2 alors la webapp src est déployée
|
||||||
plusieurs fois avec des noms distincts.
|
plusieurs fois avec des noms distincts.
|
||||||
--protect PROTECTS
|
|
||||||
--exclude EXCLUDES
|
--exclude EXCLUDES
|
||||||
--replace-excludes EXCLUDES
|
--replace-excludes EXCLUDES
|
||||||
|
Spécifier un ensemble de fichier à exclure de la source lors du
|
||||||
|
déploiement. La variante --replace-excludes permet de construire la
|
||||||
|
liste des fichiers à exclure depuis zéro. La liste par défaut est:
|
||||||
|
${DEFAULT_EXCLUDES[*]}
|
||||||
|
--protect PROTECTS
|
||||||
|
Spécifier un ensemble de fichier à protéger dans la destination: ils ne
|
||||||
|
sont jamais écrasés par les fichiers sources. Cela permet de gérer des
|
||||||
|
applications qui écrivent des fichiers dans leur répertoire.
|
||||||
--rsync-option RSYNC_OPTIONS
|
--rsync-option RSYNC_OPTIONS
|
||||||
--replace-rsync-options RSYNC_OPTIONS
|
--replace-rsync-options RSYNC_OPTIONS
|
||||||
XXX Options non documentées à implémenter
|
Spécifier les options de rsync à utiliser pour le déploiement. La
|
||||||
|
variante --replace-rsync-options permet de construire la liste des
|
||||||
|
options depuis zéro. La liste par défaut est:
|
||||||
|
${DEFAULT_RSYNC_OPTIONS[*]}
|
||||||
-b, --backup
|
-b, --backup
|
||||||
--no-backup
|
--no-backup
|
||||||
Avant le déploiement du service numérique, faire (resp. ne pas faire)
|
Avant le déploiement du service numérique, faire (resp. ne pas faire)
|
||||||
|
@ -90,6 +100,9 @@ OPTIONS
|
||||||
répertoire courant."
|
répertoire courant."
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEFAULT_EXCLUDES=(/.git/ /.toinst.conf)
|
||||||
|
DEFAULT_RSYNC_OPTIONS=(-rptL --delete)
|
||||||
|
|
||||||
VARS=(
|
VARS=(
|
||||||
TOMCAT_PROFILE
|
TOMCAT_PROFILE
|
||||||
CATALINA_BASE TOMCAT_USER TOMCAT_GROUP TOMCAT_VERSION
|
CATALINA_BASE TOMCAT_USER TOMCAT_GROUP TOMCAT_VERSION
|
||||||
|
@ -97,7 +110,10 @@ VARS=(
|
||||||
BACKUP RESTART
|
BACKUP RESTART
|
||||||
)
|
)
|
||||||
ARRAYS=(
|
ARRAYS=(
|
||||||
WAMAPS PROTECTS EXCLUDES RSYNC_OPTIONS REPLACE_RSYNC_OPTIONS
|
WAMAPS
|
||||||
|
EXCLUDES REPLACE_EXCLUDES
|
||||||
|
PROTECTS
|
||||||
|
RSYNC_OPTIONS REPLACE_RSYNC_OPTIONS
|
||||||
)
|
)
|
||||||
function __reset_vars() {
|
function __reset_vars() {
|
||||||
local var
|
local var
|
||||||
|
@ -111,10 +127,10 @@ function __reset_vars() {
|
||||||
function __dump_vars() {
|
function __dump_vars() {
|
||||||
local var
|
local var
|
||||||
for var in "${VARS[@]}"; do
|
for var in "${VARS[@]}"; do
|
||||||
echo_setv2 "$var"
|
eecho "$(echo_setv2 "$var")"
|
||||||
done
|
done
|
||||||
for var in "${ARRAYS[@]}"; do
|
for var in "${ARRAYS[@]}"; do
|
||||||
echo_seta2 "$var"
|
eecho "$(echo_seta2 "$var")"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -167,30 +183,48 @@ function parse_tomcat_users() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
action=deploy
|
function build_rsync_options() {
|
||||||
parse_tomcat_users=
|
local -a excludes protects; local exclude protect
|
||||||
parse_server=
|
if [ ${#REPLACE_EXCLUDES[*]} -gt 0 ]; then
|
||||||
istmpdir=
|
array_copy excludes REPLACE_EXCLUDES
|
||||||
tmpdir=
|
else
|
||||||
config=
|
array_copy excludes DEFAULT_EXCLUDES
|
||||||
tomcat_profile=
|
fi
|
||||||
catalina_base=
|
array_extend excludes EXCLUDES
|
||||||
tomcat_user=
|
array_copy protects PROTECTS
|
||||||
tomcat_group=
|
if [ ${#REPLACE_RSYNC_OPTIONS[*]} -gt 0 ]; then
|
||||||
tomcat_version=
|
array_copy rsync_options REPLACE_RSYNC_OPTIONS
|
||||||
manager_url=
|
else
|
||||||
manager_user=
|
array_copy rsync_options DEFAULT_RSYNC_OPTIONS
|
||||||
manager_password=
|
fi
|
||||||
wamaps=()
|
array_extend rsync_options RSYNC_OPTIONS
|
||||||
protects=()
|
|
||||||
excludes=()
|
local toinstconf="$1/.toinst.conf"
|
||||||
rsync_options=(-rptL --delete --exclude /.git/)
|
if [ -f "$toinstconf" ]; then
|
||||||
replace_rsync_options=()
|
eval "$(
|
||||||
backup=
|
EXCLUDES=()
|
||||||
restart=
|
PROTECTS=()
|
||||||
fake=
|
RSYNC_OPTIONS=()
|
||||||
args=(
|
source "$toinstconf"
|
||||||
|
array_extend excludes EXCLUDES
|
||||||
|
array_extend protects PROTECTS
|
||||||
|
array_extend rsync_options RSYNC_OPTIONS
|
||||||
|
echo_seta2 excludes
|
||||||
|
echo_seta2 protects
|
||||||
|
echo_seta2 rsync_options
|
||||||
|
)"
|
||||||
|
fi
|
||||||
|
for exclude in "${excludes[@]}"; do
|
||||||
|
array_add rsync_options --exclude "$exclude"
|
||||||
|
done
|
||||||
|
for protect in "${PROTECTS[@]}"; do
|
||||||
|
array_add rsync_options -f "P $protect"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
args=(%
|
||||||
--help '$exit_with display_help'
|
--help '$exit_with display_help'
|
||||||
|
--config-template action=config-template
|
||||||
--private-parse-server '$action=parse; parse_server=1'
|
--private-parse-server '$action=parse; parse_server=1'
|
||||||
--private-parse-tomcat-users '$action=parse; parse_tomcat_users=1'
|
--private-parse-tomcat-users '$action=parse; parse_tomcat_users=1'
|
||||||
--is-tmpdir '$istmpdir=1; tmpdir=.'
|
--is-tmpdir '$istmpdir=1; tmpdir=.'
|
||||||
|
@ -204,6 +238,11 @@ args=(
|
||||||
-u:,--user: manager_user=
|
-u:,--user: manager_user=
|
||||||
-p:,--password: manager_password=
|
-p:,--password: manager_password=
|
||||||
-m:,--wamap: wamaps
|
-m:,--wamap: wamaps
|
||||||
|
--exclude: excludes
|
||||||
|
--replace-excludes: replace_excludes
|
||||||
|
--protect: protects
|
||||||
|
--rsync-option: rsync_options
|
||||||
|
--replace-rsync-options: replace_rsync_options
|
||||||
-b,--backup backup=1
|
-b,--backup backup=1
|
||||||
--no-backup backup=0
|
--no-backup backup=0
|
||||||
-B,--backup-only action=backup
|
-B,--backup-only action=backup
|
||||||
|
@ -211,10 +250,11 @@ args=(
|
||||||
-n,--no-restart restart=0
|
-n,--no-restart restart=0
|
||||||
-r,--restart-only action=restart
|
-r,--restart-only action=restart
|
||||||
--fake fake=1
|
--fake fake=1
|
||||||
--config-template action=config-template
|
|
||||||
)
|
)
|
||||||
parse_args "$@"; set -- "${args[@]}"
|
parse_args "$@"; set -- "${args[@]}"
|
||||||
|
|
||||||
|
[ -n "$action" ] || action=deploy
|
||||||
|
|
||||||
if [ "$action" == parse ]; then
|
if [ "$action" == parse ]; then
|
||||||
CATALINA_BASE="$1"
|
CATALINA_BASE="$1"
|
||||||
TOMCAT_VERSION="$2"
|
TOMCAT_VERSION="$2"
|
||||||
|
@ -372,12 +412,14 @@ fi
|
||||||
# A partir de la liste des webapps et de WAMAPS, construire une liste de couples
|
# A partir de la liste des webapps et de WAMAPS, construire une liste de couples
|
||||||
# waname:src pour la sauvegarde et/ou le déploiement
|
# waname:src pour la sauvegarde et/ou le déploiement
|
||||||
|
|
||||||
[ -n "$fake" -o "$action" == config-template ] && require_webapps= || require_webapps=1
|
[ -n "$fake" -o "$action" == config-template ] && will_deploy= || will_deploy=1
|
||||||
|
|
||||||
if [ $# -eq 0 -a -n "$require_webapps" ]; then
|
if [ $# -eq 0 -a -n "$will_deploy" ]; then
|
||||||
[ -d WEB-INF ] && src=. || src=
|
[ -d WEB-INF ] && src=. || src=
|
||||||
read_value "Veuillez entrer la webapp à déployer" src "$src" O
|
read_value "Veuillez entrer la webapp à déployer" src "$src" O
|
||||||
set -- "$src"
|
set -- "$src"
|
||||||
|
elif [ $# -eq 0 -a "$action" == config-template ]; then
|
||||||
|
[ -d WEB-INF ] && set .
|
||||||
fi
|
fi
|
||||||
|
|
||||||
srcs=()
|
srcs=()
|
||||||
|
@ -400,7 +442,7 @@ for src in "$@"; do
|
||||||
eerror "$src: fichier ou répertoire introuvable"
|
eerror "$src: fichier ou répertoire introuvable"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
[ ${#srcs[*]} -gt 0 -o -z "$require_webapps" ] || die
|
[ ${#srcs[*]} -gt 0 -o -z "$will_deploy" ] || die
|
||||||
|
|
||||||
deploymaps=()
|
deploymaps=()
|
||||||
for src in "${srcs[@]}"; do
|
for src in "${srcs[@]}"; do
|
||||||
|
@ -438,10 +480,13 @@ if [ "$action" == config-template ]; then
|
||||||
echo >"$toinstconf" "# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
echo >"$toinstconf" "# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
# Fichiers à exclure de la source lors du déploiement
|
# Fichiers à exclure de la source lors du déploiement
|
||||||
#$(echo_seta2 EXCLUDES)
|
#EXCLUDES=()
|
||||||
|
|
||||||
# Fichiers à protéger dans la destination lors du déploiement
|
# Fichiers à protéger dans la destination lors du déploiement
|
||||||
#$(echo_seta2 PROTECTS)"
|
#PROTECTS=()
|
||||||
|
|
||||||
|
# Options supplémentaires de rsync à utiliser pour le déploiement
|
||||||
|
#RSYNC_OPTIONS=()"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
exit 0
|
exit 0
|
||||||
|
@ -458,7 +503,7 @@ fi
|
||||||
|
|
||||||
## Déploiement
|
## Déploiement
|
||||||
if [ "$action" == deploy ]; then
|
if [ "$action" == deploy ]; then
|
||||||
[ -n "$CATALINA_BASE" -o -n "$fake" ] || die "Vous devez spécifier l'option --catalina-base"
|
[ -n "$CATALINA_BASE" -o -z "$will_deploy" ] || die "Vous devez spécifier l'option --catalina-base"
|
||||||
|
|
||||||
if [ -n "$fake" ]; then
|
if [ -n "$fake" ]; then
|
||||||
# Afficher ce qu'il faut faire
|
# Afficher ce qu'il faut faire
|
||||||
|
@ -469,7 +514,21 @@ if [ "$action" == deploy ]; then
|
||||||
setx srcname=basename -- "$src"
|
setx srcname=basename -- "$src"
|
||||||
dest="${CATALINA_BASE:-CATALINA_BASE}/webapps/$waname"
|
dest="${CATALINA_BASE:-CATALINA_BASE}/webapps/$waname"
|
||||||
etitle "$waname"
|
etitle "$waname"
|
||||||
evalx qvals rsync "${RSYNC_OPTIONS[@]}" "$src/" "$dest" // eecho
|
if [ -f "$src/.toinst.conf" ]; then
|
||||||
|
etitle "Variables locales"
|
||||||
|
(
|
||||||
|
EXCLUDES=()
|
||||||
|
PROTECTS=()
|
||||||
|
RSYNC_OPTIONS=()
|
||||||
|
source "$src/.toinst.conf"
|
||||||
|
for var in EXCLUDES PROTECTS RSYNC_OPTIONS; do
|
||||||
|
eecho "$(echo_seta2 "$var")"
|
||||||
|
done
|
||||||
|
)
|
||||||
|
eend
|
||||||
|
fi
|
||||||
|
build_rsync_options "$src"
|
||||||
|
evalx qvals rsync "${rsync_options[@]}" "$src/" "$dest" // eecho
|
||||||
evalx qvals chmod -R u=rwX,g=rX,o=rX "$dest" // eecho
|
evalx qvals chmod -R u=rwX,g=rX,o=rX "$dest" // eecho
|
||||||
if [ -n "$TOMCAT_USER" ]; then
|
if [ -n "$TOMCAT_USER" ]; then
|
||||||
evalx qvals chown -R "$TOMCAT_USER:$TOMCAT_GROUP" "$dest" // eecho
|
evalx qvals chown -R "$TOMCAT_USER:$TOMCAT_GROUP" "$dest" // eecho
|
||||||
|
@ -505,7 +564,8 @@ if [ "$action" == deploy ]; then
|
||||||
etitle "$srcname"
|
etitle "$srcname"
|
||||||
estepi "Déploiement vers $dest"
|
estepi "Déploiement vers $dest"
|
||||||
estep "Copie des fichiers"
|
estep "Copie des fichiers"
|
||||||
if ! rsync "${RSYNC_OPTIONS[@]}" "$src/" "$dest"; then
|
build_rsync_options "$src"
|
||||||
|
if ! rsync "${rsync_options[@]}" "$src/" "$dest"; then
|
||||||
eerror "Une erreur s'est produite pendant la copie des fichiers"
|
eerror "Une erreur s'est produite pendant la copie des fichiers"
|
||||||
else
|
else
|
||||||
error=
|
error=
|
||||||
|
|
Loading…
Reference in New Issue