如何使用Ansible模块在远程系统上移动/重命名文件/目录?我不想使用命令/shell任务,也不想将文件从本地系统复制到远程系统。
发布于 2014-06-11 22:22:53
文件模块不会复制远程系统上的文件。src参数仅在创建指向文件的符号链接时由文件模块使用。
如果您想要在远程系统上完全移动/重命名文件,那么最好的方法是使用命令模块来调用相应的命令:
- name: Move foo to bar
command: mv /path/to/foo /path/to/bar
如果你想变得更花哨,那么你可以首先使用stat模块来检查foo是否确实存在:
- name: stat foo
stat: path=/path/to/foo
register: foo_stat
- name: Move foo to bar
command: mv /path/to/foo /path/to/bar
when: foo_stat.stat.exists
发布于 2014-06-28 01:42:10
我发现命令模块中的创建选项很有用。这样如何:
- name: Move foo to bar
command: creates="path/to/bar" mv /path/to/foo /path/to/bar
我曾经像Bruce P建议的那样,使用stat来做两个任务的方法。现在,我用creates作为一个任务来做这件事。我认为这要清楚得多。
发布于 2017-09-28 22:55:21
另一个对我来说效果很好的选择是使用 synchronize module 。然后使用file模块删除原始目录。
下面是文档中的一个示例:
- synchronize:
src: /first/absolute/path
dest: /second/absolute/path
archive: yes
delegate_to: "{{ inventory_hostname }}"
https://stackoverflow.com/questions/24162996
复制相似问题