Fabric: Fabric 2 - Executar uma tarefa em um grupo (com argumentos)

Criado em 8 dez. 2017  ·  5Comentários  ·  Fonte: fabric/fabric

Eu tenho uma tarefa que tem argumentos. Eu gostaria de executar esta tarefa em um grupo de hosts, com um argumento diferente para a tarefa dependendo do host, de dentro de outro script Python.

O comentário dentro de execute diz para implementá-lo conforme o tutorial. Posso obter um link para este tutorial? E se eu fizer funcionar / fazê-lo funcionar com argumentos sendo passados, isso seria um pull request de boas-vindas?

Feature Group

Comentários muito úteis

Esse recurso é muito necessário para o Fabric2. Alguma ideia de quando será integrado?

Todos 5 comentários

Eu acho que isso é o mais próximo de um tutorial do Fabric 2: http://docs.fabfile.org/en/stable/getting_started.html

Eu gostaria de executar esta tarefa em um grupo de hosts, com um argumento diferente para a tarefa dependendo do host, de dentro de outro script Python.

Não conhecendo seu caso de uso exato e notando que o Group ainda não está super bem desenvolvido (o foco está em deixar o Connection em boa forma), vou apontar que _até agora_, o Group foi concebido como uma API de conveniência / wrapper apenas - é o caso comum de "eu lhe dou uma lista de nomes de host e uma coisa para fazer e você faz isso por mim, sem que eu tenha que escrever meu próprio loop".

Para qualquer coisa mais complexa, a ideia é que ainda deve ser muito fácil fazer isso sozinho usando conexões instanciadas manualmente dentro de qualquer construção Python que se ajuste ao seu caso de uso (iteração, etc.) Então, neste caso, você teria um 'meta' tarefa executando algo como for hostname, kwargs in my_map_of_hostnames_to_kwargs.items(): othertask(Connection(hostname), **kwargs) .

(Isso ainda deixa pyinvoke/invoke#170, ou menos provável, #4, mas por enquanto ambos são contornáveis.)

Se você fornecer detalhes sobre o caso de uso, talvez um de nós possa elaborar mais.


Re: tutorial: sim, a página 'começando' é o tutorial, a parte específica que finge saber sobre Group.execute é http://docs.fabfile.org/en/v2/getting_started.html#bringing -it-all -juntos - mas como acima, o comportamento ainda não foi pensado!

Muito obrigado por este tutorial v2. Eu havia encontrado a fonte no GitHub, mas esqueci de ler sobre isso.

cxn = Connection(host) é a parte crítica que estava faltando; as partes do tutorial que encontrei não mencionavam o que era cxn, e não cavei o suficiente para descobrir que era apenas uma conexão.

Eu já escrevi o código que eu precisava quando postei isso usando a porta Fabric3, mas com a intenção de mudar para v2 quando estiver no PyPi. Obrigado pelo seu tempo pessoal!

Editar: pode ajudar futuros usuários em potencial se você adicionar um link para esse tutorial v2 no README aqui. Eu puxaria o pedido, mas isso parece um pouco demais para uma mudança de uma linha: p

O host ser carregado automaticamente do arquivo de configuração fabric.json vez de passá-lo para o argumento -D na linha de comando?

Esse recurso é muito necessário para o Fabric2. Alguma ideia de quando será integrado?

Esta página foi útil?
0 / 5 - 0 avaliações