由于一些奇怪的原因,我遇到了一个简单任务的问题,即将文件夹myfiles
的内容(其中的文件很少)复制到dist/myfiles
位置。任务看起来像这样:
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中是否可行,或者我应该单独复制每个文件?我完全错了吗?
答案 0 :(得分:5)
您的任务同时复制:config
文件和Debian和CentOS上的myfiles
目标。
如果由于某种原因您遇到问题,可以查看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。