Ansible - Как заархивировать файлы на локальном хосте перед копированием на удаленный - PullRequest
1 голос
/ 08 мая 2020

Я пытаюсь скопировать большие наборы файлов (по сотням) на свой удаленный сервер. Однако при использовании команды «копировать» эта задача занимает довольно много времени. Немного поискав, я понял, что «синхронизация» подходит для этого. К сожалению, на моих текущих удаленных серверах нет rsyn c, поэтому я также не могу использовать опцию «синхронизировать».

В качестве обходного пути я хотел заархивировать папку в ansible host, а затем передать его на удаленный сервер с помощью модуля unarchive.

- name: Archive the folder
  shell: zip <dest-zip-path> <path-to-folder>
  delegate_to: localhost

Однако при этом я получаю следующую ошибку: "module_stderr": "sudo: требуется пароль \ n "

Есть ли более простой способ заархивировать папку локально на хосте ansible перед переносом?

Ответы [ 2 ]

1 голос
/ 09 мая 2020

На основании решения, опубликованного Zeitounator, это был код Ansible, который я использовал для решения проблемы:

- name: Archive the files
  archive:
    path: <path-to-folder>
    dest: <dest-zip-path>
    format: zip
  delegate_to: localhost
  become: false
1 голос
/ 09 мая 2020

Вероятно, вы используете become: true в своей игре. Это также применимо при делегировании на localhost. Но для этого требуется пароль на вашем локальном компьютере.

Поскольку вам это, вероятно, не нужно, просто примените become: false к этой конкретной задаче c. В противном случае вам нужно будет настроить повышение привилегий на localhost или предоставить become_password.

Более того, вам следует рассмотреть возможность использования модуля archive вместо использования оболочки.

...