2013-04-04 20 views
9

Sto sviluppando un modulo Ansible che genera un url, recupera (come get_url) il tarball in quell'url dal mio artifactory interno e quindi lo estrae. Mi chiedo se c'è un modo per includere o estendere il modulo core Ansible get_url nel mio modulo. Non posso avere questo in più passaggi perché l'url in uso viene generato da un hash git e richiede una ricerca multi-passo.Un modulo Ansible sviluppato può includere o estendere un modulo Ansible Core?

Se non c'è un modo, probabilmente mi limiterò a copiare l'intero modulo get_url e ad usarlo nel mio modulo, ma vorrei evitarlo.

mi piacerebbe fare qualcosa di simile:

module_json_response = module.get_module('get_url').issue_command('url=http://myartifactory.com/my_artifact.tar.gz dest=/path/to/local/my_artifact.tar.gz');

mia comprensione di Ansible è che si carica il modulo in uso e lo esegue, tra cui un altro modulo non è supportato o non è documentata .

Grazie in anticipo per qualsiasi aiuto.

risposta

9

per citare il post di Michael DeHaan here:

In generale, Ansible permette la condivisione di codice tramite "lib/ansible/module_common.py" per rendere la scrittura più facile funzionalità.

Essa non significa, tuttavia, rendono possibile per un modulo a chiamare un altro, che ha non, fino ad oggi, in realtà stato necessario - non è del tutto vero, abbiamo utilizzato per avere qualcosa di simile per file e copiare fino a quando siamo arrivati ​​ intelligente e si è trasferito il codice attributo di file in comune :)

sembra che in quanto l'accesso url è abbastanza frequente potremmo fare una funzione comune nel modulo comune per i download url - Se modifichiamo il codice GET_URL anche usarlo così non stiamo ripetendo noi stessi.

Successivamente ha seguito con:

È possibile accedere alle opere di modello modo scrivendo un plugin per azione , ma è più coinvolto di scrittura di un modulo client semplice.

+1 al trasferimento del codice get_url in comune, è venuto fuori un paio di volte.

Problemi correlati