ANSIBLE извлечение без первого каталога


29

При извлечении файла tar.gz в ansible я получаю первый каталог

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

что приводит к тому, /foo/bar/bar-version-someFirstLevelFolder/contentOfArchive как я могу предотвратить создание этого дополнительного уровня иерархии?


Может быть неуместно, но я знаю, что иногда нужно быть осторожным при добавлении косой черты в каталог назначения. Это помогает вообще?
SauceCode

Ответы:


40

Для того, чтобы раздеть bar-version-someFirstLevelFolderвам нужно использовать --strip-components=1опцию в tar. Таким образом, ваша книга должна выглядеть

- name: Extract archive
  unarchive:
    src: file.tar.gz
    dest: /foo/bar
    extra_opts: [--strip-components=1]

1
Кажется, это правильный ответ, но в настоящее время это может привести к сбою. См. Этот отчет об ошибке: github.com/ansible/ansible/issues/29657 промежуточным решением было бы разархивировать в родительском каталоге, а затемcommand: mv /foo/bar-version-someFirstLevelFolder/* foo/bar/
TheAtomicOption

Проверено в последней версии, работает. Но архив не идемпотентен.
Жером Б
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.