Как переписать файл в 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

Может быть, просто добавить задачу удаления перед задачей копирования?

Он будет отменен только в том случае, если содержимое обоих файлов отличается.

Другие вопросы по тегам