Fabric: Tejido 2: ejecutar una tarea en un grupo (con argumentos)

Creado en 8 dic. 2017  ·  5Comentarios  ·  Fuente: fabric/fabric

Tengo una tarea que tiene argumentos. Me gustaría ejecutar esta tarea en un grupo de hosts, con un argumento diferente para la tarea según el host, desde otro script de Python.

El comentario dentro de execute dice implementarlo según el tutorial. ¿Puedo obtener un enlace a este tutorial? Y si lo hago funcionar/lo hago funcionar con los argumentos que se pasan, ¿sería esta una solicitud de extracción bienvenida?

Feature Group

Comentario más útil

Esta característica es muy necesaria para Fabric2. ¿Alguna idea de cuándo se fusionará?

Todos 5 comentarios

Creo que esto es lo más parecido a un tutorial de Fabric 2: http://docs.fabfile.org/en/stable/getting_started.html

Me gustaría ejecutar esta tarea en un grupo de hosts, con un argumento diferente para la tarea según el host, desde otro script de Python.

Sin conocer su caso de uso exacto y notando que Group aún no está muy bien desarrollado (el enfoque ha estado en hacer que Connection esté en buena forma), señalaré que _hasta ahora_, Group se ha concebido como una API de conveniencia/contenedor solo: es el caso común de "Te doy una lista de nombres de host y algo que hacer y tú lo haces por mí, sin que yo tenga que escribir mi propio bucle".

Para algo más complejo, la idea es que aún debería ser bastante fácil hacerlo usted mismo utilizando conexiones instanciadas manualmente dentro de cualquier construcción de Python que se ajuste a su caso de uso (iteración, etc.). Entonces, en este caso, tendría un 'meta' tarea realizando algo como for hostname, kwargs in my_map_of_hostnames_to_kwargs.items(): othertask(Connection(hostname), **kwargs) .

(Eso todavía deja pyinvoke/invoke#170, o menos probable, #4, pero por ahora ambos son solucionables).

Si proporciona detalles sobre el caso de uso, tal vez uno de nosotros pueda dar más detalles.


Re: tutorial: sí, la página de "inicio" es el tutorial, la parte específica que pretende saber sobre Group.execute es http://docs.fabfile.org/en/v2/getting_started.html#bringing -it-all -juntos - pero como arriba, ¡el comportamiento aún no está pensado!

Muchas gracias por este tutorial v2. Encontré la fuente en GitHub pero olvidé leerlo.

cxn = Connection(host) es el bit crítico que me faltaba; las partes del tutorial que había encontrado no mencionaban qué era cxn, y no investigué lo suficiente como para darme cuenta de que era solo una conexión.

Ya escribí el código que necesitaba cuando publiqué esto usando el puerto Fabric3, pero con la idea de pasar a v2 una vez que esté en PyPi. ¡Gracias por su tiempo chicos!

Editar: podría ayudar a futuros usuarios potenciales si agregara un enlace a ese tutorial v2 en el LÉAME aquí. Lo solicitaría, pero eso parece demasiado para un cambio de una línea: p

¿No se puede cargar automáticamente host desde el archivo de configuración fabric.json lugar de pasarlo al argumento -D en la línea de comando?

Esta característica es muy necesaria para Fabric2. ¿Alguna idea de cuándo se fusionará?

¿Fue útil esta página
0 / 5 - 0 calificaciones