Fabric: Fabric 2 - Exécuter une tâche sur un Groupe (avec arguments)

Créé le 8 déc. 2017  ·  5Commentaires  ·  Source: fabric/fabric

J'ai une tâche qui a des arguments. J'aimerais exécuter cette tâche sur un groupe d'hôtes, avec un argument différent de la tâche en fonction de l'hôte, à partir d'un autre script Python.

Le commentaire dans execute dit de l'implémenter selon le tutoriel. Puis-je obtenir un lien vers ce tutoriel ? Et si je le fais fonctionner/faites-le fonctionner avec des arguments transmis, serait-ce une pull request bienvenue ?

Feature Group

Commentaire le plus utile

Cette fonctionnalité est grandement nécessaire pour Fabric2. Une idée de quand il sera fusionné ?

Tous les 5 commentaires

Je pense que c'est la chose la plus proche d'un tutoriel Fabric 2: http://docs.fabfile.org/en/stable/getting_started.html

J'aimerais exécuter cette tâche sur un groupe d'hôtes, avec un argument différent de la tâche en fonction de l'hôte, à partir d'un autre script Python.

Ne connaissant pas votre cas d'utilisation exact, et notant que Group n'est pas encore très bien étoffé (l'accent a été mis sur la mise en forme de Connection), je soulignerai que _jusqu'à présent_, Group a été conçu comme une API pratique / wrapper seulement - c'est le cas courant de "Je vous donne une liste de noms d'hôtes et une chose à faire et vous le faites pour moi, sans que j'aie à écrire ma propre boucle."

Pour tout ce qui est plus complexe, l'idée est qu'il devrait toujours être assez facile de le faire vous-même en utilisant des connexions instanciées manuellement dans n'importe quelle construction Python adaptée à votre cas d'utilisation (itération, etc.). Donc, dans ce cas, vous auriez un "méta" tâche effectuant quelque chose comme for hostname, kwargs in my_map_of_hostnames_to_kwargs.items(): othertask(Connection(hostname), **kwargs) .

(Cela laisse toujours pyinvoke/invoke#170, ou moins probable, #4, mais pour l'instant, les deux sont contournables.)

Si vous fournissez des détails sur le cas d'utilisation, l'un de nous pourra peut-être développer davantage.


Re : tutoriel : oui, la page « démarrage » est le tutoriel, le bit spécifique qui prétend connaître Group.execute est http://docs.fabfile.org/en/v2/getting_started.html#bringing -it-all -ensemble - mais comme ci-dessus, le comportement n'est pas encore vraiment pensé !

Merci beaucoup pour ce tutoriel v2. J'en avais trouvé la source sur GitHub mais j'avais négligé de lire autour de lui.

cxn = Connection(host) est le bit critique qui me manquait ; les parties du didacticiel que j'avais trouvées ne faisaient aucune mention de ce qu'était cxn, et je n'ai pas assez creusé pour comprendre qu'il s'agissait simplement d'une connexion.

J'ai déjà écrit le code dont j'avais besoin lorsque j'ai posté ceci en utilisant le port Fabric3, mais avec l'intention de passer à la v2 une fois qu'il sera sur PyPi. Merci pour votre temps les gars!

Edit : Cela pourrait aider les futurs utilisateurs potentiels si vous avez ajouté un lien vers ce didacticiel v2 dans le README ici. Je le demanderais mais cela semble un peu trop pour un changement d'une ligne :p

Le host ne peut-il pas être chargé automatiquement à partir du fichier de configuration fabric.json au lieu de le passer à l'argument -D sur la ligne de commande ?

Cette fonctionnalité est grandement nécessaire pour Fabric2. Une idée de quand il sera fusionné ?

Cette page vous a été utile?
0 / 5 - 0 notes