Administrer un parc de machines (script, ssh, sudo, ubuntu) [Résolu] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 14-04-2010 à 12:17:28
Tu peux regarder du côté de puppet ou cfengine pour le déploiement de fichiers.
Marsh Posté le 14-04-2010 à 14:55:12
rdist est fait pour ca ! Et bien sur authentification par clefs ssh ;-)
Marsh Posté le 14-04-2010 à 16:06:57
Merci pour vos réponses.
Puppet et cfengine ne répondent pas à mon besoin immédiat : j'ai uniquement besoin de transférer un fichier, ou d'écrire dedans.
Rdist me semble plus approprié, mais ça demande quelques manip' qui me sont justement nécessaire pour écrire dans /etc j'regarde ça.
Pour exécuter sudo à travers ssh, j'ai trouvé la solution dans le man.
Citation : -t Force pseudo-tty allocation. This can be used to execute arbi‐ |
Cependant, j'ai un problème avec sudo, sur les machines distantes :
Code :
|
En revanche, si je décompose la commande en plusieurs étapes, cela fonctionne :
Code :
|
Le problème c'est qu'en scriptant avec ssh, la décomposition ne fonctionne pas, un terminal s'ouvre et ni le echo ni le exit n'ont lieu :
Code :
|
Pourtant, la syntaxe me semble correcte et le man me confirme que sudo devrait accepter une commande directement après le -i.
Citation : The -i (simulate initial login) option runs the shell |
Une idée pour indiquer l'adresse du serveur ocs à mes agents déjà installés mais jamais configurés ?
Marsh Posté le 14-04-2010 à 16:10:24
utilise fabric : http://docs.fabfile.org/0.9.0/
ça a été conçu pour ça (et plus encore)
Marsh Posté le 14-04-2010 à 17:49:59
En uploadant un script bash, et en le faisant exécuter ça ne marche pas ?
Marsh Posté le 14-04-2010 à 19:05:28
bardiel a écrit : En uploadant un script bash, et en le faisant exécuter ça ne marche pas ? |
Marsh Posté le 15-04-2010 à 09:58:14
Si vous avez le moyen de passer le mot de passe à sudo sans qu'il n'apparaisse en clair, je prends
Marsh Posté le 15-04-2010 à 10:06:47
thamieu a écrit : Si vous avez le moyen de passer le mot de passe à sudo sans qu'il n'apparaisse en clair, je prends |
utilise fabric
Marsh Posté le 15-04-2010 à 10:10:43
black_lord a écrit : utilise fabric |
Tu commences à radoter
Spoiler : oui, y a une raison, je sais |
Marsh Posté le 15-04-2010 à 11:12:58
o'gure a écrit :
|
ça va encore m'agacer
Marsh Posté le 15-04-2010 à 12:12:30
et scp, connais pas ?
en ayant déjà les clés des machines distantes ou encore mieux si dès le départ on a une authentification à clé publique, on peut très bien scripter l'envoi d'un script ( ), même si pour faire "propre" il faudrait plutôt taper x fois la commande :
scp monscript.sh machinedist_x:/etc/ocsinventory/ocsinventory-agent.cfg |
après j'ai bien vu ça, mais bon impose l'installation d'expect et le mot de passe en clair dans le script
Marsh Posté le 15-04-2010 à 13:15:25
bardiel a écrit : on peut très bien scripter l'envoi d'un script ( ), même si pour faire "propre" il faudrait plutôt taper x fois la commande :
|
On peut effectivement réinventer la roue sans arrêt et refuser d'utiliser les beaux packages déjà prêt :
Citation : Package: fabric |
Marsh Posté le 15-04-2010 à 13:41:26
oui t'as raison, pourquoi installer un logiciel (fabric) ainsi qu'un environnement (python, même si installé par défaut sur Ubuntu, peut ne pas l'être...), pour faire ce que l'on a déjà (scp)
Marsh Posté le 15-04-2010 à 13:58:19
bardiel a écrit :
après j'ai bien vu ça, mais bon impose l'installation d'expect et le mot de passe en clair dans le script |
bardiel a écrit : oui t'as raison, pourquoi installer un logiciel (fabric) ainsi qu'un environnement (python, même si installé par défaut sur Ubuntu, peut ne pas l'être...), pour faire ce que l'on a déjà (scp) |
bah ouais, j'y connais rien, c'est pas mon taff et j'y connais que dalle en unix d'ailleurs 132k à installer c'est vraiment trop lourd pour gagner des heures de boulot en plus ça utilise SSH & le sftp. Vindiou, faudrait revenir à telnet & rcp avant on savait vivre
Et puis expect c'est tellllllleement naturel à utiliser
Bref, des mecs comme toi ça lancerait des fusées avec des élastiques...
Marsh Posté le 15-04-2010 à 14:04:32
bardiel a écrit : pour faire ce que l'on a déjà (scp) |
Pour le faire simplement et se faciliter le dévelopement/déploiement. Ca me semble suffir comme raison.
Ton script tu vas bien devoir te le coltiner pour gérer l'ensemble des machines et la gestion des privilèges. Autant se servir de primitives éprouvées au lieu de perdre du temps à réinventer un moteur entier.
Marsh Posté le 15-04-2010 à 15:02:09
bardiel a écrit :
|
black_lord a écrit : |
Pendant un instant j'ai cru que 132k c'était ton salaire
o'gure a écrit : |
Moi qui n'ai fait qu'un peu de bash, il me paraissait aussi plus pratique de résoudre ça à coups de ssh/scp et expect.
J'aurai mis le temps, mais ce fabric m'a l'air d'être un outil très très pratique. Par contre le coup du env.user est très sioux
Voilà donc comment écrire mon fichu fichier dans /etc :
Installation de fabric (la version des dépôts ubuntu est très ancienne)
Citation : |
Ecriture du script fabfile.py
Citation : |
Exécution
Citation : |
J'avais brièvement essayé rdist mais il me semble qu'il ne gérait pas sudo comme je le voulais.
En tout cas merci pour vos réponses qui en plus de m'aider à me dépatouiller me font découvrir des outils qui risquent fort de me faciliter la tâche plus d'une fois.
Marsh Posté le 15-04-2010 à 17:06:07
petite question quand même : c'était (c'est) pour combien de machines clientes ? (que la prochaine fois que je/on vois la question, je/on penche aussi pour une solution identique si plus de x machines)
au passage, pour l'exécution c'est bien fabfile ocsagent et pas fab ocsagent ?
et merci pour le code pour les suivants
@black_lord : telnet, c'était mieux avant (copyrithé ? )
et expect, oui c'est naturel (comment ça t'as pas 10 interpréteurs sur ta machine Linux ? )
Citation : Bref, des mecs comme toi ça lancerait des fusées avec des élastiques... |
oui, avec des modèles très gros format
Spoiler : chuis pu là |
je proposais surtout l'utilisation de scp car :
1- (quasi-) universelle, que l'on est un client ubuntu, un serveur Debian (encore heureux ), une SuSE (et pas Suze), une Gentoo (ou un Sabayon), etc...
2- scriptable (oui bon, je reconnais faut le vouloir )
je pense qu'il vaut mieux un tournevis (et le format de vis) disponible partout qu'une vis made in Machin utilisable avec un tournevis uniquement de la marque Bidule®™, enfin bon après on va pas polémiquer dessus, chacun fait comme il l'entend (et heureusement d'ailleurs)
Marsh Posté le 16-04-2010 à 11:40:37
Nombre de machines encore indéterminé. Testé avec une.
J'vais bientôt voir comment ça se passe pour déclarer un identifiant commun à une liste de machines, sans avoir à ajouter un user@ devant chaque adresse.
Pour l'exécution c'est fab ocsagent, où ocsagent est le nom d'une fonction qui se trouve dans un fichier fabfile.py.
Et puis fabric ça me semble aussi universel que scp.
Marsh Posté le 16-04-2010 à 12:06:43
thamieu a écrit : Nombre de machines encore indéterminé. Testé avec une. |
tu settes le user dans ton fabfile.py
et fabric utilise scp (et ssh) via paramiko
Marsh Posté le 21-04-2010 à 09:29:43
black_lord a écrit : |
Si je définis les variables ainsi, j'obtiens une erreur :
Citation : |
Citation : |
Il me faut définir explicitement l'utilisateur pour chaque machine, de cette manière :
Citation : |
Ce n'est pas très confortable. Je préfèrerais mettre la liste des machines dans un fichier séparé, en ne définissant l'utilisateur qu'une seule fois.
Une idée ?
Marsh Posté le 21-04-2010 à 19:24:33
gug42 a écrit : oczinventory/glpi ? |
hmm, toi/lire messages précédents ?
le but de thamieu est justement d'uploader sur ses clients un fichiers de configuration pour OCS justement... à défaut d'une GPO (merci aux programmeurs de Microsoft de cette géniale invention), thamieu est obligé de scripter un fichier d'upload.
par contre même ainsi je pense qu'à chaque fois ton script va te demander le mot de passe pour chaque machine sur lequel le script agit. tu veux un gros élastique pour lancer ta fusée ?
Marsh Posté le 21-04-2010 à 21:58:29
bardiel a écrit : |
Toutafé. Mais comme mes machines ne sont intégrées à aucun annuaire, c'est pas des GPO qui m'aideront
bardiel a écrit : |
Nan, la solution de black lord est très efficace, elle demande le mot de passe pour le compte local de la 1ère machine et fournit le même mot de passe aux comptes locaux (du même nom) des machines suivantes.
Là c'que j'veux c'est
- utiliser la variable env.user sans me ramasser un message d'erreur imbitable
- utiliser une liste de machine plutôt que spécifier chaque nom entre apostrophes
J'pense qu'après j'aurai plus besoin d'élastique.
Marsh Posté le 21-04-2010 à 22:23:42
thamieu a écrit : Nan, la solution de black lord est très efficace, |
évidemment
Marsh Posté le 24-04-2010 à 12:18:20
black_lord a écrit : |
PQ
Marsh Posté le 24-04-2010 à 12:19:01
black_lord a écrit : |
et la modestie
Marsh Posté le 13-07-2010 à 10:33:41
je up, même si c'est résolu, désolé, j'ai un besoin similaire avec une trentaine de machine, fabric a l'air de faire ce dont j'ai besoin mais ya un truc qui me chiffonne c'est que j'aimerais que la maintenance puisse se faire de façon non synchro: je m'explique:
Si au moment où je lance fabric, ya que 32 machines sur 35 qui sont allumées. je voudrais que les opérations soient effectuées sur ces 32 machines et que l'opération soit reportée automatiquement sur les autres machines
Mieux encore, je voudrais pouvoir gérer une liste d'opération qui puissent être exécutées à la suite si j'installe un nouveau poste par exemple ou ignorées si déjà effectuées
A priori, je devrais pouvoir gérer ça avec du code Python et un crontab mais je me demandais si ça existait pas en natif
Marsh Posté le 13-07-2010 à 10:37:19
ça n'existe pas en natif mais y'a des palliatifs.
Marsh Posté le 13-07-2010 à 10:45:48
nickel, je vais pouvoir jouer avec ça ce week-end
Merci
Marsh Posté le 22-07-2010 à 05:26:39
bon petite update, ça se passe plutôt pas mal pour moi, ya un truc qui me chiffone c'est le fait de ne pas pouvoir exécuterles commandes sur plusieurs machines en parallèle mais a priori, c'est en cours de dev: http://code.fabfile.org/issues/show/19#change-664
J'ai une tache qui prend entre une et deux heures à la louche donc je peux pas vraiment la faire tourner de façon séquentielle, enfin je vais voir si je peux pas le faire en tâche de fond.
Marsh Posté le 14-04-2010 à 11:38:54
Bonjour,
Je souhaite écrire de manière automatisée dans /etc sur un ensemble de machines.
Ces machines tournent sous Ubuntu, le compte root est désactivé donc.
Ca commence mal me direz-vous, heureusement je dispose pour chaque système
- d'un compte sudoer local (le même sur toutes les machines).
- d'un serveur ssh (bien qu'aucune clé ssh ne soit encore en place).
Question :
Comment déployer un fichier de conf dans le /etc de toutes ses machines, sans laisser traîner de mot de passe en clair dans un script ou sur le résal, sans avoir à prendre la main sur chacun des postes ?
Par défaut, sudo ne tolère pas être exécuté à travers ssh, (sudo: no tty present and no askpass program specified), donc là, j'ai l'impression de devoir au minimum refaire la conf de sudo sur chacun des postes.
J'espère qu'il y a parmis vous des gens plus rusés que moi, ou ça risque d'être laborieux.
Message édité par thamieu le 15-04-2010 à 15:03:44