我有一个已创建的角色,可以将文件从服务器传输到服务器。问题是我只想发送以“ * tar.gz”结尾的特定文件。 现在,我的角色是传输每个包含“ tar.gz”表达式的文件。 (例如,我不需要的tar.gz.md5)。
如何创建通配符,以便仅发送以* tar.gz结尾的文件?我也想拥有包含一些单词的文件(如package),并以tar.gz结尾:file_package-1.tar.gz 我不需要文件:file_package-1.txt,file_package-2.pdf等。
我正在使用一个json文件,其中包含有关文件的元数据列表,最重要的是它具有文件的路径。 所以我正在搜索“路径”值中的json文件:
{
"uid": 1009,
"woth": false,
"mtime": 1555410625.083113,
"inode": 134219554,
"isgid": false,
"size": 1717899,
"roth": false,
"isuid": false,
"isreg": true,
"pw_name": "ansible",
"gid": 1009,
"ischr": false,
"wusr": true,
"xoth": false,
"rusr": true,
"nlink": 1,
"issock": false,
"rgrp": true,
"gr_name": "ansible",
"path": "/app/deploy/package_1-201810221543.tar.gz",
"xusr": false,
"atime": 1555410625.076113,
"isdir": false,
"ctime": 1555410625.083113,
"isblk": false,
"xgrp": false,
"dev": 64775,
"wgrp": false,
"isfifo": false,
"mode": "0640",
"islnk": false
},
{
"uid": 1009,
"woth": false,
"mtime": 1555410625.083113,
"inode": 134219558,
"isgid": false,
"size": 79,
"roth": false,
"isuid": false,
"isreg": true,
"pw_name": "ansible",
"gid": 1009,
"ischr": false,
"wusr": true,
"xoth": false,
"rusr": true,
"nlink": 1,
"issock": false,
"rgrp": true,
"gr_name": "ansible",
"path": "/app/deploy/package_1-201810221543.tar.gz.md5",
"xusr": false,
"atime": 1555410625.083113,
"isdir": false,
"ctime": 1555410625.083113,
"isblk": false,
"xgrp": false,
"dev": 64775,
"wgrp": false,
"isfifo": false,
"mode": "0640",
"islnk": false
},
在when语句找不到任何东西时使用* .tar.gz
when: "*tar.gz' in item.path"
这是我的角色:
- name: COPY FILE tar.gz
copy:
src: "{{ item.path }}"
dest: "{{ HOME_PATH }}/DEPLOY/"
with_items:
- "{{ files }}"
when: "tar.gz' in item.path"
对于任何建议将不胜感激
答案 0 :(得分:1)
find
根据特定的shell / regex模式过滤文件- name: FIND all tar.gz files
find:
paths: "[source-files-directory]"
patterns: "[shell-or-regex-pattern]"
use_regex: True
register: files_to_copy
访问此页面以获取更多详细信息:https://docs.ansible.com/ansible/2.3/find_module.html
copy
的情况下使用when
- name: COPY FILE tar.gz
copy:
src: "{{ item.path }}"
dest: "{{ HOME_PATH }}/DEPLOY/"
with_items:
- "{{ files_to_copy }}"
答案 1 :(得分:0)
我想说的是,使用shell,类似的事情应该起作用
- name: Copy tar.gz
shell: cp -r *.tar.gz {{ HOME_PATH }}/DEPLOY/
args:
chdir: "{{ item.path }}