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]
GMaster
источник
1
Кажется, это правильный ответ, но в настоящее время это может привести к сбою. См. Этот отчет об ошибке: github.com/ansible/ansible/issues/29657 промежуточным решением было бы разархивировать в родительском каталоге, а затемcommand: mv /foo/bar-version-someFirstLevelFolder/* foo/bar/
TheAtomicOption
Проверено в последней версии, работает. Но архив не идемпотентен.
Жером Б