extrato ansible sem primeiro diretório

29

Ao extrair um arquivo tar.gz no ansible, termino com um primeiro diretório

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

que resulta em /foo/bar/bar-version-someFirstLevelFolder/contentOfArchive Como posso evitar a criação desse nível extra de hierarquia?

Georg Heiler
fonte
Pode não ser relevante, mas sei que algumas vezes você precisa ter cuidado ao adicionar uma barra final no diretório de destino. Isso ajuda em tudo?
SauceCode

Respostas:

40

A fim de retirar o bar-version-someFirstLevelFolderque você precisa para usar a --strip-components=1opção tar. Portanto, seu manual deve parecer

- name: Extract archive
  unarchive:
    src: file.tar.gz
    dest: /foo/bar
    extra_opts: [--strip-components=1]
GMaster
fonte
11
Essa parece ser a resposta correta, mas atualmente pode causar um acidente. Veja este relatório de bug: github.com/ansible/ansible/issues/29657 uma solução intermediária seria descompactar no diretório pai e depois ter umcommand: mv /foo/bar-version-someFirstLevelFolder/* foo/bar/
TheAtomicOption
Testado na última versão, funciona. Mas desarquivar não é idempotente.
Jérôme B