Spec-Zone.ru › Ansible 2.6

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

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

  • Обзор
  • Параметры
  • Примечания
  • Примеры
  • Статус
  • Техническое обслуживание
    • Поддержка
    • Автор

Обзор

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

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
archive
bool
    Варианты:
  • no
  • yes ←
Отражает флаг rsync archive, включает рекурсивный, ссылки, разрешения, время, владельца, группу и флаги -D.
checksum
bool

(добавлен в 1.6)
    Варианты:
  • no ←
  • yes
Пропуск на основе контрольной суммы вместо mod-time и размера; обратите внимание, что опция "archive" по-прежнему включена по умолчанию — опция "checksum" её не отключит.
compress
bool

(добавлен в 1.7)
    Варианты:
  • no
  • yes ←
Сжимать данные файла во время передачи. В большинстве случаев оставляйте это включённым, если это не вызывает проблем.
copy_links
bool
    Варианты:
  • no ←
  • yes
Копировать символические ссылки как элемент, на который они ссылаются (ссылка), а не символическую ссылку.
delete
bool
    Варианты:
  • 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
bool
    Варианты:
  • no ←
  • yes
Передавать каталоги без рекурсии
existing_only
bool

(добавлен в 1.5)
    Варианты:
  • no ←
  • yes
Пропустить создание новых файлов на приемнике.
group
bool
    Варианты:
  • no
  • yes
Значение по умолчанию:
"значение опции archive"
Сохранить группу
link_dest
(добавлен в 2.5)
Значение по умолчанию:
null
Добавить пункт назначения для жёсткой ссылки во время rsync.
links
bool
    Варианты:
  • no
  • yes
Значение по умолчанию:
"значение опции archive"
Копировать символические ссылки как символические ссылки.
mode
    Варианты:
  • pull
  • push ←
Укажите направление синхронизации. В режиме push локальный хост или делегат является источником; в режиме pull удалённый хост в контексте является источником.
owner
bool
    Варианты:
  • no
  • yes
Значение по умолчанию:
"значение опции archive"
Сохранить владельца (только для суперпользователя)
partial
bool

(добавлен в 2.0)
    Варианты:
  • no ←
  • yes
Указывает rsync сохранить частичный файл, что должно значительно ускорить последующую передачу остальной части файла.
perms
bool
    Варианты:
  • no
  • yes
Значение по умолчанию:
"значение опции archive"
Сохранить разрешения.
private_key
(добавлен в 1.6)
Укажите закрытый ключ для использования в SSH-базируемых подключениях rsync (например, ~/.ssh/id_rsa)
recursive
bool
    Варианты:
  • no
  • yes
Значение по умолчанию:
"значение опции archive"
Рекурсивно входить в каталоги.
rsync_opts
(добавлен в 1.6)
Значение по умолчанию:
null
Укажите дополнительные параметры rsync, передав массив.
rsync_path
Укажите команду rsync, которая будет запущена на удалённом хосте. Смотрите --rsync-path в справке rsync.
rsync_timeout Значение по умолчанию:
0
Укажите --timeout для команды rsync в секундах.
set_remote_user Значение по умолчанию:
"yes"
Добавлять user@ к удалённым путям. Если у вас есть настройка ssh для определения удалённого пользователя для хоста, которая не соответствует пользователю в инвентаризации, вы должны установить этот параметр в "no".
src
обязательно
Путь на хосте источника, который будет синхронизироваться с путём назначения; путь может быть абсолютным или относительным.
times
bool
    Варианты:
  • no
  • yes
Значение по умолчанию:
"значение опции archive"
Сохранить время изменения
use_ssh_args
bool

(добавлен в 2.0)
    Варианты:
  • no ←
  • yes
Использовать заданные ssh_args в ansible.cfg
verify_host
bool

(добавлен в 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/

Статус

Этот модуль помечен как превью, что означает, что его интерфейс не гарантируется обратной совместимостью.

Техническое обслуживание

Этот модуль помечен как ядерный, что означает, что он поддерживается Командой ядра Ansible. Дополнительную информацию см. в разделе Техническое обслуживание и поддержка модулей.

Список других модулей, поддерживаемых Командой ядра Ansible, см. в разделе здесь.

Поддержка

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

Spec-Zone.ru

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