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?


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]

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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.