ansible.builtin.copy – Копирование файлов на удалённые узлы
Примечание
Этот модуль входит в состав ansible-base и включен во все установки Ansible. В большинстве случаев вы можете использовать короткое имя модуля copy, даже не указывая ключевое слово collections:. Тем не менее, рекомендуется использовать полное имя класса (FQCN) для лёгкой ссылки на документацию модуля и для избежания конфликтов с другими коллекциями, которые могут иметь то же имя модуля.
Обзор
- Модуль
copyкопирует файл с локального или удалённого компьютера на удалённый компьютер. - Для копирования файлов с удалённых узлов на локальный компьютер используйте модуль ansible.builtin.fetch.
- Если вам необходима интерполяция переменных в копируемых файлах, используйте модуль ansible.builtin.template. Использование переменной в поле
contentприведёт к непредсказуемым результатам. - Для целевых узлов Windows используйте модуль ansible.windows.win_copy.
Примечание
У этого модуля есть соответствующий плагин действий.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| attributes строка добавлен в 2.3 в ansible.builtin | Атрибуты, которые должны иметь результирующий файл или директория. Для получения поддерживаемых флагов обратитесь к странице руководства для chattr на целевой системе. Эта строка должна содержать атрибуты в том же порядке, что и отображается командой lsattr. Оператор = предполагается по умолчанию, в противном случае операторы + или - должны быть включены в строку.псевдонимы: attr | |
| backup логический добавлен в 0.7 в ansible.builtin |
| Создать резервную копию файла, включая информацию о времени, чтобы вы могли восстановить исходный файл в случае неправильного перезаписи. |
| checksum строка добавлен в 2.5 в ansible.builtin | Контрольная сумма SHA1 копируемого файла. Используется для проверки успешного копирования файла. Если это значение не указано, Ansible будет использовать локальную вычисленную контрольную сумму файла src. | |
| content строка добавлен в 1.1 в ansible.builtin | Когда используется вместо src, задаёт содержимое файла непосредственно указанным значением.Работает только когда dest является файлом. Создаёт файл, если он не существует.Для форматирования или если content содержит переменную, используйте модуль ansible.builtin.template. | |
| decrypt логический добавлен в 2.4 в ansible.builtin |
| Этот параметр управляет автоматическим расшифрованием исходных файлов с помощью vault. |
| dest путь / обязательно | Удаленный абсолютный путь, куда нужно скопировать файл. Если src является директорией, то это тоже должна быть директория.Если dest - несуществующий путь, и если dest заканчивается на "/" или src - это директория, то dest будет создана.Если dest - относительный путь, начальная директория определяется удалённым хостом. Если src и dest являются файлами, родительская директория dest не создаётся, и задача завершится неудачей, если она не существует. | |
| directory_mode сырой добавлен в 1.5 в ansible.builtin | При рекурсивном копировании устанавливает режим для директорий. Если это не задано, будут использоваться системные значения по умолчанию. Режим устанавливается только для вновь созданных директорий и не повлияет на те, которые уже существовали. | |
| follow логический добавлен в 1.8 в ansible.builtin |
| Этот флаг указывает, что системные ссылки в пункте назначения, если они существуют, должны быть прослежены. |
| force логический добавлен в 1.1 в ansible.builtin |
| Влияет на то, должен ли удалённый файл всегда заменяться. Если yes, удалённый файл будет заменён, если содержимое отличается от исходного.Если no, файл будет скопирован только в случае, если пункт назначения не существует.Псевдоним thirsty устарел и будет удалён в версии 2.13.псевдонимы: thirsty |
| group строка | Имя группы, которой должен принадлежать файл/директория, как это будет передано команде chown. | |
| local_follow логический добавлен в 2.4 в ansible.builtin |
| Этот флаг указывает, что системные ссылки в исходном дереве, если они существуют, должны быть прослежены. |
| mode сырой | Разрешения целевого файла или директории. Для тех, кто привык к /usr/bin/chmod, помните, что режимы фактически являются восьмеричными числами. Вы должны либо добавить ведущую нуль, чтобы Ansible знал, что это восьмеричное число (например, 0644 или 01777), либо заключить его в кавычки (например, '644' или '1777'), чтобы Ansible получил строку и выполнил своё преобразование из строки в число. Если вы передадите Ansible число без одного из этих правил, оно будет интерпретировано как десятичное число, что приведёт к неожиданным результатам.Начиная с Ansible 1.8, режим может быть указан в символическом формате (например, u+rwx или u=rw,g=r,o=r).Начиная с Ansible 2.3, режим также может быть специальной строкой preserve.preserve означает, что файлу будут заданы те же разрешения, что и исходному файлу.При рекурсивном копировании также см. directory_mode.Если mode не задано и целевой файл не существует, будет использоваться системное значение по умолчанию umask при установке режима для вновь созданного файла.Если mode не задано и целевой файл существует, будет использован режим существующего файла.Указание mode - лучший способ гарантировать, что файлы создаются с правильными разрешениями. См. CVE-2020-1736 для получения дополнительных сведений. | |
| owner строка | Имя пользователя, которому должен принадлежать файл/директория, как это будет передано команде chown. | |
| remote_src логический добавлен в 2.0 в ansible.builtin |
| Влияет на то, нужно ли передавать src или он уже существует удаленно.Если no, Ansible будет искать src на контроллере.Если yes, Ansible будет искать src на управляемом (удаленном) узле.remote_src поддерживает рекурсивное копирование начиная с версии 2.8.remote_src работает только с mode=preserve начиная с версии 2.6.Автоматическое расшифрование файлов не работает, когда remote_src=yes. |
| selevel строка | Часть уровня SELinux контекста файла. Это атрибут MLS/MCS, иногда известный как range.Когда установлено значение _default, будет использоваться часть политики level, если она доступна. | |
| serole строка | Часть роли SELinux контекста файла. Если установлено значение _default, будет использоваться часть политики role, если она доступна. | |
| setype строка | Часть типа SELinux контекста файла. Если установлено значение _default, будет использоваться часть политики type, если она доступна. | |
| seuser строка | Часть пользователя SELinux контекста файла. По умолчанию используется политика system, где это применимо.Если установлено значение _default, будет использоваться часть политики user, если она доступна. | |
| src путь | Локальный путь к файлу, который нужно скопировать на удаленный сервер. Может быть абсолютным или относительным. Если путь является директорией, она копируется рекурсивно. В этом случае, если путь заканчивается на "/", копируются только файлы внутри этой директории. В противном случае, если путь не заканчивается на "/", копируется сама директория со всем содержимым. Это поведение аналогично инструменту командной строки rsync. | |
| unsafe_writes логический добавлен в 2.2 в ansible.builtin |
| Влияет на то, когда использовать атомарную операцию для предотвращения повреждения данных или несогласованных чтений из целевого файла. По умолчанию этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованных чтений из целевых файлов, но иногда системы настроены или просто сломаны так, что это невозможно. Один пример - это файлы, смонтированные в Docker, которые не могут быть обновлены атомарно внутри контейнера и могут быть записаны только небезопасным способом. Этот параметр позволяет Ansible переходить к небезопасным методам обновления файлов, когда атомарные операции завершаются неудачно (хотя он не принуждает Ansible выполнять небезопасные записи). ВАЖНО! Небезопасные записи подвержены гонкам и могут привести к повреждению данных. |
| validate строка | Команда валидации, которую нужно выполнить перед копированием. Путь к файлу для проверки передаётся через '%s', который должен быть присутствовать, как в примерах ниже. Команда передаётся безопасно, поэтому такие функции оболочки, как расширение и конвейеры, не будут работать. |
Примечания
Примечание
- Модуль ansible.builtin.copy не масштабируется при большом количестве файлов (> сотен).
- Поддерживает
check_mode.
См. также
См. также
- ansible.builtin.assemble
-
Официальная документация по модулю ansible.builtin.assemble.
- ansible.builtin.fetch
-
Официальная документация по модулю ansible.builtin.fetch.
- ansible.builtin.file
-
Официальная документация по модулю ansible.builtin.file.
- ansible.builtin.template
-
Официальная документация по модулю ansible.builtin.template.
- ansible.posix.synchronize
-
Официальная документация по модулю ansible.posix.synchronize.
- ansible.windows.win_copy
-
Официальная документация по модулю ansible.windows.win_copy.
Примеры
- name: Copy file with owner and permissions
ansible.builtin.copy:
src: /srv/myfiles/foo.conf
dest: /etc/foo.conf
owner: foo
group: foo
mode: '0644'
- name: Copy file with owner and permission, using symbolic representation
ansible.builtin.copy:
src: /srv/myfiles/foo.conf
dest: /etc/foo.conf
owner: foo
group: foo
mode: u=rw,g=r,o=r
- name: Another symbolic mode example, adding some permissions and removing others
ansible.builtin.copy:
src: /srv/myfiles/foo.conf
dest: /etc/foo.conf
owner: foo
group: foo
mode: u+rw,g-wx,o-rwx
- name: Copy a new "ntp.conf" file into place, backing up the original if it differs from the copied version
ansible.builtin.copy:
src: /mine/ntp.conf
dest: /etc/ntp.conf
owner: root
group: root
mode: '0644'
backup: yes
- name: Copy a new "sudoers" file into place, after passing validation with visudo
ansible.builtin.copy:
src: /mine/sudoers
dest: /etc/sudoers
validate: /usr/sbin/visudo -csf %s
- name: Copy a "sudoers" file on the remote machine for editing
ansible.builtin.copy:
src: /etc/sudoers
dest: /etc/sudoers.edit
remote_src: yes
validate: /usr/sbin/visudo -csf %s
- name: Copy using inline content
ansible.builtin.copy:
content: '# This file was moved to /etc/other.conf'
dest: /etc/mine.conf
- name: If follow=yes, /path/to/file will be overwritten by contents of foo.conf
ansible.builtin.copy:
src: /etc/foo.conf
dest: /path/to/link # link to /path/to/file
follow: yes
- name: If follow=no, /path/to/link will become a file and be overwritten by contents of foo.conf
ansible.builtin.copy:
src: /etc/foo.conf
dest: /path/to/link # link to /path/to/file
follow: no
Значения возврата
Общие значения возврата описаны здесь, следующие поля уникальны для данного модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| backup_file строка | изменённое и если backup=yes | Имя созданного резервной копии файла. Пример: /path/to/file.txt.2015-02-12@22:09~ |
| checksum строка | успех | SHA1 контрольная сумма файла после выполнения копирования. Пример: 6e642bb8dd5c2e027bf21dd923337cbb4214f827 |
| dest строка | успех | Файл/путь назначения. Пример: /path/to/file.txt |
| gid целое число | успех | Идентификатор группы файла после выполнения. Пример: 100 |
| group строка | успех | Группа файла после выполнения. Пример: httpd |
| md5sum строка | если поддерживается | MD5 контрольная сумма файла после выполнения копирования. Пример: 2a5aeecc61dc98c4d780b14b330e3282 |
| mode строка | успех | Разрешения целевого объекта после выполнения. Пример: 420 |
| owner строка | успех | Владелец файла после выполнения. Пример: httpd |
| size целое число | успех | Размер целевого объекта после выполнения. Пример: 1220 |
| src строка | изменённое | Исходный файл, используемый для копирования на целевом компьютере. Пример: /home/httpd/.ansible/tmp/ansible-tmp-1423796390.97-147729857856000/source |
| state строка | успех | Состояние целевого объекта после выполнения. Пример: файл |
| uid целое число | успех | Идентификатор владельца файла после выполнения. Пример: 100 |
Авторы
- Команда разработчиков Ansible
- Майкл ДеХан
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/ansible/builtin/copy_module.html