extrait ansible sans premier répertoire

29

Lors de l'extraction d'un fichier tar.gz dans ansible, je me retrouve avec un premier répertoire

- name: Extract archive
  unarchive: src=file.tar.gz
             dest=/foo/bar

ce qui se traduit par /foo/bar/bar-version-someFirstLevelFolder/contentOfArchive Comment puis-je empêcher la création de ce niveau supplémentaire de hiérarchie?

Georg Heiler
la source
Peut ne pas être pertinent, mais je sais que vous devez parfois faire attention en ajoutant une barre oblique de fin au répertoire de destination. Est-ce que cela vous aide?
SauceCode

Réponses:

40

Pour supprimer le, bar-version-someFirstLevelFoldervous devez utiliser l' --strip-components=1option dans tar. Votre playbook devrait donc ressembler à

- name: Extract archive
  unarchive:
    src: file.tar.gz
    dest: /foo/bar
    extra_opts: [--strip-components=1]
GMaster
la source
1
Cela semble être la bonne réponse, mais actuellement, cela peut provoquer un crash. Voir ce rapport de bogue: github.com/ansible/ansible/issues/29657 une solution intermédiaire serait de décompresser dans le répertoire parent et d'avoir ensuitecommand: mv /foo/bar-version-someFirstLevelFolder/* foo/bar/
TheAtomicOption
Testé dans la dernière version, cela fonctionne. Mais, désarchiver n'est pas idempotent.
Jérôme B