fetch#
Модуль ansible.builtin.fetch загружает файлы с управляемых узлов на управляющий.
Для копирования файлов в обратном направлении, с управляющего узла на управляемые, используйте модуль ansible.builtin.copy.
Особенности работы#
Особенности использования модуля ansible.builtin.fetch:
Для хранения загруженных файлов модуль создает структуру каталогов, используя названия узлов согласно описанию инвентаря.
Если файл, указанный в
dest, уже существует и отличается отsrc, он будет перезаписан.Модуль может работать с узлами под управлением ОС Windows.
При запуске с параметром
becomeдля получения содержимого файла и определения его контрольной суммы используется модуль ansible.builtin.slurp. Это удваивает объем передаваемых по сети данных. Также, в зависимости от размера файла, это может привести к исчерпанию памяти, доступной на управляющем или управляемом узле, тем самым приводя к трудноуловимым ошибкам. По указанным причинам рекомендуется использовать модульansible.builtin.fetchбезbecome.Для отслеживания ошибок чтения файлов на управляемых узлах используйте
fail_whenилиignore_errors. Чтобы добиться успешного выполнения задачи даже при ошибках чтения, укажите для параметраfail_on_missingзначениеtrue.
Параметры#
Модуль принимает следующие параметры:
- dest#
Обязательный параметр.
Путь к каталогу для загрузки файлов. По умолчанию формируется по следующей схеме:
<dest>/<hostname>/<src>
Здесь:
<dest> – значение параметра
dest;<hostname> – название узла в описании инвентаря;
<src> – значение параметра
src.
Например, пусть задача описана следующим образом:
--- - name: Download sshd_config ansible.builtin.fetch: src: /etc/ssh/sshd_config dest: /backup/ssh_config
Файл
sshd_configс узлаnode.example.comбудет загружен в/backup/ssh_config/node.example.com/etc/ssh/sshd_config.
- fail_on_missing#
Поведение модуля при невозможности прочитать указанный в
srcфайл на управляемом узле.Возможные значения:
false– игнорировать ошибку;true– завершить задачу с ошибкой.
Значение по умолчанию:
true.
- flat#
Упрощение структуры каталогов при загрузке файлов.
Возможные значения:
false– путь формируется так, как указано в описании параметраdest.true– если значениеdestоканчивается на/, файл сохраняется в указанный каталог без создания подкаталогов с названием узла и пути к файлу на управляемом узле.Это значение может быть полезно в следующих случаях:
задача работает только с одним узлом;
названия файлов на управляемых узлах уникальны.
Важно
Если названия файлов на управляемых узлах одинаковы, модуль загрузит их в одно и то же расположение. Таким образом, в каталоге будет только один файл, а его содержимое будет соответствовать содержимому файла на том узле, который был обработан последним.
Значение по умолчанию:
false.
- src#
Обязательный параметр.
Путь к файлу на управляемом узле.
- validate_checksum#
Проверка контрольной суммы файла после загрузки.
Возможные значения:
false– без проверки контрольной суммы;true– проверка контрольной суммы.
Значение по умолчанию:
true.
Атрибуты#
Атрибуты определяют функции Ansible, которые может использовать модуль.
Атрибут |
Описание |
|---|---|
|
Модуль имеет соответствующее расширение действия (action plugin), которое выполняет работу на управляющем узле. |
|
Модуль не поддерживает асинхронное выполнение. |
|
Модуль не поддерживает глобальное выполнение задачи.
Условия срабатывают при использовании |
|
Модуль работает в режиме проверки ( |
|
Модуль поддерживает режим сравнения ( |
|
Модуль поддерживает POSIX-совместимые ОС и ОС Windows. |
|
Модуль не использует строгие механизмы Ansible для работы с файлами чтобы обеспечить правильные разрешения и предотвратить повреждение данных. |
|
Модуль не поддерживает автоматическую расшифровку исходных файлов с использованием хранилища секретов. |
Примеры#
Для изучения возможностей модуля ознакомьтесь с приведенными ниже примерами.
Во всех примерах используется следующий инвентарь:
inventory.yml#---
all:
hosts:
node1.example.com:
node2.example.com:
node3.example.com:
Загрузка файлов в указанный каталог#
Следующий пример демонстрирует загрузку файлов /var/log/apt.log по пути /var/log/<hostname>/var/log/apt.log:
---
- name: Make default directory structure and download files
ansible.builtin.fetch:
src: /var/log/apt.log
dest: /var/log/
Структура файлов и каталогов, созданная в результате выполнения задачи:
Загрузка файлов под уникальными названиями#
Следующий пример демонстрирует загрузку файлов /var/log/apt.log в уникальные каталоги с плоской структурой:
---
- name: Download files to different directories
ansible.builtin.fetch:
src: /var/log/apt.log
dest: /var/log-{{ inventory_hostname }}
flat: true
Структура файлов и каталогов, созданная в результате выполнения задачи:
Игнорирование ошибок#
Следующий пример демонстрирует загрузку файлов с игнорированием ошибок. Даже если на управляемом узле не будет существовать или не будет доступен для чтения указанный файл, задача будет считаться выполненной успешно:
---
- name: Rewrite one file many times
ansible.builtin.fetch:
src: /etc/apt/apt.d/proxy
dest: /backup/apt/
fail_on_missing: false