modifier la méthode d'analyse de la liste des hôtes
This commit is contained in:
parent
8760cade72
commit
f1d1248fc4
38
rruns
38
rruns
|
@ -1,14 +1,16 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
source "$(dirname "$0")/ulib/ulib" || exit 1
|
||||||
|
urequire DEFAULTS runs
|
||||||
|
|
||||||
function display_help() {
|
function display_help() {
|
||||||
uecho "$scriptname: Déploiement distant avec runs
|
uecho "$scriptname: Déploiement distant avec runs
|
||||||
|
|
||||||
USAGE
|
USAGE
|
||||||
$scriptname [-h host] [-T tmproot] rscriptname name=value...
|
$scriptname [-h hosts] [-T tmproot] rscriptname name=value...
|
||||||
$scriptname [-h host] [-T tmproot] @recipe name=value...
|
$scriptname [-h hosts] [-T tmproot] @recipe name=value...
|
||||||
$scriptname [-h host] [-T tmproot] -f rscript name=value...
|
$scriptname [-h hosts] [-T tmproot] -f rscript name=value...
|
||||||
$scriptname [-h host] [-T tmproot] -r recipe name=value...
|
$scriptname [-h hosts] [-T tmproot] -r recipe name=value...
|
||||||
|
|
||||||
Lancer ce script sans argument (hors options) est équivalent à le lancer avec
|
Lancer ce script sans argument (hors options) est équivalent à le lancer avec
|
||||||
l'argument @default
|
l'argument @default
|
||||||
|
@ -31,12 +33,16 @@ OPTIONS
|
||||||
Spécifier le programme à utiliser pour la connection par ssh.
|
Spécifier le programme à utiliser pour la connection par ssh.
|
||||||
-h host
|
-h host
|
||||||
-h @hostsfile
|
-h @hostsfile
|
||||||
Spécifier un hôte distant sur lequel faire le déploiement. Plusieurs
|
Spécifier un ou plusieurs hôtes sur lequels faire le déploiement. Pour
|
||||||
options -h peuvent être spécifiées, ou alors on peut séparer plusieurs
|
spécifier plusieurs hôtes, il est possible d'utiliser plusieurs fois
|
||||||
hôtes par ':', e.g. -h host1:host2
|
l'option -h, ou spécifier en une seule fois plusieurs hôtes en les
|
||||||
|
séparant par un espace ou le caractère ':', e.g. 'host1 host2' ou
|
||||||
|
'host1:host2'. Si la spécification contient les caractères { et },
|
||||||
|
l'expansion est effectuée, e.g
|
||||||
|
-h 'root@{host1,host2}.univ.run'
|
||||||
Par défaut, la connexion sur l'hôte distant se fait avec l'utilisateur
|
Par défaut, la connexion sur l'hôte distant se fait avec l'utilisateur
|
||||||
root. Il est possible de spécifier un autre utilisateur avec la syntaxe
|
root. Il est possible de spécifier un autre utilisateur avec la syntaxe
|
||||||
user@host, e.g -h $USER@host
|
user@host, e.g -h user@host
|
||||||
La forme @hostsfile permet de lire la liste des hôtes depuis le fichier
|
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.
|
||||||
Si cette option n'est pas spécifiée, et que le répertoire courant est
|
Si cette option n'est pas spécifiée, et que le répertoire courant est
|
||||||
|
@ -68,10 +74,6 @@ OPTIONS
|
||||||
argument (hors options)."
|
argument (hors options)."
|
||||||
}
|
}
|
||||||
|
|
||||||
source "$(dirname "$0")/ulib/ulib" &&
|
|
||||||
urequire DEFAULTS runs ||
|
|
||||||
exit 1
|
|
||||||
|
|
||||||
set_defaults runs
|
set_defaults runs
|
||||||
|
|
||||||
action=deploy
|
action=deploy
|
||||||
|
@ -142,6 +144,13 @@ function parse_hostsfile() {
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
function __expand_braces() {
|
||||||
|
if [[ "$1" == *{* ]] && [[ "$1" == *}* ]]; then
|
||||||
|
eval "echo $1"
|
||||||
|
else
|
||||||
|
echo "$1"
|
||||||
|
fi
|
||||||
|
}
|
||||||
function __dot_is_localhost() { [ "$1" == "." ] && echo "localhost" || echo "$1"; }
|
function __dot_is_localhost() { [ "$1" == "." ] && echo "localhost" || echo "$1"; }
|
||||||
function fix_hosts() {
|
function fix_hosts() {
|
||||||
# Si hosts contient des éléments multiple, comme a:b, séparer ces
|
# Si hosts contient des éléments multiple, comme a:b, séparer ces
|
||||||
|
@ -149,7 +158,10 @@ function fix_hosts() {
|
||||||
# Supporter la syntaxe @hostsfile qui permet de charger la liste des hôtes
|
# Supporter la syntaxe @hostsfile qui permet de charger la liste des hôtes
|
||||||
# depuis un fichier.
|
# depuis un fichier.
|
||||||
# Remplacer aussi les '.' par 'localhost'
|
# Remplacer aussi les '.' par 'localhost'
|
||||||
array_fix_paths hosts
|
array_map hosts __expand_braces
|
||||||
|
array_fix_paths hosts ":"
|
||||||
|
array_fix_paths hosts " "
|
||||||
|
|
||||||
local -a _hosts _tmphosts host
|
local -a _hosts _tmphosts host
|
||||||
for host in "${hosts[@]}"; do
|
for host in "${hosts[@]}"; do
|
||||||
host="${host%/}"
|
host="${host%/}"
|
||||||
|
|
30
ruinst
30
ruinst
|
@ -1,5 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
source "$(dirname "$0")/ulib/ulib" || exit 1
|
||||||
|
urequire DEFAULTS nutools/pyulib
|
||||||
|
|
||||||
function display_help() {
|
function display_help() {
|
||||||
uecho "$scriptname: Déploiement distant avec uinst
|
uecho "$scriptname: Déploiement distant avec uinst
|
||||||
|
@ -27,11 +29,15 @@ OPTIONS
|
||||||
un /tmp minuscule de 16 Mo.
|
un /tmp minuscule de 16 Mo.
|
||||||
-S ssh
|
-S ssh
|
||||||
Spécifier le programme à utiliser pour la connection par ssh.
|
Spécifier le programme à utiliser pour la connection par ssh.
|
||||||
-h host
|
-h hosts
|
||||||
-h @hostsfile
|
-h @hostsfile
|
||||||
Spécifier un hôte distant sur lequel faire le déploiement. Plusieurs
|
Spécifier un ou plusieurs hôtes sur lequels faire le déploiement. Pour
|
||||||
options -h peuvent être spécifiées, ou alors on peut séparer plusieurs
|
spécifier plusieurs hôtes, il est possible d'utiliser plusieurs fois
|
||||||
hôtes par ':', e.g. -h host1:host2
|
l'option -h, ou spécifier en une seule fois plusieurs hôtes en les
|
||||||
|
séparant par un espace ou le caractère ':', e.g. 'host1 host2' ou
|
||||||
|
'host1:host2'. Si la spécification contient les caractères { et },
|
||||||
|
l'expansion est effectuée, e.g
|
||||||
|
-h 'root@{host1,host2}.univ.run'
|
||||||
Par défaut, la connexion sur l'hôte distant se fait avec l'utilisateur
|
Par défaut, la connexion sur l'hôte distant se fait avec l'utilisateur
|
||||||
root. Il est possible de spécifier un autre utilisateur avec la syntaxe
|
root. Il est possible de spécifier un autre utilisateur avec la syntaxe
|
||||||
user@host, e.g -h user@host
|
user@host, e.g -h user@host
|
||||||
|
@ -39,10 +45,6 @@ OPTIONS
|
||||||
hostsfile, à raison d'un hôte par ligne."
|
hostsfile, à raison d'un hôte par ligne."
|
||||||
}
|
}
|
||||||
|
|
||||||
source "$(dirname "$0")/ulib/ulib" &&
|
|
||||||
urequire DEFAULTS nutools/pyulib ||
|
|
||||||
exit 1
|
|
||||||
|
|
||||||
set_defaults pubkeys
|
set_defaults pubkeys
|
||||||
|
|
||||||
action=deploy
|
action=deploy
|
||||||
|
@ -92,6 +94,13 @@ function parse_hostsfile() {
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
function __expand_braces() {
|
||||||
|
if [[ "$1" == *{* ]] && [[ "$1" == *}* ]]; then
|
||||||
|
eval "echo $1"
|
||||||
|
else
|
||||||
|
echo "$1"
|
||||||
|
fi
|
||||||
|
}
|
||||||
function __dot_is_localhost() { [ "$1" == "." ] && echo "localhost" || echo "$1"; }
|
function __dot_is_localhost() { [ "$1" == "." ] && echo "localhost" || echo "$1"; }
|
||||||
function fix_hosts() {
|
function fix_hosts() {
|
||||||
# Si hosts contient des éléments multiple, comme a:b, séparer ces
|
# Si hosts contient des éléments multiple, comme a:b, séparer ces
|
||||||
|
@ -99,7 +108,10 @@ function fix_hosts() {
|
||||||
# Supporter la syntaxe @hostsfile qui permet de charger la liste des hôtes
|
# Supporter la syntaxe @hostsfile qui permet de charger la liste des hôtes
|
||||||
# depuis un fichier.
|
# depuis un fichier.
|
||||||
# Remplacer aussi les '.' par 'localhost'
|
# Remplacer aussi les '.' par 'localhost'
|
||||||
array_fix_paths hosts
|
array_map hosts __expand_braces
|
||||||
|
array_fix_paths hosts ":"
|
||||||
|
array_fix_paths hosts " "
|
||||||
|
|
||||||
local -a _hosts _tmphosts host
|
local -a _hosts _tmphosts host
|
||||||
for host in "${hosts[@]}"; do
|
for host in "${hosts[@]}"; do
|
||||||
host="${host%/}"
|
host="${host%/}"
|
||||||
|
|
31
ussh
31
ussh
|
@ -10,10 +10,13 @@ USAGE
|
||||||
$scriptname -R hosts...
|
$scriptname -R hosts...
|
||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
host
|
hosts
|
||||||
@hostsfile
|
@hostsfile
|
||||||
Spécifier un hôte distant sur lequel faire la connexion. Plusieurs
|
Spécifier un ou plusieurs hôtes distants sur lequels faire la connexion.
|
||||||
hôtes peuvent être spécifiées, en les séparant par ':', e.g. host1:host2
|
Pour spécifier plusieurs hôtes, il faut les séparer par un espace ou le
|
||||||
|
caractère ':', e.g. 'host1 host2' ou 'host1:host2'. Si la spécification
|
||||||
|
contient les caractères { et }, l'expansion est effectuée, e.g
|
||||||
|
'root@{host1,host2}.univ.run'
|
||||||
La forme @hostsfile permet de lire la liste des hôtes depuis le fichier
|
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.
|
||||||
[options]
|
[options]
|
||||||
|
@ -28,6 +31,8 @@ argument):
|
||||||
Forcer l'allocation d'un TTY
|
Forcer l'allocation d'un TTY
|
||||||
-l, --login USER
|
-l, --login USER
|
||||||
Spécifier le user avec lequel se connecter
|
Spécifier le user avec lequel se connecter
|
||||||
|
-p, --port PORT
|
||||||
|
Spécifier le port sur lequel se connecter
|
||||||
-o OPTION
|
-o OPTION
|
||||||
Ajouter une option de SSH
|
Ajouter une option de SSH
|
||||||
Les options suivantes *doivent* se trouver *AVANT* le premier argument:
|
Les options suivantes *doivent* se trouver *AVANT* le premier argument:
|
||||||
|
@ -82,14 +87,24 @@ function parse_hostsfile() {
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
function __expand_braces() {
|
||||||
|
if [[ "$1" == *{* ]] && [[ "$1" == *}* ]]; then
|
||||||
|
eval "echo $1"
|
||||||
|
else
|
||||||
|
echo "$1"
|
||||||
|
fi
|
||||||
|
}
|
||||||
function __dot_is_localhost() { [ "$1" == "." ] && echo "localhost" || echo "$1"; }
|
function __dot_is_localhost() { [ "$1" == "." ] && echo "localhost" || echo "$1"; }
|
||||||
function fix_hosts() {
|
function fix_hosts() {
|
||||||
# Si hosts contient des éléments multiple, comme a:b, séparer ces
|
# Si hosts contient des éléments multiple, comme a:b, séparer ces
|
||||||
# éléments. i.e (a b:c) --> (a b c)
|
# éléments. i.e (a b:c "d e") --> (a b c d e)
|
||||||
# Supporter la syntaxe @hostsfile qui permet de charger la liste des hôtes
|
# Supporter la syntaxe @hostsfile qui permet de charger la liste des hôtes
|
||||||
# depuis un fichier.
|
# depuis un fichier.
|
||||||
# Remplacer aussi les '.' par 'localhost'
|
# Remplacer aussi les '.' par 'localhost'
|
||||||
array_fix_paths hosts
|
array_map hosts __expand_braces
|
||||||
|
array_fix_paths hosts ":"
|
||||||
|
array_fix_paths hosts " "
|
||||||
|
|
||||||
local -a _hosts _tmphosts host
|
local -a _hosts _tmphosts host
|
||||||
for host in "${hosts[@]}"; do
|
for host in "${hosts[@]}"; do
|
||||||
host="${host%/}"
|
host="${host%/}"
|
||||||
|
@ -107,7 +122,7 @@ function fix_hosts() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function ussh() {
|
function ussh() {
|
||||||
args=(${quiet:+-q} ${tty:+-t} ${login:+-l "$login"})
|
args=(${quiet:+-q} ${tty:+-t} ${login:+-l "$login"} ${port:+-p "$port"})
|
||||||
for option in "${options[@]}"; do
|
for option in "${options[@]}"; do
|
||||||
args=("${args[@]}" -o "$option")
|
args=("${args[@]}" -o "$option")
|
||||||
done
|
done
|
||||||
|
@ -166,6 +181,7 @@ action=ssh
|
||||||
quiet=
|
quiet=
|
||||||
tty=
|
tty=
|
||||||
login="$USSH_USER"
|
login="$USSH_USER"
|
||||||
|
port=
|
||||||
options=()
|
options=()
|
||||||
domain="$USSH_DOMAIN"
|
domain="$USSH_DOMAIN"
|
||||||
ssh=
|
ssh=
|
||||||
|
@ -175,7 +191,8 @@ parse_opts + "${PRETTYOPTS[@]}" \
|
||||||
-q,--quiet quiet=1 \
|
-q,--quiet quiet=1 \
|
||||||
-t,--tty tty=1 \
|
-t,--tty tty=1 \
|
||||||
-l:,--login: login= \
|
-l:,--login: login= \
|
||||||
-o options \
|
-p:,--port: port= \
|
||||||
|
-o: options \
|
||||||
-d:,--domain: domain= \
|
-d:,--domain: domain= \
|
||||||
-S:,--ssh ssh= \
|
-S:,--ssh ssh= \
|
||||||
-R,--remove action=remove \
|
-R,--remove action=remove \
|
||||||
|
|
Loading…
Reference in New Issue