我想使用Ansible在远程位置上ovrwrite文件。不论zip文件中的内容是否更改,每次我运行的playbook文件都需要在目标服务器上覆盖。
下面是我的剧本
- hosts: localhost
tasks:
- name: Checking if File is exsists to copy to update servers.
stat:
path: "/var/lib/abc.zip"
get_checksum: False
get_md5: False
register: win_stat_result
- debug:
var: win_stat_result.stat.exists
- hosts: uploads
tasks:
- name: Getting VARs
debug:
var: hostvars['localhost']['win_stat_result']['stat'] ['exists']
- name: copy Files to Destination Servers
win_copy:
src: "/var/lib/abc.zip"
dest: E:\xyz\data\charts.zip
force: yes
when: hostvars['localhost']['win_stat_result']['stat']['exists']
当我运行此剧本时,它没有覆盖目标位置的文件,因为文件已经存在。我使用了force=yes
,但是没有用。
答案 0 :(得分:0)
也许只是在复制任务之前添加删除任务?
答案 1 :(得分:0)
复制模块默认覆盖设置为dest参数的现有文件(即,强制默认为yes)。源文件可以来自您所连接的远程服务器,也可以来自您的剧本运行的本地计算机。这是一个代码段:
- name: Overwrite file if it exists, the remote server has the source file bc remote_src is set below
copy:
src: "/var/lib/abc.zip"
dest: E:\xyz\data\charts.zip
remote_src: yes
答案 2 :(得分:0)
您可以在复制新文件之前删除文件:
- name: Delete file before copy
win_file:
path: E:\xyz\data\charts.zip
state: absent