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é
|
||||
plusieurs fois, e.g src:dest1,src:dest2 alors la webapp src est déployée
|
||||
plusieurs fois avec des noms distincts.
|
||||
--protect PROTECTS
|
||||
--exclude 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
|
||||
--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
|
||||
--no-backup
|
||||
Avant le déploiement du service numérique, faire (resp. ne pas faire)
|
||||
|
@ -90,6 +100,9 @@ OPTIONS
|
|||
répertoire courant."
|
||||
}
|
||||
|
||||
DEFAULT_EXCLUDES=(/.git/ /.toinst.conf)
|
||||
DEFAULT_RSYNC_OPTIONS=(-rptL --delete)
|
||||
|
||||
VARS=(
|
||||
TOMCAT_PROFILE
|
||||
CATALINA_BASE TOMCAT_USER TOMCAT_GROUP TOMCAT_VERSION
|
||||
|
@ -97,7 +110,10 @@ VARS=(
|
|||
BACKUP RESTART
|
||||
)
|
||||
ARRAYS=(
|
||||
WAMAPS PROTECTS EXCLUDES RSYNC_OPTIONS REPLACE_RSYNC_OPTIONS
|
||||
WAMAPS
|
||||
EXCLUDES REPLACE_EXCLUDES
|
||||
PROTECTS
|
||||
RSYNC_OPTIONS REPLACE_RSYNC_OPTIONS
|
||||
)
|
||||
function __reset_vars() {
|
||||
local var
|
||||
|
@ -111,10 +127,10 @@ function __reset_vars() {
|
|||
function __dump_vars() {
|
||||
local var
|
||||
for var in "${VARS[@]}"; do
|
||||
echo_setv2 "$var"
|
||||
eecho "$(echo_setv2 "$var")"
|
||||
done
|
||||
for var in "${ARRAYS[@]}"; do
|
||||
echo_seta2 "$var"
|
||||
eecho "$(echo_seta2 "$var")"
|
||||
done
|
||||
}
|
||||
|
||||
|
@ -167,30 +183,48 @@ function parse_tomcat_users() {
|
|||
fi
|
||||
}
|
||||
|
||||
action=deploy
|
||||
parse_tomcat_users=
|
||||
parse_server=
|
||||
istmpdir=
|
||||
tmpdir=
|
||||
config=
|
||||
tomcat_profile=
|
||||
catalina_base=
|
||||
tomcat_user=
|
||||
tomcat_group=
|
||||
tomcat_version=
|
||||
manager_url=
|
||||
manager_user=
|
||||
manager_password=
|
||||
wamaps=()
|
||||
protects=()
|
||||
excludes=()
|
||||
rsync_options=(-rptL --delete --exclude /.git/)
|
||||
replace_rsync_options=()
|
||||
backup=
|
||||
restart=
|
||||
fake=
|
||||
args=(
|
||||
function build_rsync_options() {
|
||||
local -a excludes protects; local exclude protect
|
||||
if [ ${#REPLACE_EXCLUDES[*]} -gt 0 ]; then
|
||||
array_copy excludes REPLACE_EXCLUDES
|
||||
else
|
||||
array_copy excludes DEFAULT_EXCLUDES
|
||||
fi
|
||||
array_extend excludes EXCLUDES
|
||||
array_copy protects PROTECTS
|
||||
if [ ${#REPLACE_RSYNC_OPTIONS[*]} -gt 0 ]; then
|
||||
array_copy rsync_options REPLACE_RSYNC_OPTIONS
|
||||
else
|
||||
array_copy rsync_options DEFAULT_RSYNC_OPTIONS
|
||||
fi
|
||||
array_extend rsync_options RSYNC_OPTIONS
|
||||
|
||||
local toinstconf="$1/.toinst.conf"
|
||||
if [ -f "$toinstconf" ]; then
|
||||
eval "$(
|
||||
EXCLUDES=()
|
||||
PROTECTS=()
|
||||
RSYNC_OPTIONS=()
|
||||
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'
|
||||
--config-template action=config-template
|
||||
--private-parse-server '$action=parse; parse_server=1'
|
||||
--private-parse-tomcat-users '$action=parse; parse_tomcat_users=1'
|
||||
--is-tmpdir '$istmpdir=1; tmpdir=.'
|
||||
|
@ -204,6 +238,11 @@ args=(
|
|||
-u:,--user: manager_user=
|
||||
-p:,--password: manager_password=
|
||||
-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
|
||||
--no-backup backup=0
|
||||
-B,--backup-only action=backup
|
||||
|
@ -211,10 +250,11 @@ args=(
|
|||
-n,--no-restart restart=0
|
||||
-r,--restart-only action=restart
|
||||
--fake fake=1
|
||||
--config-template action=config-template
|
||||
)
|
||||
parse_args "$@"; set -- "${args[@]}"
|
||||
|
||||
[ -n "$action" ] || action=deploy
|
||||
|
||||
if [ "$action" == parse ]; then
|
||||
CATALINA_BASE="$1"
|
||||
TOMCAT_VERSION="$2"
|
||||
|
@ -372,12 +412,14 @@ fi
|
|||
# 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
|
||||
|
||||
[ -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=
|
||||
read_value "Veuillez entrer la webapp à déployer" src "$src" O
|
||||
set -- "$src"
|
||||
elif [ $# -eq 0 -a "$action" == config-template ]; then
|
||||
[ -d WEB-INF ] && set .
|
||||
fi
|
||||
|
||||
srcs=()
|
||||
|
@ -400,7 +442,7 @@ for src in "$@"; do
|
|||
eerror "$src: fichier ou répertoire introuvable"
|
||||
fi
|
||||
done
|
||||
[ ${#srcs[*]} -gt 0 -o -z "$require_webapps" ] || die
|
||||
[ ${#srcs[*]} -gt 0 -o -z "$will_deploy" ] || die
|
||||
|
||||
deploymaps=()
|
||||
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
|
||||
|
||||
# Fichiers à exclure de la source lors du déploiement
|
||||
#$(echo_seta2 EXCLUDES)
|
||||
#EXCLUDES=()
|
||||
|
||||
# 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
|
||||
done
|
||||
exit 0
|
||||
|
@ -458,7 +503,7 @@ fi
|
|||
|
||||
## Déploiement
|
||||
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
|
||||
# Afficher ce qu'il faut faire
|
||||
|
@ -469,7 +514,21 @@ if [ "$action" == deploy ]; then
|
|||
setx srcname=basename -- "$src"
|
||||
dest="${CATALINA_BASE:-CATALINA_BASE}/webapps/$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
|
||||
if [ -n "$TOMCAT_USER" ]; then
|
||||
evalx qvals chown -R "$TOMCAT_USER:$TOMCAT_GROUP" "$dest" // eecho
|
||||
|
@ -505,7 +564,8 @@ if [ "$action" == deploy ]; then
|
|||
etitle "$srcname"
|
||||
estepi "Déploiement vers $dest"
|
||||
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"
|
||||
else
|
||||
error=
|
||||
|
|
Loading…
Reference in New Issue