synchronize - Обёртка вокруг rsync для ускорения и упрощения выполнения стандартных задач в ваших playbooks.
Новая версия 1.4.
Описание
-
synchronize— это обёртка вокруг rsync, которая ускоряет и упрощает выполнение стандартных задач в ваших playbooks. Она запускается и выполняется на локальном хосте, где выполняется Ansible. Конечно, вы можете просто использовать действиеcommand, чтобы самостоятельно вызвать rsync, но вам также придётся добавить значительное количество стандартных опций и фактов о хосте.synchronizeне предназначен для предоставления доступа ко всем возможностям rsync, но он делает самые распространённые вызовы проще в реализации. В зависимости от вашего случая, вамstillможет потребоваться вызвать rsync напрямую черезcommandилиshell.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| archive |
| Отражает флаг rsync archive, включает флаги recursive, links, perms, times, owner, group и -D. |
| checksum (добавлено в 1.6) |
| Пропуск на основе контрольной суммы вместо mod-time и размера; Обратите внимание, что опция «archive» по-прежнему включена по умолчанию — опция «checksum» её не отключит. |
| compress (добавлено в 1.7) |
| Сжатие данных файла во время передачи. В большинстве случаев оставьте это включённым, если это не вызывает проблем. |
| copy_links |
| Копирование символических ссылок как того элемента, на который они ссылаются (ссылка), а не самой символической ссылки. |
| delete |
| Удаление файлов в dest, которых нет (после передачи, а не до) в пути src. Эта опция требует recursive=yes. |
| dest обязательно | Путь на хосте назначения, который будет синхронизирован с исходником; путь может быть абсолютным или относительным. | |
| dest_port (добавлено в 1.5) | По умолчанию: Значение ansible_ssh_port для этого хоста, параметр конфигурации remote_port или значение из конфигурации ssh-клиента, если ни один из них не задан | Номер порта для ssh на хосте назначения. До версии ansible 2.0 переменная инвентаризации ansible_ssh_port имела приоритет над этим значением. |
| dirs |
| Передача каталогов без рекурсии |
| existing_only (добавлено в 1.5) |
| Пропуск создания новых файлов на приёмнике. |
| group |
значение параметра archive | Сохранение группы |
| link_dest (добавлено в 2.5) | По умолчанию: Нет | добавление пункта назначения для жёсткой ссылки при синхронизации. |
| links |
значение параметра archive | Копирование символических ссылок как символических ссылок. |
| mode |
| Укажите направление синхронизации. В режиме push локальный или делегированный хост является источником; в режиме pull хост в контексте удалённого хоста является источником. |
| owner |
значение параметра archive | Сохранение владельца (только для суперпользователя) |
| partial (добавлено в 2.0) |
| Указывает rsync на сохранение частичного файла, что должно значительно ускорить последующую передачу оставшейся части файла. |
| perms |
значение параметра archive | Сохранение разрешений. |
| private_key (добавлено в 1.6) | Укажите приватный ключ для использования в SSH-соединениях rsync (например, ~/.ssh/id_rsa) | |
| recursive |
значение параметра archive | Рекурсивно входить в каталоги. |
| rsync_opts (добавлено в 1.6) | По умолчанию: Нет | Укажите дополнительные параметры rsync, передав массив. |
| rsync_path | Укажите команду rsync для выполнения на удалённом хосте. См. --rsync-path в справке по rsync. | |
| rsync_timeout | По умолчанию: 0 | Укажите --timeout для команды rsync в секундах. |
| set_remote_user | По умолчанию: yes | Добавляет user@ к удалённым путям. Если у вас есть настройка ssh, определяющая удалённого пользователя для хоста, которая не соответствует пользователю в инвентаризации, вы должны установить этот параметр в «no». |
| src обязательно | Путь на исходном хосте, который будет синхронизирован с пунктом назначения; путь может быть абсолютным или относительным. | |
| times |
значение параметра archive | Сохранение времен метки изменения |
| use_ssh_args (добавлено в 2.0) |
| Использовать указанные в ansible.cfg параметры ssh_args |
| verify_host (добавлено в 2.0) |
| Проверка ключа хоста назначения. |
Примечания
Примечание
- rsync должен быть установлен как на локальном, так и на удалённом хосте.
- Для модуля
synchronize«локальный хост» — это хостthe synchronize task originates on, а «хост назначения» — хостsynchronize is connecting to. - «Локальный хост» может быть изменён на другой хост с помощью
delegate_to. Это позволяет копировать данные между двумя удалёнными хостами или полностью на одном удалённом компьютере. - Пользователь и разрешения для модуля synchronize
src— это пользователь, запускающий задачу Ansible на локальном хосте (или удалённый пользователь для хоста delegate_to, если используется delegate_to). - Пользователь и разрешения для модуля synchronize
dest— это пользовательremote_userна хосте назначения илиbecome_user, еслиbecome=yesактивен. - В версии 2.0.0.0 в модуле synchronize была ошибка, из-за которой происходило выполнение become на «локальном хосте». Эта ошибка была исправлена в версии 2.0.1.
- В настоящее время модуль synchronize ограничен повышением прав с помощью беспарольного sudo. Это связано с тем, что сам rsync подключается к удалённой машине, а rsync не предоставляет нам способ передачи данных аутентификации sudo.
- В настоящее время поддерживаются только несколько типов соединений, которые поддерживают synchronize (ssh, paramiko, локальный и docker), так как для этих типов соединений определена стратегия синхронизации. Обратите внимание, что соединение для них не должно требовать пароля, так как rsync сам устанавливает соединение, а rsync не предоставляет нам способ передачи пароля в соединение.
- Ожидайте, что dest=~/x будет ~<remote_user>/x даже при использовании sudo.
- Проверьте вывод в подробном режиме, чтобы убедиться, что пользователь назначения, хост и путь — это то, что ожидалось.
- Для исключения файлов и каталогов из синхронизации вы можете добавить файлы
.rsync-filterв исходный каталог. - Демон rsync должен быть запущен и иметь правильные разрешения при использовании протокола rsync в исходном или целевом пути.
- Модуль
synchronizeпринудительно применяет–delay-updatesдля предотвращения оставления пункта назначения в неработоспособном промежуточном состоянии, если процесс rsync обнаруживает ошибку. Те, кто синхронизирует большое количество файлов и готовы пожертвовать безопасностью ради производительности, должны вызвать rsync напрямую. - Пункт назначения link_destination подчиняется тем же ограничениям, что и базовый демон rsync. Жёсткие ссылки сохраняются только в том случае, если относительные поддеревья источника и назначения одинаковы. Попытки создать жёсткую ссылку в каталоге, который является подкаталогом источника, будут предотвращены.
Примеры
- name: Synchronization of src on the control machine to dest on the remote hosts
synchronize:
src: some/relative/path
dest: /some/absolute/path
- name: Synchronization using rsync protocol (push)
synchronize:
src: some/relative/path/
dest: rsync://somehost.com/path/
- name: Synchronization using rsync protocol (pull)
synchronize:
mode: pull
src: rsync://somehost.com/path/
dest: /some/absolute/path/
- name: Synchronization using rsync protocol on delegate host (push)
synchronize:
src: /some/absolute/path/
dest: rsync://somehost.com/path/
delegate_to: delegate.host
- name: Synchronization using rsync protocol on delegate host (pull)
synchronize:
mode: pull
src: rsync://somehost.com/path/
dest: /some/absolute/path/
delegate_to: delegate.host
- name: Synchronization without any --archive options enabled
synchronize:
src: some/relative/path
dest: /some/absolute/path
archive: no
- name: Synchronization with --archive options enabled except for --recursive
synchronize:
src: some/relative/path
dest: /some/absolute/path
recursive: no
- name: Synchronization with --archive options enabled except for --times, with --checksum option enabled
synchronize:
src: some/relative/path
dest: /some/absolute/path
checksum: yes
times: no
- name: Synchronization without --archive options enabled except use --links
synchronize:
src: some/relative/path
dest: /some/absolute/path
archive: no
links: yes
- name: Synchronization of two paths both on the control machine
synchronize:
src: some/relative/path
dest: /some/absolute/path
delegate_to: localhost
- name: Synchronization of src on the inventory host to the dest on the localhost in pull mode
synchronize:
mode: pull
src: some/relative/path
dest: /some/absolute/path
- name: Synchronization of src on delegate host to dest on the current inventory host.
synchronize:
src: /first/absolute/path
dest: /second/absolute/path
delegate_to: delegate.host
- name: Synchronize two directories on one remote host.
synchronize:
src: /first/absolute/path
dest: /second/absolute/path
delegate_to: "{{ inventory_hostname }}"
- name: Synchronize and delete files in dest on the remote host that are not found in src of localhost.
synchronize:
src: some/relative/path
dest: /some/absolute/path
delete: yes
recursive: yes
# This specific command is granted su privileges on the destination
- name: Synchronize using an alternate rsync command
synchronize:
src: some/relative/path
dest: /some/absolute/path
rsync_path: "su -c rsync"
# Example .rsync-filter file in the source directory
# - var # exclude any path whose last part is 'var'
# - /var # exclude any path starting with 'var' starting at the source directory
# + /var/conf # include /var/conf even though it was previously excluded
- name: Synchronize passing in extra rsync options
synchronize:
src: /tmp/helloworld
dest: /var/www/helloworld
rsync_opts:
- "--no-motd"
- "--exclude=.git"
# Hardlink files if they didn't change
- name: Use hardlinks when synchronizing filesystems
synchronize:
src: /tmp/path_a/foo.txt
dest: /tmp/path_b/foo.txt
link_dest: /tmp/path_a/
Статус
Этот модуль помечен как превью, что означает, что он не гарантирует обратную совместимость интерфейса.
Поддержка
Для получения дополнительной информации о поддержке этого модуля Red Hat, пожалуйста, обратитесь к этой статье базы знаний
Автор
- Timothy Appnel (@tima)
Подсказка
Если вы заметите какие-либо проблемы в этом документе, вы можете отредактировать этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.5/modules/synchronize_module.html