2015-01-21 11 views
6

Sto usando il modulo di archiviazione di Ansible e che non sembra funzionare per estrarre il file di guerra. Funziona bene per .tar.Come estrarre il file di guerra sulla destinazione usando ansible

C'è anche un interruttore setype: "tipo parte del contesto file di SELinux" che io non sono sicuro se può essere utilizzato per impostare il tipo di file come la guerra.

ho provato questo:

-name: Unpack war 
unarchive: src=~/wars/mywar.war 
      dest=/tmp/deploy 
      setype=war 
      copy=no 

dà errore: nuovo msg: Failed to find handler to unarchive. Make sure the required command to extract the file is installed.

Quando non uso 'setype' ottengo esattamente lo stesso errore.

Come posso estrarre il file di guerra utilizzando Ansible?

+0

setype non ha nulla a che fare con esso lo è per "Security Enhanced Linux" non per un tipo di file. – serverhorror

risposta

0

In base alla documentazione Ansible per unarchive module, supporta solo i file compressi tar, gzip, bzip2 e xz. Ho rapidamente sfogliato la fonte e non ho visto alcuna indicazione che supporta file di guerra non compressi. Probabilmente avrai bisogno di decomprimere manualmente il file war invocando/path/to/java/bin/jar manualmente tramite il comando o il modulo shell.

Modifica: Inoltre, il parametro setype non è destinato a specificare il tipo di file di archivio. Questo parametro ha a che fare con SELinux (Security-Enhanced Linux). Se non hai familiarità con SELinux, probabilmente non avrai bisogno di usare quel parametro.

+1

anche zip regolare/decomprimere. Ma da quello che ho letto, i file war/jar sono essenzialmente zip ... – Mxx

+0

Sono essenzialmente file zip ma usano il comando jar per comprimerli/decomprimerli piuttosto che il comando unzip/untar/gunzip. Il modulo ansible dovrebbe essere modificato per supportare l'uso del comando jar quando vengono specificati i file war per supportare il disimballaggio. –

+0

Ho proposto una soluzione precedente dicendo esattamente questo. È sbagliato :) 'ansible -i ../inventory/hosts local -m unarchive -a" src = zip-content.war dest =./Extracted "-v' (file war creato con' zip -r ... 'dalla riga di comando) - Non posso commentare l'errore effettivo che l'OP ha. – serverhorror

0

Ho avuto questo errore io stesso con un archivio ZIP - non è riuscito perché lo ZIP era incompleto. Verifica di poter eseguire unzip ~/wars/mywar.war direttamente sul server e potresti ricevere un messaggio di errore più utile.

1

Dovresti essere in grado di annullare l'archiviazione di un file .war utilizzando Ansible. Sei sicuro che 'unzip' è installato & il comando 'unzip' disponibile sul tuo sistema di destinazione?

Secondo Ansible Documentation: "richiede gtar comando/unzip su host di destinazione"

+0

Puoi anche eseguire ansible con il parametro '-vvv' per ottenere un output più dettagliato, che di solito ti dice quale sia il problema. – trainmaster

Problemi correlati