diff --git a/ruinst b/ruinst index f5a6653..e18199f 100755 --- a/ruinst +++ b/ruinst @@ -14,7 +14,9 @@ pas contenir d'espaces ni de caractères spéciaux. L'échappement de ces caractères n'est pas garanti. OPTIONS - -C Ne pas faire le déploiement. Configurer uniquement la connexion par clé + -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 @@ -26,14 +28,14 @@ OPTIONS 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 + -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 un /tmp minuscule de 16 Mo. - -S, --ssh ssh + -S, --ssh SSH Spécifier le programme à utiliser pour la connection par ssh. - -h hosts - -h @hostsfile + -h, --host hosts + -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 @@ -45,7 +47,18 @@ OPTIONS root. Il est possible de spécifier un autre utilisateur avec la syntaxe 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." + hostsfile, à raison d'un hôte par ligne. + --deploy + --no-deploy + Autoriser (respectivement interdire) l'utilisation de la configuration + locale de déploiement pour identifier la destination si aucun hôte n'est + spécifié. + 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." } set_defaults pubkeys @@ -54,18 +67,23 @@ action=deploy confuser= uses_su= tmproot= -hosts=() SSH= force_make_archive= +hosts=() +deploy_enable=1 +deploy_confname= parse_opts "${PRETTYOPTS[@]}" \ --help '$exit_with display_help' \ - -C action=configure \ + -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}" @@ -181,7 +199,7 @@ if [ "$action" == "configure" ]; then }$(<"$sshdir/$pubkey")" done fi - [ -n "$PUBKEYS" ] || die "La connexion sur les hôtes distants ne peut se faire que par mot de passe parce que vous n'avez pas de clé publique configurée. Modifiez le fichier ~/etc/default.pubkeys si ce message est erroné." + [ -n "$PUBKEYS" ] || die "La connexion sur les hôtes distants ne peut se faire que par mot de passe parce que vous n'avez pas de clé publique configurée. Modifiez le fichier ~/etc/default/pubkeys si ce message est erroné." [ -n "${hosts[*]}" ] || hosts=("$@") [ -n "${hosts[*]}" ] || die "Vous devez spécifier la liste des hôtes à configurer" @@ -214,6 +232,19 @@ else fi ## Hôtes sur lesquels faire le déploiement +if array_isempty hosts && [ -n "$deploy_enable" ]; then + urequire deploy + deploy_setconf "$deploy_confname" + if deploy_loadconf; then + setxx module=abspath "$src" // basename -- + if eval "$(deploy_query -v host DEST module ruinst_deploy "" shell "$module")"; then + check_interaction -c && einfo "Ce module sera déployé vers les hôtes suivants: +$(array_to_lines host "" " ")" + ask_any "Voulez-vous continuer?" Oq || die + array_copy hosts host + fi + fi +fi array_isempty hosts && read_value "Entrez une liste d'hôtes séparés par ':'" hosts "localhost" fix_hosts