Я пытаюсь скопировать кучу файлов с сервера X (не контролировать машину) к группе серверов, цели: Y1, Y2, ..., Yn (определенный в хозяине файл)анзибль Копирование файлов
files:
'-path
'- files
'- file1
'- file2
'- dir
'- file_x
Мой сборник пьес:
#!/usr/bin/env ansible-playbook
---
vars:
src_dir: /path/files
hosts: {{ targets }}
tasks:
- name: copying files
command: "rsync -avrcz X:{{ src_dir }}/{{ artifacts }} {{ dest_dir }}"
Моя командная строка:
./playbook.yml -e '{"targets": "targets", "artifacts" : "{file1,file2,dir/file_x}", "dest_dir": "/yserv/dest/path"}'
Это работает, и я могу распараллелить довольно прилично, но я получаю:
[ПРЕДУПРЕЖДЕНИЕ]: Рассмотрите возможность использования синхронизации модуля, а не работает Rsync
Есть ли способ, чтобы достичь это с помощью модуля синхронизации? Ansible, похоже, не нравится bash расширение скобки синтаксис. Передача списка файлов в виде массива и использование with_items не практично, так как это заставляет все это последовательный, вызывая Rsync для каждого файла и, следовательно, очень медленно (есть огромный список файлов для копирования)
Вам нужно скопировать только те файлы, а не всю структуру каталогов из 'files' вниз? –
@XiongChiamiov Спасибо, что ответили. Да, это очень важный вопрос, но я требую, чтобы иерархия dir/file назначения несколько отличалась. Поэтому, если на XI есть: _/store/a/b/c/{d, e}/{f11, f12 ...} _, есть также файлы на уровне/store/a/b say x_1, x_2. .. по месту назначения я хочу: _/home/xuser/b/{d, e, f1}/{f11, f12, ..} _ и _/home/xuser/b/{x_1, x_2 ..} _. Следовательно, в действительности, в расширении скобки, я пропускаю _ {x_1, x_2, c/d, c/e} _ –
не используют для этого модуль синхронизации, он не работает даже для версии 2.3, предпочитает команду rsync – pinkvoid