2017-02-16 20 views
0

По некоторым странным причинам у меня возникают проблемы с простой задачей, которая копирует содержимое папки myfiles (несколько файлов там) в местоположение dist/myfiles. Задача выглядит следующим образом:Копирование содержимого папки с помощью Ansible

name: Deploy config files like there is no tomorrow 
copy: 
    src: "{{ item }}" 
    dest: "/home/{{ ansible_user_id }}/dist/{{ item }}" 
with_items: 
    - 'config' 
    - 'myfiles/' 

myfiles папка существует под файл dist и config копируется в папку dist.

Возможно ли это в Ansible или я должен копировать каждый файл отдельно? Я делаю это совершенно неправильно?

+1

Модуль копирования копирует файлы. Он поддерживает некоторое рекурсивное копирование каталогов, но не лучший. Если вам нужны каталоги, вы должны попробовать http://docs.ansible.com/ansible/synchronize_module.html. Примечание: для работы требуется rsync на компьютере, который по умолчанию не установлен для некоторых дистрибутивов. – SztupY

ответ

3

Ваша задача копирует оба: файл config и myfiles на цели Debian и CentOS правильно.


Если по какой-то причине у вас есть проблемы, вы можете посмотреть на Looping over Fileglobs.

Вам нужно разделить задачу на две части, причем второй один похожий:

- name: Deploy multiple config files 
    copy: 
    src: "{{ item }}" 
    dest: "/home/{{ ansible_user_id }}/dist/myfiles/{{ item | basename }}" 
    with_fileglob: 
    - /path/to/myfiles/* 

Для рекурсивного копирования, проверьте this question on SeverFault


В качестве альтернативы можно использовать synchronize module, но обратите особое внимание при использовании become. См. this question on SuperUser.