Spec-Zone.ru › Ansible 2.7

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

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

  • Описание
  • Параметры
  • Примечания
  • Примеры
  • Статус

Описание

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

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
archive
логический
    Варианты:
  • no
  • yes ←
Отражает флаг rsync archive, включает рекурсивный поиск, ссылки, разрешения, время, владельца, группу и флаг -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
По умолчанию:
null
Добавить целевой путь для жёсткой ссылки во время rsync.
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
По умолчанию:
null
Укажите дополнительные параметры rsync, передав массив.
rsync_path
-
Укажите команду rsync для запуска на удалённом хосте. См. --rsync-path в справке rsync.
Чтобы указать команду rsync для запуска на локальном хосте, вам нужно задать переменную вашей задачи ansible_rsync_path.
rsync_timeout
-
По умолчанию:
0
Укажите --timeout для команды rsync в секундах.
set_remote_user
-
По умолчанию:
«yes»
Добавить user@ для удалённых путей. Если у вас есть настройка SSH для определения удалённого пользователя для хоста, которая не совпадает с пользователем инвентаризации, вы должны установить этот параметр в «no».
src
- / обязательно
Путь на исходном хосте, который будет синхронизирован с целевым; Путь может быть абсолютным или относительным.
times
логический
    Варианты:
  • no
  • yes
По умолчанию:
«значение опции archive»
Сохранить время изменения
use_ssh_args
логический
добавлено в 2.0
    Варианты:
  • no ←
  • yes
Использовать параметры ssh_args, указанные в ansible.cfg
verify_host
логический
добавлено в 2.0
    Варианты:
  • no ←
  • yes
Проверить ключ целевого хоста.

Примечания

Примечание

  • rsync должен быть установлен как на локальном, так и на удалённом хосте.
  • Для модуля synchronize, «локальный хост» — это хост the synchronize task originates on, а «хост назначения» — это хост synchronize is connecting to.
  • «Локальный хост» можно изменить на другой хост, используя delegate_to. Это позволяет копировать данные между двумя удалёнными хостами или полностью на одном удалённом компьютере.
  • Пользователь и права для синхронизации src соответствуют пользователю, выполняющему задание Ansible на локальном хосте (или remote_user для хоста delegate_to, если используется delegate_to).
  • Пользователь и права для синхронизации dest соответствуют пользователю remote_user на хосте назначения или become_user, если become=yes активен.
  • В версии 2.0.0.0 в модуле synchronize произошла ошибка на «локальном хосте». Эта ошибка была исправлена в 2.0.1.
  • В настоящее время synchronize ограничен повышением прав через беспарольный sudo. Это связано с тем, что сам rsync подключается к удалённому компьютеру, и rsync не предоставляет способ передачи данных для sudo.
  • В настоящее время существует лишь несколько типов подключений, которые поддерживают synchronize (ssh, paramiko, local и 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/

# Specify the rsync binary to use on remote host and on local host
- hosts: groupofhosts
  vars:
        ansible_rsync_path: "/usr/gnu/bin/rsync"

  tasks:
    - name: copy /tmp/localpath/ to remote location /tmp/remotepath
      synchronize:
        src: "/tmp/localpath/"
        dest: "/tmp/remotepath"
        rsync_path: "/usr/gnu/bin/rsync"

Статус

  • Этот модуль не гарантирует обратную совместимость интерфейса. [превью]
  • Этот модуль поддерживается командой Ansible Core. [ядро]

Поддержка Red Hat

Дополнительную информацию о поддержке данного модуля Red Hat можно найти в этой статье базы знаний 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.7/modules/synchronize_module.html

Spec-Zone.ru

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