Améliorer le déploiement uinst:rsync avec préfixes pour les hôtes distants
This commit is contained in:
parent
1e2e568bf7
commit
dcb85ac759
|
@ -15,3 +15,11 @@ function compute_all_prefixes() {
|
||||||
compute_ldap_prefixes
|
compute_ldap_prefixes
|
||||||
compute_crontab_prefixes
|
compute_crontab_prefixes
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function recompute_all_prefixes() {
|
||||||
|
recompute_java_prefixes
|
||||||
|
recompute_webobjects_prefixes
|
||||||
|
recompute_apache_prefixes
|
||||||
|
recompute_ldap_prefixes
|
||||||
|
recompute_crontab_prefixes
|
||||||
|
}
|
||||||
|
|
|
@ -6,6 +6,9 @@
|
||||||
uprovide apache
|
uprovide apache
|
||||||
urequire base sysinfos
|
urequire base sysinfos
|
||||||
|
|
||||||
|
# Si aucun chemin n'est trouvé, retourner la première valeur
|
||||||
|
APACHE_PREFIXES_CHECK_OR_FIRST=
|
||||||
|
|
||||||
function __apache_prefixes_checkdir() {
|
function __apache_prefixes_checkdir() {
|
||||||
local dir
|
local dir
|
||||||
for dir in "$@"; do
|
for dir in "$@"; do
|
||||||
|
@ -14,6 +17,7 @@ function __apache_prefixes_checkdir() {
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
[ -n "$APACHE_PREFIXES_CHECK_OR_FIRST" -a -n "$1" ] && echo "$1"
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,6 +29,7 @@ function __apache_prefixes_checkfile() {
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
[ -n "$APACHE_PREFIXES_CHECK_OR_FIRST" -a -n "$1" ] && echo "$1"
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,6 +41,7 @@ function __apache_prefixes_checkexec() {
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
[ -n "$APACHE_PREFIXES_CHECK_OR_FIRST" -a -n "$1" ] && echo "$1"
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -133,7 +139,9 @@ function get_default_htdocsdir_prefix() {
|
||||||
if check_sysinfos -s darwin; then
|
if check_sysinfos -s darwin; then
|
||||||
__apache_prefixes_checkdir /Library/WebServer/Documents
|
__apache_prefixes_checkdir /Library/WebServer/Documents
|
||||||
elif check_sysinfos -s linux; then
|
elif check_sysinfos -s linux; then
|
||||||
if check_sysinfos -d debianlike; then
|
if check_sysinfos -d debian -v jessie+; then
|
||||||
|
__apache_prefixes_checkdir /var/www/html
|
||||||
|
elif check_sysinfos -d debianlike; then
|
||||||
__apache_prefixes_checkdir /var/www
|
__apache_prefixes_checkdir /var/www
|
||||||
elif check_sysinfos -d redhatlike; then
|
elif check_sysinfos -d redhatlike; then
|
||||||
__apache_prefixes_checkdir /var/www/html
|
__apache_prefixes_checkdir /var/www/html
|
||||||
|
@ -175,13 +183,18 @@ function __compute_apache_prefixes() {
|
||||||
__apache_prefixes=1
|
__apache_prefixes=1
|
||||||
}
|
}
|
||||||
|
|
||||||
UTOOLS_PREFIXES=("${UTOOLS_PREFIXES[@]}" APACHEBIN APACHEVERSION APACHECTL APACHELOGDIR APACHESSLCERTSDIR APACHESSLKEYSDIR APACHECONFDIR APACHECONF APACHEAVSITESDIR APACHESITESDIR HTDOCSDIR CGIBINDIR)
|
APACHE_PREFIXES=(APACHEBIN APACHEVERSION APACHECTL APACHELOGDIR APACHESSLCERTSDIR APACHESSLKEYSDIR APACHECONFDIR APACHECONF APACHEAVSITESDIR APACHESITESDIR HTDOCSDIR CGIBINDIR)
|
||||||
|
UTOOLS_PREFIXES=("${UTOOLS_PREFIXES[@]}" "${APACHE_PREFIXES[@]}")
|
||||||
|
|
||||||
function compute_apache_prefixes() {
|
function compute_apache_prefixes() {
|
||||||
__compute_apache_prefixes
|
__compute_apache_prefixes
|
||||||
}
|
}
|
||||||
|
|
||||||
function recompute_apache_prefixes() {
|
function recompute_apache_prefixes() {
|
||||||
|
local v
|
||||||
|
for v in "${APACHE_PREFIXES[@]}"; do
|
||||||
|
eval "$v="
|
||||||
|
done
|
||||||
__apache_prefixes=
|
__apache_prefixes=
|
||||||
__compute_apache_prefixes
|
__compute_apache_prefixes
|
||||||
}
|
}
|
||||||
|
|
|
@ -305,13 +305,18 @@ function __compute_crontab_prefixes() {
|
||||||
__crontab_prefixes=1
|
__crontab_prefixes=1
|
||||||
}
|
}
|
||||||
|
|
||||||
UTOOLS_PREFIXES=("${UTOOLS_PREFIXES[@]}" CRONTABDIR)
|
CRONTAB_PREFIXES=(CRONTABDIR)
|
||||||
|
UTOOLS_PREFIXES=("${UTOOLS_PREFIXES[@]}" "${CRONTAB_PREFIXES[@]}")
|
||||||
|
|
||||||
function compute_crontab_prefixes() {
|
function compute_crontab_prefixes() {
|
||||||
__compute_crontab_prefixes
|
__compute_crontab_prefixes
|
||||||
}
|
}
|
||||||
|
|
||||||
function recompute_crontab_prefixes() {
|
function recompute_crontab_prefixes() {
|
||||||
|
local v
|
||||||
|
for v in "${CRONTAB_PREFIXES[@]}"; do
|
||||||
|
eval "$v="
|
||||||
|
done
|
||||||
__crontab_prefixes=
|
__crontab_prefixes=
|
||||||
__compute_crontab_prefixes
|
__compute_crontab_prefixes
|
||||||
}
|
}
|
||||||
|
|
|
@ -551,13 +551,18 @@ function __compute_java_prefixes() {
|
||||||
__java_prefixes=1
|
__java_prefixes=1
|
||||||
}
|
}
|
||||||
|
|
||||||
UTOOLS_PREFIXES=("${UTOOLS_PREFIXES[@]}" JAVA_HOME JAVAEXTENSIONS)
|
JAVA_PREFIXES=(JAVA_HOME JAVAEXTENSIONS)
|
||||||
|
UTOOLS_PREFIXES=("${UTOOLS_PREFIXES[@]}" "${JAVA_PREFIXES[@]}")
|
||||||
|
|
||||||
function compute_java_prefixes() {
|
function compute_java_prefixes() {
|
||||||
__compute_java_prefixes
|
__compute_java_prefixes
|
||||||
}
|
}
|
||||||
|
|
||||||
function recompute_java_prefixes() {
|
function recompute_java_prefixes() {
|
||||||
|
local v
|
||||||
|
for v in "${JAVA_PREFIXES[@]}"; do
|
||||||
|
eval "$v="
|
||||||
|
done
|
||||||
__java_prefixes=
|
__java_prefixes=
|
||||||
__compute_java_prefixes
|
__compute_java_prefixes
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,13 +46,18 @@ function __compute_ldap_prefixes() {
|
||||||
__ldap_prefixes=1
|
__ldap_prefixes=1
|
||||||
}
|
}
|
||||||
|
|
||||||
UTOOLS_PREFIXES=("${UTOOLS_PREFIXES[@]}" LDAPCONFDIR LDAPOWNER)
|
LDAP_PREFIXES=(LDAPCONFDIR LDAPOWNER)
|
||||||
|
UTOOLS_PREFIXES=("${UTOOLS_PREFIXES[@]}" "${LDAP_PREFIXES[@]}")
|
||||||
|
|
||||||
function compute_ldap_prefixes() {
|
function compute_ldap_prefixes() {
|
||||||
__compute_ldap_prefixes
|
__compute_ldap_prefixes
|
||||||
}
|
}
|
||||||
|
|
||||||
function recompute_ldap_prefixes() {
|
function recompute_ldap_prefixes() {
|
||||||
|
local v
|
||||||
|
for v in "${LDAP_PREFIXES[@]}"; do
|
||||||
|
eval "$v="
|
||||||
|
done
|
||||||
__ldap_prefixes=
|
__ldap_prefixes=
|
||||||
__compute_ldap_prefixes
|
__compute_ldap_prefixes
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,38 +60,81 @@ function __setup_ALL_SYSvars() {
|
||||||
__setup_ALL_SYSvars
|
__setup_ALL_SYSvars
|
||||||
unset -f __setup_ALL_SYSvars
|
unset -f __setup_ALL_SYSvars
|
||||||
|
|
||||||
MYSYSNAME=()
|
function __compute_local_sysinfos_data() {
|
||||||
MYBITS=
|
SYSINFOS_DATA=(
|
||||||
MYSYSDIST=()
|
"$UNAME_SYSTEM"
|
||||||
MYSYSVER=()
|
"$UNAME_MACHINE"
|
||||||
if [ "$UNAME_SYSTEM" == "Linux" ]; then
|
"$([ -f /etc/debian_version ] && cat /etc/debian_version)"
|
||||||
case "$UNAME_MACHINE" in
|
"$([ -f /etc/gentoo-release ] && cat /etc/gentoo-release)"
|
||||||
x86_64)
|
"$([ -f /etc/redhat-release ] && cat /etc/redhat-release)"
|
||||||
MYSYSNAME=(linux64 linux)
|
"$([ -f /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Resources/version.plist ] && cat /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Resources/version.plist)"
|
||||||
MYBITS=64
|
"$([ -f /System/Library/Frameworks/CoreServices.framework/Resources/version.plist ] && cat /System/Library/Frameworks/CoreServices.framework/Resources/version.plist)"
|
||||||
;;
|
)
|
||||||
i386|i586|i686)
|
}
|
||||||
MYSYSNAME=(linux32 linux)
|
function __dump_remote_sysinfos_data() {
|
||||||
MYBITS=32
|
"${2:-ssh}" "$1" "\
|
||||||
;;
|
uname -s
|
||||||
ppc)
|
echo .----------------.
|
||||||
MYSYSNAME=(linuxppc32 linuxppc linux)
|
uname -m
|
||||||
MYBITS=32
|
echo .----------------.
|
||||||
;;
|
[ -f /etc/debian_version ] && cat /etc/debian_version
|
||||||
ppc64)
|
echo .----------------.
|
||||||
MYSYSNAME=(linuxppc64 linuxppc linux)
|
[ -f /etc/gentoo-release ] && cat /etc/gentoo-release
|
||||||
MYBITS=64
|
echo .----------------.
|
||||||
;;
|
[ -f /etc/redhat-release ] && cat /etc/redhat-release
|
||||||
arm*)
|
echo .----------------.
|
||||||
MYSYSNAME=(linuxarm linux)
|
[ -f /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Resources/version.plist ] && cat /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Resources/version.plist
|
||||||
;;
|
echo .----------------.
|
||||||
*)
|
[ -f /System/Library/Frameworks/CoreServices.framework/Resources/version.plist ] && cat /System/Library/Frameworks/CoreServices.framework/Resources/version.plist
|
||||||
MYSYSNAME=(linux)
|
echo .----------------."
|
||||||
;;
|
}
|
||||||
esac
|
function __build_sysinfos_data() {
|
||||||
|
awk '
|
||||||
|
BEGIN {
|
||||||
|
data = ""
|
||||||
|
have_data = 0
|
||||||
|
print "SYSINFOS_DATA=("
|
||||||
|
}
|
||||||
|
function read_data() {
|
||||||
|
if (have_data) data = data "\n"
|
||||||
|
else have_data = 1
|
||||||
|
data = data $0
|
||||||
|
}
|
||||||
|
function dump_data() {
|
||||||
|
gsub(/'\''/, "'\'\\\\\'\''", data)
|
||||||
|
print "'\''" data "'\''"
|
||||||
|
data = ""
|
||||||
|
have_data = 0
|
||||||
|
}
|
||||||
|
$0 == ".----------------." { dump_data(); next }
|
||||||
|
{ read_data() }
|
||||||
|
END {
|
||||||
|
dump_data()
|
||||||
|
print ")"
|
||||||
|
}
|
||||||
|
'
|
||||||
|
}
|
||||||
|
function __compute_sysinfos() {
|
||||||
|
# SYSINFOS_DATA doit être initialisé
|
||||||
|
local system="${SYSINFOS_DATA[0]}"
|
||||||
|
local machine="${SYSINFOS_DATA[1]}"
|
||||||
|
local debian_version="${SYSINFOS_DATA[2]}"
|
||||||
|
local gentoo_release="${SYSINFOS_DATA[3]}"
|
||||||
|
local redhat_release="${SYSINFOS_DATA[4]}"
|
||||||
|
local macosx_plist1="${SYSINFOS_DATA[5]}"
|
||||||
|
local macosx_plist2="${SYSINFOS_DATA[6]}"
|
||||||
|
|
||||||
if [ -f /etc/debian_version ]; then
|
if [ "$system" == "Linux" ]; then
|
||||||
case "$(</etc/debian_version)" in
|
case "$machine" in
|
||||||
|
x86_64) MYSYSNAME=(linux64 linux); MYBITS=64;;
|
||||||
|
i386|i586|i686) MYSYSNAME=(linux32 linux); MYBITS=32;;
|
||||||
|
ppc) MYSYSNAME=(linuxppc32 linuxppc linux); MYBITS=32;;
|
||||||
|
ppc64) MYSYSNAME=(linuxppc64 linuxppc linux); MYBITS=64;;
|
||||||
|
arm*) MYSYSNAME=(linuxarm linux);;
|
||||||
|
*) MYSYSNAME=(linux);;
|
||||||
|
esac
|
||||||
|
if [ -n "$debian_version" ]; then
|
||||||
|
case "$debian_version" in
|
||||||
9*|stretch*) MYSYSDIST=(debian debianlike); MYSYSVER=(stretch);;
|
9*|stretch*) MYSYSDIST=(debian debianlike); MYSYSVER=(stretch);;
|
||||||
8*|jessie*) MYSYSDIST=(debian debianlike); MYSYSVER=(jessie);;
|
8*|jessie*) MYSYSDIST=(debian debianlike); MYSYSVER=(jessie);;
|
||||||
7*|wheezy*) MYSYSDIST=(debian debianlike); MYSYSVER=(wheezy);;
|
7*|wheezy*) MYSYSDIST=(debian debianlike); MYSYSVER=(wheezy);;
|
||||||
|
@ -100,16 +143,16 @@ if [ "$UNAME_SYSTEM" == "Linux" ]; then
|
||||||
4*) MYSYSDIST=(debian debianlike); MYSYSVER=(etch);;
|
4*) MYSYSDIST=(debian debianlike); MYSYSVER=(etch);;
|
||||||
*) MYSYSDIST=(debianlike);;
|
*) MYSYSDIST=(debianlike);;
|
||||||
esac
|
esac
|
||||||
elif [ -f /etc/gentoo-release ]; then
|
elif [ -n "$gentoo_release" ]; then
|
||||||
MYSYSDIST=(gentoo)
|
MYSYSDIST=(gentoo)
|
||||||
elif [ -f /etc/redhat-release ]; then
|
elif [ -n "$redhat_release" ]; then
|
||||||
case "$(</etc/redhat-release)" in
|
case "$redhat_release" in
|
||||||
Fedora*) MYSYSDIST=(fedora redhatlike);;
|
Fedora*) MYSYSDIST=(fedora redhatlike);;
|
||||||
Red*Hat*Enterprise*Linux*) MYSYSDIST=(rhel redhatlike);;
|
Red*Hat*Enterprise*Linux*) MYSYSDIST=(rhel redhatlike);;
|
||||||
CentOS*) MYSYSDIST=(centos redhatlike);;
|
CentOS*) MYSYSDIST=(centos redhatlike);;
|
||||||
*) MYSYSDIST=(redhatlike);;
|
*) MYSYSDIST=(redhatlike);;
|
||||||
esac
|
esac
|
||||||
case "$(</etc/redhat-release)" in
|
case "$redhat_release" in
|
||||||
Fedora*14*) MYSYSVER=(fedora14);;
|
Fedora*14*) MYSYSVER=(fedora14);;
|
||||||
Fedora*13*) MYSYSVER=(fedora13);;
|
Fedora*13*) MYSYSVER=(fedora13);;
|
||||||
Fedora*12*) MYSYSVER=(fedora12);;
|
Fedora*12*) MYSYSVER=(fedora12);;
|
||||||
|
@ -124,15 +167,14 @@ if [ "$UNAME_SYSTEM" == "Linux" ]; then
|
||||||
CentOS*release\ 4*) MYSYSVER=(centos4 redhat4);;
|
CentOS*release\ 4*) MYSYSVER=(centos4 redhat4);;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
elif [ "$UNAME_SYSTEM" == "Darwin" ]; then
|
elif [ "$system" == "Darwin" ]; then
|
||||||
function get_macosx_version() {
|
function get_macosx_version() {
|
||||||
local i
|
local plist
|
||||||
for i in /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Resources/version.plist /System/Library/Frameworks/CoreServices.framework/Resources/version.plist; do
|
for plist in "$@"; do
|
||||||
if [ -f "$i" ]; then
|
[ -n "$plist" ] || continue
|
||||||
grep -A 1 CFBundleShortVersionString "$i" | grep string | sed 's/.*<string>//g
|
echo "$plist" | grep -A 1 CFBundleShortVersionString | grep string | sed 's/.*<string>//g
|
||||||
s/<\/string>.*$//g'
|
s/<\/string>.*$//g'
|
||||||
break
|
break
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
MYSYSNAME=(macosx darwin)
|
MYSYSNAME=(macosx darwin)
|
||||||
|
@ -143,14 +185,35 @@ s/<\/string>.*$//g'
|
||||||
10.4*) MYSYSDIST=(tiger);;
|
10.4*) MYSYSDIST=(tiger);;
|
||||||
10.3*) MYSYSDIST=(panther);;
|
10.3*) MYSYSDIST=(panther);;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
if [ -n "$UTOOLS_CHROOT" ]; then
|
}
|
||||||
|
|
||||||
|
function compute_local_sysinfos() {
|
||||||
|
local SYSINFOS_DATA
|
||||||
|
__compute_local_sysinfos_data
|
||||||
|
__compute_sysinfos
|
||||||
|
if [ -n "$UTOOLS_CHROOT" ]; then
|
||||||
# Dans un chroot, il est possible de forcer les valeurs
|
# Dans un chroot, il est possible de forcer les valeurs
|
||||||
[ -n "$UTOOLS_SYSNAME" ] && eval "MYSYSNAME=($UTOOLS_SYSNAME)"
|
[ -n "$UTOOLS_SYSNAME" ] && eval "MYSYSNAME=($UTOOLS_SYSNAME)"
|
||||||
[ -n "$UTOOLS_BITS" ] && eval "MYBITS=$UTOOLS_BITS"
|
[ -n "$UTOOLS_BITS" ] && eval "MYBITS=$UTOOLS_BITS"
|
||||||
[ -n "$UTOOLS_SYSDIST" ] && eval "MYSYSDIST=($UTOOLS_SYSDIST)"
|
[ -n "$UTOOLS_SYSDIST" ] && eval "MYSYSDIST=($UTOOLS_SYSDIST)"
|
||||||
[ -n "$UTOOLS_SYSVER" ] && eval "MYSYSVER=($UTOOLS_SYSVER)"
|
[ -n "$UTOOLS_SYSVER" ] && eval "MYSYSVER=($UTOOLS_SYSVER)"
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
function compute_remote_sysinfos() {
|
||||||
|
local SYSINFOS_DATA
|
||||||
|
eval "$(__dump_remote_sysinfos_data "$@" | __build_sysinfos_data)"
|
||||||
|
__compute_sysinfos
|
||||||
|
}
|
||||||
|
|
||||||
|
SYSINFOSLOCALS="\
|
||||||
|
local -a MYSYSNAME MYSYSDIST MYSYSVER
|
||||||
|
local MYBITS"
|
||||||
|
MYSYSNAME=()
|
||||||
|
MYBITS=
|
||||||
|
MYSYSDIST=()
|
||||||
|
MYSYSVER=()
|
||||||
|
compute_local_sysinfos
|
||||||
|
|
||||||
function __get_sysdist_alias() {
|
function __get_sysdist_alias() {
|
||||||
if ! array_contains ALL_SYSDISTS "$1"; then
|
if ! array_contains ALL_SYSDISTS "$1"; then
|
||||||
|
@ -319,7 +382,10 @@ function check_sysinfos() {
|
||||||
if array_contains "$sysdistvar_" "$sysdist_"; then
|
if array_contains "$sysdistvar_" "$sysdist_"; then
|
||||||
r_=0
|
r_=0
|
||||||
check_=skip
|
check_=skip
|
||||||
|
break
|
||||||
elif [ "$sysdist_" == "$value_" ]; then
|
elif [ "$sysdist_" == "$value_" ]; then
|
||||||
|
r_=0
|
||||||
|
check_=skip
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
@ -358,7 +424,10 @@ function check_sysinfos() {
|
||||||
if array_contains "$sysvervar_" "$sysver_"; then
|
if array_contains "$sysvervar_" "$sysver_"; then
|
||||||
r_=0
|
r_=0
|
||||||
check_=skip
|
check_=skip
|
||||||
|
break
|
||||||
elif [ "$sysver_" == "$value_" ]; then
|
elif [ "$sysver_" == "$value_" ]; then
|
||||||
|
r_=0
|
||||||
|
check_=skip
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
|
@ -48,8 +48,7 @@ function uinst() {
|
||||||
local workdir_excludes
|
local workdir_excludes
|
||||||
local workdir_includes
|
local workdir_includes
|
||||||
local copy_files
|
local copy_files
|
||||||
local destdir
|
local destdir destdir_override_userhost destdir_force_remote
|
||||||
local destdir_override_userhost
|
|
||||||
local srcdir
|
local srcdir
|
||||||
local -a files
|
local -a files
|
||||||
local owner
|
local owner
|
||||||
|
@ -86,14 +85,24 @@ OPTIONS
|
||||||
effectué. Si host vaut '.', un déploiement local *sans passer par ssh*
|
effectué. Si host vaut '.', un déploiement local *sans passer par ssh*
|
||||||
est effectué, comme si seul le chemin avait été spécifié.
|
est effectué, comme si seul le chemin avait été spécifié.
|
||||||
Cette option initialise la valeur destdir_override_userhost
|
Cette option initialise la valeur destdir_override_userhost
|
||||||
-a (par défaut) Si la source n'est pas spécifiée, déterminer le répertoire
|
-S, --ssh ssh
|
||||||
à déployer automatiquement.
|
Avec la méthode de déploiement uinst:rsync, spécifier le programme à
|
||||||
|
utiliser pour la connection par ssh. Cette option initialise la valeur
|
||||||
|
destdir_ssh
|
||||||
|
--force-remote
|
||||||
|
Avec la méthode de déploiement uinst:rsync, si un hôte est spécifié dans
|
||||||
|
la valeur de destdir, forcer le déploiement distant avec ssh+rsync, même
|
||||||
|
si l'hôte et l'utilisateur correspondent aux valeurs courantes. Cette
|
||||||
|
option initialise la valeur destdir_force_remote
|
||||||
|
-a, --auto
|
||||||
|
Si la source n'est pas spécifiée, déterminer le répertoire à déployer
|
||||||
|
automatiquement (c'est la valeur par défaut)
|
||||||
--no-auto
|
--no-auto
|
||||||
Ne pas déterminer automatiquement le répertoire à déployer.
|
Ne pas déterminer automatiquement le répertoire à déployer.
|
||||||
--prefix
|
--prefix
|
||||||
(par défaut) Corriger les chemins srcdir et destdir qui commencent par
|
Corriger les chemins srcdir et destdir qui commencent par des préfixes
|
||||||
des préfixes valides. Utiliser 'uprefix -l' pour avoir une liste de
|
valides (c'est la valeur par défaut). Utiliser 'uprefix -l' pour avoir
|
||||||
préfixes valides.
|
une liste de préfixes valides
|
||||||
--no-prefix
|
--no-prefix
|
||||||
Ne jamais corriger un chemin.
|
Ne jamais corriger un chemin.
|
||||||
--include-vcs
|
--include-vcs
|
||||||
|
@ -141,6 +150,8 @@ OPTIONS
|
||||||
-m: '$__uinst_addvar modes "$value_"' \
|
-m: '$__uinst_addvar modes "$value_"' \
|
||||||
-d: '$__uinst_addvar destdir "$value_"' \
|
-d: '$__uinst_addvar destdir "$value_"' \
|
||||||
-h:,-H:,--host: '$__uinst_addvar destdir_override_userhost "$value_"' \
|
-h:,-H:,--host: '$__uinst_addvar destdir_override_userhost "$value_"' \
|
||||||
|
-S:,--ssh: '$__uinst_addvar destdir_ssh "$value_"' \
|
||||||
|
--force-remote '$__uinst_addvar destdir_force_remote 1' \
|
||||||
-a,--auto UINST_AUTOSRCDIR=1 \
|
-a,--auto UINST_AUTOSRCDIR=1 \
|
||||||
--no-auto UINST_AUTOSRCDIR= \
|
--no-auto UINST_AUTOSRCDIR= \
|
||||||
--prefix UINST_AUTOPREFIX=1 \
|
--prefix UINST_AUTOPREFIX=1 \
|
||||||
|
@ -207,6 +218,8 @@ function __uinst_init() {
|
||||||
copy_files='true'
|
copy_files='true'
|
||||||
destdir='/usr/local'
|
destdir='/usr/local'
|
||||||
destdir_override_userhost=
|
destdir_override_userhost=
|
||||||
|
destdir_ssh=
|
||||||
|
destdir_force_remote=
|
||||||
srcdir='.'
|
srcdir='.'
|
||||||
files='()'
|
files='()'
|
||||||
owner='root:'
|
owner='root:'
|
||||||
|
@ -385,7 +398,7 @@ Utilisez 'udir -e $(ppath "$srcdir")' pour modifier les paramètres."
|
||||||
|
|
||||||
function __uinst_defaultvars() {
|
function __uinst_defaultvars() {
|
||||||
eval "$(array_join UINST_DEFAULTS ';')"
|
eval "$(array_join UINST_DEFAULTS ';')"
|
||||||
UDIR_VARS=(uinc install_profiles profiledir bashrcdir defaultdir copy_files destdir destdir_override_userhost srcdir owner)
|
UDIR_VARS=(uinc install_profiles profiledir bashrcdir defaultdir copy_files destdir destdir_override_userhost destdir_ssh destdir_force_remote srcdir owner)
|
||||||
UDIR_ARRAYS=(uinc_options uinc_args preconfig_scripts configure_variables configure_dest_for config_scripts workdir_rsync_options workdir_excludes workdir_includes files modes root_scripts)
|
UDIR_ARRAYS=(uinc_options uinc_args preconfig_scripts configure_variables configure_dest_for config_scripts workdir_rsync_options workdir_excludes workdir_includes files modes root_scripts)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -918,21 +931,56 @@ function __uinst_rsync() {
|
||||||
__uinst_setvar srcdir
|
__uinst_setvar srcdir
|
||||||
# puis charger les valeurs de la ligne de commande
|
# puis charger les valeurs de la ligne de commande
|
||||||
__uinst_setvars
|
__uinst_setvars
|
||||||
# corriger éventuellement destdir
|
# vérifier la destination
|
||||||
[ -n "$UINST_AUTOPREFIX" ] && destdir="$(expand_prefix "$destdir")"
|
local __destdir_userhost __destdir_path __destdir_user __destdir_host
|
||||||
# si un hôte a été spécifié avec --host, utiliser cette valeur
|
|
||||||
if [ -n "$destdir_override_userhost" ]; then
|
|
||||||
splituserhost "$destdir_override_userhost" __override_user __override_host
|
|
||||||
splitfsep2 "$destdir" : __destdir_userhost __destdir_path
|
splitfsep2 "$destdir" : __destdir_userhost __destdir_path
|
||||||
splituserhost "$__destdir_userhost" __destdir_user __destdir_host
|
splituserhost "$__destdir_userhost" __destdir_user __destdir_host
|
||||||
|
# si un hôte a été spécifié avec --host, utiliser cette valeur
|
||||||
|
if [ -n "$destdir_override_userhost" ]; then
|
||||||
|
local __override_user __override_host
|
||||||
|
splituserhost "$destdir_override_userhost" __override_user __override_host
|
||||||
[ -n "$__override_user" ] || __override_user="$__destdir_user"
|
[ -n "$__override_user" ] || __override_user="$__destdir_user"
|
||||||
if [ "$__override_host" != . ]; then
|
if [ "$__override_host" == . ]; then
|
||||||
# déploiement distant
|
# forcer déploiement local
|
||||||
destdir="${__override_user:+$__override_user@}$__override_host:$__destdir_path"
|
__override_user=
|
||||||
else
|
__override_host=
|
||||||
# déploiement local
|
|
||||||
destdir="$__destdir_path"
|
|
||||||
fi
|
fi
|
||||||
|
__destdir_user="$__override_user"
|
||||||
|
__destdir_host="$__override_host"
|
||||||
|
fi
|
||||||
|
# vérifier s'il faut faire une copie distante ou locale
|
||||||
|
local __destdir_remote=
|
||||||
|
if [ -n "$__destdir_host" ]; then
|
||||||
|
if [ -n "$destdir_force_remote" ]; then
|
||||||
|
__destdir_remote=1
|
||||||
|
else
|
||||||
|
if [ "$__destdir_host" == localhost ]; then
|
||||||
|
:
|
||||||
|
elif [[ "$__destdir_host" == *.* ]]; then
|
||||||
|
[ "$__destdir_host" == "$MYHOST" ] || __destdir_remote=1
|
||||||
|
else
|
||||||
|
[ "$__destdir_host" == "$MYHOSTNAME" ] || __destdir_remote=1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -z "$__destdir_remote" -a -n "$__destdir_user" ]; then
|
||||||
|
[ "$__destdir_user" == "$USER" ] || __destdir_remote=1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# corriger éventuellement destdir s'il contient un préfixe
|
||||||
|
if [ -n "$UINST_AUTOPREFIX" ] && has_prefix "$__destdir_path"; then
|
||||||
|
if [ -n "$__destdir_remote" ]; then
|
||||||
|
eval "$SYSINFOSLOCALS"
|
||||||
|
local APACHE_PREFIXES_CHECK_OR_FIRST=1
|
||||||
|
compute_remote_sysinfos "${__destdir_user:+$__destdir_user@}$__destdir_host" "$destdir_ssh"
|
||||||
|
recompute_all_prefixes
|
||||||
|
fi
|
||||||
|
__destdir_path="$(expand_prefix "$__destdir_path")"
|
||||||
|
fi
|
||||||
|
# valeur finale de destdir
|
||||||
|
if [ -n "$__destdir_remote" ]; then
|
||||||
|
destdir="${__destdir_user:+$__destdir_user@}$__destdir_host:$__destdir_path"
|
||||||
|
else
|
||||||
|
destdir="$__destdir_path"
|
||||||
fi
|
fi
|
||||||
# les variables de configure_variables ne sont pas prises en compte. pas la
|
# les variables de configure_variables ne sont pas prises en compte. pas la
|
||||||
# peine de les afficher
|
# peine de les afficher
|
||||||
|
@ -952,7 +1000,7 @@ function __uinst_rsync() {
|
||||||
if [ -n "${files[*]}" ]; then
|
if [ -n "${files[*]}" ]; then
|
||||||
srcdesc="$srcdesc/{$(array_join files ,)}"
|
srcdesc="$srcdesc/{$(array_join files ,)}"
|
||||||
fi
|
fi
|
||||||
if [[ "$destdir" == *:* ]]; then
|
if [ -n "$__destdir_host" ]; then
|
||||||
ask_yesno "Synchroniser $srcdesc vers $(ppath "$destdir")?" O || return
|
ask_yesno "Synchroniser $srcdesc vers $(ppath "$destdir")?" O || return
|
||||||
else
|
else
|
||||||
ask_yesno "Synchroniser $srcdesc vers $(ppath "$destdir") sur $MYHOST?" O || return
|
ask_yesno "Synchroniser $srcdesc vers $(ppath "$destdir") sur $MYHOST?" O || return
|
||||||
|
@ -960,10 +1008,9 @@ function __uinst_rsync() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd "$srcdir" || return 1
|
cd "$srcdir" || return 1
|
||||||
local localsync=1
|
if [ -n "$__destdir_remote" ]; then
|
||||||
if [[ "$destdir" == *:* ]]; then
|
|
||||||
# Déploiement distant, on laisse rsync gérer
|
# Déploiement distant, on laisse rsync gérer
|
||||||
localsync=
|
:
|
||||||
else
|
else
|
||||||
# Déploiement local. S'assurer que le répertoire de destination existe
|
# Déploiement local. S'assurer que le répertoire de destination existe
|
||||||
mkdir -p "$destdir" || return 1
|
mkdir -p "$destdir" || return 1
|
||||||
|
@ -971,7 +1018,8 @@ function __uinst_rsync() {
|
||||||
|
|
||||||
local -a cmd tmp_files actual_files copied_files
|
local -a cmd tmp_files actual_files copied_files
|
||||||
local file filename
|
local file filename
|
||||||
cmd=(rsync "${force_rsync_options[@]}" "${rsync_options[@]}")
|
local UTOOLS_USSH_RSYNC_SUPPORT=1; export UTOOLS_USSH_RSYNC_SUPPORT
|
||||||
|
cmd=(rsync ${destdir_ssh:+-e "$destdir_ssh"} "${force_rsync_options[@]}" "${rsync_options[@]}")
|
||||||
if [ -n "${files[*]}" ]; then
|
if [ -n "${files[*]}" ]; then
|
||||||
for file in "${files[@]}"; do
|
for file in "${files[@]}"; do
|
||||||
file="${file#/}" # les chemins sont toujours relatifs
|
file="${file#/}" # les chemins sont toujours relatifs
|
||||||
|
@ -1000,7 +1048,7 @@ function __uinst_rsync() {
|
||||||
# Faire la synchro
|
# Faire la synchro
|
||||||
"${cmd[@]}"
|
"${cmd[@]}"
|
||||||
|
|
||||||
if [ -n "$localsync" ]; then
|
if [ -z "$__destdir_remote" ]; then
|
||||||
if [ -n "$owner" -a -n "${copied_files[*]}" ]; then
|
if [ -n "$owner" -a -n "${copied_files[*]}" ]; then
|
||||||
## Initialiser le propriétaire
|
## Initialiser le propriétaire
|
||||||
estep "Initialisation du propriétaire à $owner"
|
estep "Initialisation du propriétaire à $owner"
|
||||||
|
|
|
@ -40,13 +40,18 @@ function __compute_webobjects_prefixes() {
|
||||||
__webobjects_prefixes=1
|
__webobjects_prefixes=1
|
||||||
}
|
}
|
||||||
|
|
||||||
UTOOLS_PREFIXES=("${UTOOLS_PREFIXES[@]}" NEXT_ROOT WOROOT LOCALROOT SYSTEMFRAMEWORKS WOEXTENSIONS WOFRAMEWORKS WOAPPLICATIONS WOCONFIGURATION WOAUTOSTART WOLOGS WOVERSION)
|
WEBOBJECTS_PREFIXES=(NEXT_ROOT WOROOT LOCALROOT SYSTEMFRAMEWORKS WOEXTENSIONS WOFRAMEWORKS WOAPPLICATIONS WOCONFIGURATION WOAUTOSTART WOLOGS WOVERSION)
|
||||||
|
UTOOLS_PREFIXES=("${UTOOLS_PREFIXES[@]}" "${WEBOBJECTS_PREFIXES[@]}")
|
||||||
|
|
||||||
function compute_webobjects_prefixes() {
|
function compute_webobjects_prefixes() {
|
||||||
__compute_webobjects_prefixes
|
__compute_webobjects_prefixes
|
||||||
}
|
}
|
||||||
|
|
||||||
function recompute_webobjects_prefixes() {
|
function recompute_webobjects_prefixes() {
|
||||||
|
local v
|
||||||
|
for v in "${WEBOBJECTS_PREFIXES[@]}"; do
|
||||||
|
eval "$v="
|
||||||
|
done
|
||||||
__webobjects_prefixes=
|
__webobjects_prefixes=
|
||||||
__compute_webobjects_prefixes
|
__compute_webobjects_prefixes
|
||||||
}
|
}
|
||||||
|
|
4
ruinst
4
ruinst
|
@ -30,7 +30,7 @@ OPTIONS
|
||||||
Spécifier le répertoire temporaire sur l'hôte distant, comme par exemple
|
Spécifier le répertoire temporaire sur l'hôte distant, comme par exemple
|
||||||
/var/tmp. Cette option est utile pour les vservers, qui ont par défaut
|
/var/tmp. Cette option est utile pour les vservers, qui ont par défaut
|
||||||
un /tmp minuscule de 16 Mo.
|
un /tmp minuscule de 16 Mo.
|
||||||
-S ssh
|
-S, --ssh ssh
|
||||||
Spécifier le programme à utiliser pour la connection par ssh.
|
Spécifier le programme à utiliser pour la connection par ssh.
|
||||||
-h hosts
|
-h hosts
|
||||||
-h @hostsfile
|
-h @hostsfile
|
||||||
|
@ -63,7 +63,7 @@ parse_opts "${PRETTYOPTS[@]}" \
|
||||||
--configure: '$set@ confuser;action=configure' \
|
--configure: '$set@ confuser;action=configure' \
|
||||||
--uses-su uses_su=1 \
|
--uses-su uses_su=1 \
|
||||||
-T:,--tmproot: tmproot= \
|
-T:,--tmproot: tmproot= \
|
||||||
-S: SSH= \
|
-S:,--ssh: SSH= \
|
||||||
--force-make-archive force_make_archive=1 \
|
--force-make-archive force_make_archive=1 \
|
||||||
-h:,-H:,--host: hosts \
|
-h:,-H:,--host: hosts \
|
||||||
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
||||||
|
|
Loading…
Reference in New Issue