diff --git a/ruinst b/ruinst index e3cf14a..1dc3fed 100755 --- a/ruinst +++ b/ruinst @@ -56,37 +56,11 @@ OPTIONS Par défaut, si aucun hôte n'est spécifié, la configuration locale de déploiement est interrogée pour avoir cette information. -c, --deploy-config CONFNAME - Cette option permet de spécifier le nom de la configuration à utiliser - pour effectuer la requête. Par défaut, utiliser le nom 'ruinst'" + Cette option permet de spécifier le nom de la configuration locale de + déploiement à utiliser pour effectuer la requête. Par défaut, utiliser + le nom 'ruinst'" } -set_defaults pubkeys - -action=deploy -confuser= -uses_su= -tmproot= -SSH= -force_make_archive= -hosts=() -deploy_enable=1 -deploy_confname=ruinst -parse_opts "${PRETTYOPTS[@]}" \ - --help '$exit_with display_help' \ - -C,--configure-user action=configure \ - --configure: '$set@ confuser;action=configure' \ - --uses-su uses_su=1 \ - -T:,--tmproot: tmproot= \ - -S:,--ssh: SSH= \ - --force-make-archive force_make_archive=1 \ - -h:,-H:,--host: hosts \ - --deploy deploy_enable=1 \ - --no-deploy deploy_enable= \ - -c:,--deploy-config deploy_confname= \ - @ args -- "$@" && set -- "${args[@]}" || die "$args" - -: "${SSH:=ssh}" - __PARSED_HOSTS=() __PARSED_FILES=() function parse_hostsfile() { @@ -150,6 +124,33 @@ function fix_hosts() { array_map hosts __dot_is_localhost } +set_defaults pubkeys + +action=deploy +confuser= +uses_su= +tmproot= +SSH= +force_make_archive= +hosts=() +deploy_enable=1 +deploy_confname=ruinst +parse_opts "${PRETTYOPTS[@]}" \ + --help '$exit_with display_help' \ + -C,--configure-user action=configure \ + --configure: '$set@ confuser;action=configure' \ + --uses-su uses_su=1 \ + -T:,--tmproot: tmproot= \ + -S:,--ssh: SSH= \ + --force-make-archive force_make_archive=1 \ + -h:,-H:,--host: hosts \ + --deploy deploy_enable=1 \ + --no-deploy deploy_enable= \ + -c:,--deploy-config deploy_confname= \ + @ args -- "$@" && set -- "${args[@]}" || die "$args" + +: "${SSH:=ssh}" + ################################################################################ # Configuration de l'accès par clé aux hôtes @@ -218,15 +219,13 @@ fi ################################################################################ # Déploiement -make_archive= - ## Répertoire à déployer -src="$1" -if [ -z "$src" ] || [[ "$src" == -* ]]; then +if [ $# -eq 0 ] || [[ "$1" == -* ]] || [[ "$1" == *=* ]]; then # pas d'argument, ou c'est une option (qui fait donc partie des arguments de uinst) - read_value "Entrez le répertoire à déployer" src "." + read_value "Entrez le répertoire à déployer" src "." O else # Enlever le répertoire à déployer. Le reste est pour uinst + src="$1" shift fi @@ -248,6 +247,7 @@ array_isempty hosts && read_value "Entrez une liste d'hôtes séparés par ':'" fix_hosts ## Création de l'archive? +make_archive= if [ -n "$force_make_archive" ]; then make_archive=1 else diff --git a/rwoinst b/rwoinst index a415709..ddbb77e 100755 --- a/rwoinst +++ b/rwoinst @@ -10,20 +10,6 @@ USAGE $scriptname [-H host] [-T tmproot] ... [-- options de woinst] OPTIONS - -C, --configure-user - --configure USER [--uses-su] - Ne pas faire le déploiement. Configurer uniquement la connexion par clé - sur les hôtes distants spécifiés pour le user spécifié. Il faut pouvoir - se connecter par mot de passe pour configurer la connexion par clé. - Si l'on veut configurer la connexion par clé pour le user root, mais que - ce n'est pas possible de se connecter par mot de passe avec le user root - sur l'hôte distant, et qu'il existe un user sudoer sur l'hôte distant, - il est possible de faire la configuration avec '--configure root'. La - commande serait alors - $scriptname -H user@host --configure root - Si l'hôte distant n'a pas sudo ou si sudo n'est pas configuré, il faut - rajouter l'option --uses-su, e.g: - $scriptname -h user@host --configure root --uses-su -T, --tmproot TMPROOT 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 @@ -57,31 +43,6 @@ OPTIONS pour effectuer la requête. Par défaut, utiliser le nom 'rwoinst'" } -set_defaults pubkeys - -action=deploy -confuser= -uses_su= -tmproot= -SSH= -hosts=() -deploy_enable=1 -deploy_confname=rwoinst -parse_opts "${PRETTYOPTS[@]}" \ - --help '$exit_with display_help' \ - -C,--configure-user action=configure \ - --configure: '$set@ confuser;action=configure' \ - --uses-su uses_su=1 \ - -T:,--tmproot: tmproot= \ - -S:,--ssh: SSH= \ - -h:,-H:,--host: hosts \ - --deploy deploy_enable=1 \ - --no-deploy deploy_enable= \ - -c:,--deploy-config deploy_confname= \ - @ args -- "$@" && set -- "${args[@]}" || die "$args" - -SSH="${SSH:-ssh}" - __PARSED_HOSTS=() __PARSED_FILES=() function parse_hostsfile() { @@ -145,25 +106,34 @@ function fix_hosts() { array_map hosts __dot_is_localhost } -################################################################################ -# Configuration de l'accès par clé aux hôtes +action=deploy +tmproot= +SSH= +hosts=() +deploy_enable=1 +deploy_confname=rwoinst +parse_opts "${PRETTYOPTS[@]}" \ + --help '$exit_with display_help' \ + -T:,--tmproot: tmproot= \ + -S:,--ssh: SSH= \ + -h:,-H:,--host: hosts \ + --deploy deploy_enable=1 \ + --no-deploy deploy_enable= \ + -c:,--deploy-config deploy_confname= \ + @ args -- "$@" && set -- "${args[@]}" || die "$args" -if [ "$action" == "configure" ]; then - args=(${confuser:+--configure "$confuser"} ${uses_su:+--uses-su} -S "$SSH") - for host in "${hosts[@]}"; do - args=("${args[@]}" -H "$host") - done - exec "$scriptdir/ruinst" -C "${args[@]}" -fi - -################################################################################ -# Déploiement +: "${SSH:=ssh}" ## Bundle à déployer -if [ -z "$1" ] || [[ "$1" == -* ]] || [[ "$1" == *=* ]]; then +if [ $# -eq 0 ] || [[ "$1" == -* ]] || [[ "$1" == *=* ]]; then # pas d'argument, ou c'est une option (qui fait donc partie des arguments de # woinst) - die "Vous devez spécifier le bundle à déployer" + case "$(dirname "$(pwd)")" in + *.woa|*.framework) bundle=.;; + *) bundle=;; + esac + read_value "Veuillez entrer le bundle à déployer" bundle "$bundle" O + set -- "$bundle" "$@" fi ## Hôtes sur lesquels faire le déploiement @@ -184,7 +154,7 @@ array_isempty hosts && read_value "Entrez une liste d'hôtes séparés par ':'" fix_hosts ## Création de l'archive -etitle -s "Création du répertoire de travail" +etitle "Création du répertoire de travail" ac_set_tmpdir workdir bundles=() while [ -n "$1" ]; do @@ -259,7 +229,7 @@ for host in "${hosts[@]}"; do user=root fi - etitle -s "Déploiement sur $user@$host" + 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"