#ansible
#ansible
Вопрос:
У меня есть файл, который содержит разные имена файлов. Какие имена файлов находятся в этом файле, меняется каждый раз, когда я запускаю playbook.
Хотя я нашел только способы либо скопировать все файлы в каталог, либо скопировать определенные файлы, которые определены как статические.
filenames.txt:
file1
file4
Каталог, содержащий файлы:
file1
file2
file3
file4
file5
Мой план состоял в том, чтобы создать переменную в моей таблице vars, в которой я сохраняю файл, а затем использую его в своей роли.
copy-files: path/filenames.txt
Роль для копирования файлов:
---
- name: Copy Files
copy:
src: "{{ item }}"
dest: "{{path2}}"
with_fileglob:
- "/pathtofiles/{{copy-files}}"
К сожалению, это не работает. Кто-нибудь еще знает другой подход?
Ответ №1:
Если я вас правильно понял, вы хотите скопировать файлы, перечисленные в path/filenames.txt
. Вы можете сделать это с помощью следующей задачи:
- name: Copy Files to /tmp
copy:
src: "{{ item }}"
dest: "{{ hqlname_sys2 }}"
loop: "{{ lookup('file', 'path/filenames.txt').split('n') }}"
Содержимое path/filenames.txt
считывается с помощью плагина lookup file в строку, и эта строка разбивается функцией split на 'n'
разделитель, так что вы получаете массив с именами файлов, который передается в цикл.
Комментарии:
1. Спасибо за ваш ответ. Можете ли вы объяснить мне, как именно работает код?
2. Я не уверен, правильно ли вы поняли мой вопрос. path/filenames.txt содержит только имена файлов. Сами файлы находятся в другом месте на том же хосте.
3. В другом месте означает в другом месте в том же каталоге? Если это так, вы можете добавить
src: "{{ item }}"
путь, напримерsrc: "/path/to/{{ item }}"
4. В другом месте означает в другом каталоге. но с src: «path / to{{item}}» я думаю, это должно сработать. Спасибо за вашу помощь
5. Привет, у меня вопрос о вашем решении. Atm я сталкиваюсь с проблемой, что если, например, в filenames.txt тогда ваше решение скопирует все файлы в этом каталоге, а не 0. Знаете ли вы способ убедиться, что этого не произойдет?