Spec-Zone.ru › Ansible 2.4

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

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

  • Описание
  • Параметры
  • Примеры
  • Примечания
    • Статус
    • Информация о техническом обслуживании

Описание

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

Параметры

параметр обязательно по умолчанию значения комментарии
archive
нет да
  • да
  • нет
Отражает флаг rsync archive, включает рекурсивный, ссылки, разрешения, время, владельца, группу флаги и -D.
checksum
(добавлено в 1.6)
нет нет
  • да
  • нет
Пропуск на основе контрольной суммы вместо времени изменения и размера; Обратите внимание, что параметр «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
  • да
  • нет
Сохранить группу
links
нет значение параметра archive
  • да
  • нет
Копировать символические ссылки как символические ссылки.
mode
нет push
  • push
  • pull
Укажите направление синхронизации. В режиме push локальный или делегированный хост является источником; в режиме pull удалённый хост в контексте является источником.
owner
нет значение параметра archive
  • да
  • нет
Сохранить владельца (только для суперпользователей)
partial
(добавлено в 2.0)
нет
Указывает rsync сохранить частичный файл, что значительно ускорит последующую передачу остальной части файла.
perms
нет значение параметра archive
  • да
  • нет
Сохранить разрешения.
recursive
нет значение параметра archive
  • да
  • нет
Рекурсивно просматривать каталоги.
rsync_opts
(добавлено в 1.6)
нет
Укажите дополнительные параметры rsync, передав массив.
rsync_path
нет
Укажите команду rsync для выполнения на удалённом хосте. См. --rsync-path в справке rsync.
rsync_timeout
нет
Укажите --timeout для команды rsync во секундах.
set_remote_user
нет True
Добавить user@ к удалённым путям. Если у вас есть пользовательская конфигурация ssh для определения удалённого пользователя для хоста, которая не соответствует пользователю инвентаризации, вы должны установить этот параметр в «нет».
src
да
Путь на исходном хосте, который будет синхронизирован с местом назначения; путь может быть абсолютным или относительным.
times
нет значение параметра archive
  • да
  • нет
Сохранить время изменения
use_ssh_args
(добавлено в 2.0)
нет нет
  • да
  • нет
Использовать указанные в ansible.cfg параметры ssh_args
verify_host
(добавлено в 2.0)
нет
Проверять ключ хоста назначения.

Примеры

# Synchronization of src on the control machine to dest on the remote hosts
- synchronize:
    src: some/relative/path
    dest: /some/absolute/path

# Synchronization using rsync protocol (push)
- synchronize:
    src: some/relative/path/
    dest: rsync://somehost.com/path/

# Synchronization using rsync protocol (pull)
- synchronize:
    mode: pull
    src: rsync://somehost.com/path/
    dest: /some/absolute/path/

# Synchronization using rsync protocol on delegate host (push)
- synchronize:
    src: /some/absolute/path/
    dest: rsync://somehost.com/path/
  delegate_to: delegate.host

# Synchronization using rsync protocol on delegate host (pull)
- synchronize:
    mode: pull
    src: rsync://somehost.com/path/
    dest: /some/absolute/path/
  delegate_to: delegate.host

# Synchronization without any --archive options enabled
- synchronize:
    src: some/relative/path
    dest: /some/absolute/path
    archive: no

# Synchronization with --archive options enabled except for --recursive
- synchronize:
    src: some/relative/path
    dest: /some/absolute/path
    recursive: no

# 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

# Synchronization without --archive options enabled except use --links
- synchronize:
    src: some/relative/path
    dest: /some/absolute/path
    archive: no
    links: yes

# Synchronization of two paths both on the control machine
- synchronize:
    src: some/relative/path
    dest: /some/absolute/path
  delegate_to: localhost

# 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

# 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

# Synchronize two directories on one remote host.
- synchronize:
    src: /first/absolute/path
    dest: /second/absolute/path
  delegate_to: "{{ inventory_hostname }}"

# 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

# Synchronize using an alternate rsync command
# This specific command is granted su privileges on the destination
- 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

# Synchronize passing in extra rsync options
- synchronize:
    src: /tmp/helloworld
    dest: /var/www/helloworld
    rsync_opts:
      - "--no-motd"
      - "--exclude=.git"

Примечания

Примечание

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

Статус

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

Информация о техническом обслуживании

Для получения дополнительной информации о поддержке этого модуля компанией Red Hat обратитесь к этому knowledge base article<https://access.redhat.com/articles/rhel-top-support-policies>

Для получения помощи в разработке модулей, если вы захотите, ознакомьтесь со статьёй Информация о сообществе и внесение вклада, Тестирование Ansible и Разработка модулей.

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.4/synchronize_module.html

Spec-Zone.ru

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