wyciąg ansible bez pierwszego katalogu

29

Podczas rozpakowywania pliku tar.gz w ansible kończę na pierwszym katalogu

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

co powoduje: /foo/bar/bar-version-someFirstLevelFolder/contentOfArchive Jak mogę zapobiec tworzeniu tego dodatkowego poziomu hierarchii?

Georg Heiler
źródło
Może to nie być istotne, ale wiem, że czasami trzeba zachować ostrożność, dodając końcowy ukośnik do katalogu docelowego. Czy to w ogóle pomaga?
SauceCode

Odpowiedzi:

40

Aby rozebrać bar-version-someFirstLevelFolder, musisz użyć --strip-components=1opcji w tar. Twój podręcznik powinien wyglądać tak

- name: Extract archive
  unarchive:
    src: file.tar.gz
    dest: /foo/bar
    extra_opts: [--strip-components=1]
GMaster
źródło
1
To wydaje się być poprawną odpowiedzią, ale obecnie może powodować awarię. Zobacz ten raport o błędzie: github.com/ansible/ansible/issues/29657 rozwiązaniem pośrednim byłoby rozpakowanie w katalogu nadrzędnym, a następniecommand: mv /foo/bar-version-someFirstLevelFolder/* foo/bar/
TheAtomicOption
Testowany w ostatniej wersji, działa. Ale brak archiwizacji nie jest idempotentny.
Jérôme B,