Как переписать файл в Ansible
Я хочу, чтобы ovrwrite файл на удаленном месте, используя Ansible. Независимо от того, изменяется содержимое 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
но это не сработало.
4 ответа
Попробуйте модуль Ansible copy.
Модуль копирования по умолчанию перезаписывает существующий файл, для которого задан параметр dest (т. Е. Force по умолчанию имеет значение yes). Исходный файл может быть получен с удаленного сервера, к которому вы подключены, или с локального компьютера, с которого запускается ваш playbook. Вот фрагмент кода:
- 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
Вы можете удалить файл перед копированием нового:
- name: Delete file before copy
win_file:
path: E:\xyz\data\charts.zip
state: absent
Может быть, просто добавить задачу удаления перед задачей копирования?
Он будет отменен только в том случае, если содержимое обоих файлов отличается.