Spec-Zone.ru › Ansible 2.5

synchronize - Обёртка вокруг rsync для ускорения и упрощения выполнения стандартных задач в ваших playbooks.

Новая версия 1.4.

  • Описание
  • Параметры
  • Примечания
  • Примеры
  • Статус
    • Поддержка
    • Автор

Описание

  • synchronize — это обёртка вокруг rsync, которая ускоряет и упрощает выполнение стандартных задач в ваших playbooks. Она запускается и выполняется на локальном хосте, где выполняется Ansible. Конечно, вы можете просто использовать действие command, чтобы самостоятельно вызвать rsync, но вам также придётся добавить значительное количество стандартных опций и фактов о хосте. synchronize не предназначен для предоставления доступа ко всем возможностям rsync, но он делает самые распространённые вызовы проще в реализации. В зависимости от вашего случая, вам still может потребоваться вызвать rsync напрямую через command или shell.

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
archive
    Варианты:
  • no
  • yes ←
Отражает флаг rsync archive, включает флаги recursive, links, perms, times, owner, group и -D.
checksum
(добавлено в 1.6)
    Варианты:
  • no ←
  • yes
Пропуск на основе контрольной суммы вместо mod-time и размера; Обратите внимание, что опция «archive» по-прежнему включена по умолчанию — опция «checksum» её не отключит.
compress
(добавлено в 1.7)
    Варианты:
  • no
  • yes ←
Сжатие данных файла во время передачи. В большинстве случаев оставьте это включённым, если это не вызывает проблем.
copy_links
    Варианты:
  • no ←
  • yes
Копирование символических ссылок как того элемента, на который они ссылаются (ссылка), а не самой символической ссылки.
delete
    Варианты:
  • no ←
  • yes
Удаление файлов в dest, которых нет (после передачи, а не до) в пути src. Эта опция требует recursive=yes.
dest
обязательно
Путь на хосте назначения, который будет синхронизирован с исходником; путь может быть абсолютным или относительным.
dest_port
(добавлено в 1.5)
По умолчанию:
Значение ansible_ssh_port для этого хоста, параметр конфигурации remote_port или значение из конфигурации ssh-клиента, если ни один из них не задан
Номер порта для ssh на хосте назначения. До версии ansible 2.0 переменная инвентаризации ansible_ssh_port имела приоритет над этим значением.
dirs
    Варианты:
  • no ←
  • yes
Передача каталогов без рекурсии
existing_only
(добавлено в 1.5)
    Варианты:
  • no ←
  • yes
Пропуск создания новых файлов на приёмнике.
group
    Варианты:
  • no
  • yes
По умолчанию:
значение параметра archive
Сохранение группы
link_dest
(добавлено в 2.5)
По умолчанию:
Нет
добавление пункта назначения для жёсткой ссылки при синхронизации.
links
    Варианты:
  • no
  • yes
По умолчанию:
значение параметра archive
Копирование символических ссылок как символических ссылок.
mode
    Варианты:
  • pull
  • push ←
Укажите направление синхронизации. В режиме push локальный или делегированный хост является источником; в режиме pull хост в контексте удалённого хоста является источником.
owner
    Варианты:
  • no
  • yes
По умолчанию:
значение параметра archive
Сохранение владельца (только для суперпользователя)
partial
(добавлено в 2.0)
    Варианты:
  • no ←
  • yes
Указывает rsync на сохранение частичного файла, что должно значительно ускорить последующую передачу оставшейся части файла.
perms
    Варианты:
  • no
  • yes
По умолчанию:
значение параметра archive
Сохранение разрешений.
private_key
(добавлено в 1.6)
Укажите приватный ключ для использования в SSH-соединениях rsync (например, ~/.ssh/id_rsa)
recursive
    Варианты:
  • no
  • yes
По умолчанию:
значение параметра 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
    Варианты:
  • no
  • yes
По умолчанию:
значение параметра archive
Сохранение времен метки изменения
use_ssh_args
(добавлено в 2.0)
    Варианты:
  • no ←
  • yes
Использовать указанные в ansible.cfg параметры ssh_args
verify_host
(добавлено в 2.0)
    Варианты:
  • no ←
  • yes
Проверка ключа хоста назначения.

Примечания

Примечание

  • 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API