Spec-Zone.ru › Ansible 2.10

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

Примечание

Этот плагин входит в коллекцию ansible.posix (версия 1.1.1).

Для установки используйте: ansible-galaxy collection install ansible.posix.

Для использования в задаче Ansible укажите: ansible.posix.synchronize.

Новое в версии 1.0.0: из ansible.posix

  • Обзор
  • Параметры
  • Примечания
  • См. также
  • Примеры

Обзор

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

Примечание

Этот модуль имеет соответствующий плагин действий.

Параметры

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

См. также

См. также

copy

Официальная документация модуля copy.

community.windows.win_robocopy

Официальная документация модуля community.windows.win_robocopy.

Примеры

- name: Synchronization of src on the control machine to dest on the remote hosts
  ansible.posix.synchronize:
    src: some/relative/path
    dest: /some/absolute/path

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

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

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

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

- name: Synchronization without any --archive options enabled
  ansible.posix.synchronize:
    src: some/relative/path
    dest: /some/absolute/path
    archive: no

- name: Synchronization with --archive options enabled except for --recursive
  ansible.posix.synchronize:
    src: some/relative/path
    dest: /some/absolute/path
    recursive: no

- name: Synchronization with --archive options enabled except for --times, with --checksum option enabled
  ansible.posix.synchronize:
    src: some/relative/path
    dest: /some/absolute/path
    checksum: yes
    times: no

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

- name: Synchronization of two paths both on the control machine
  ansible.posix.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
  ansible.posix.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.
  ansible.posix.synchronize:
    src: /first/absolute/path
    dest: /second/absolute/path
  delegate_to: delegate.host

- name: Synchronize two directories on one remote host.
  ansible.posix.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.
  ansible.posix.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
  ansible.posix.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
  ansible.posix.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
  ansible.posix.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
      ansible.posix.synchronize:
        src: /tmp/localpath/
        dest: /tmp/remotepath
        rsync_path: /usr/gnu/bin/rsync

Авторы

  • 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.10/collections/ansible/posix/synchronize_module.html

Spec-Zone.ru

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