copy – Копирование файлов на удаленные места
Краткое описание
- Модуль
copyкопирует файл с локального или удалённого компьютера на удалённое место. - Для копирования файлов с удалённых мест на локальный компьютер используйте модуль fetch.
- Если вам необходима интерполяция переменных в копируемых файлах, используйте модуль template. Использование переменной в поле
contentприведёт к непредсказуемым результатам. - Для целевых систем Windows используйте модуль win_copy.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| attributes строка | Атрибуты, которые должны иметь результирующий файл или директория. Чтобы получить поддерживаемые флаги, обратитесь к странице руководства для chattr на целевой системе. Эта строка должна содержать атрибуты в том же порядке, что и при отображении lsattr. Оператор = предполагается по умолчанию, в противном случае необходимо включить операторы + или - в строку.псевдонимы: attr | |
| backup логическое значение |
| Создать резервную копию файла, включая информацию о времени создания, чтобы вы могли вернуть исходный файл в случае его неправильного изменения. |
| checksum строка добавлен в 2.5 | Контрольная сумма SHA1 копируемого файла. Используется для проверки успешного копирования файла. Если это значение не задано, Ansible использует вычисленную локальную контрольную сумму файла src. | |
| content строка | При использовании вместо src, непосредственно задаёт содержимое файла указанным значением.Работает только когда dest — это файл. Создаёт файл, если он не существует.Для расширенного форматирования или если content содержит переменную, используйте модуль template. | |
| decrypt логическое значение добавлен в 2.4 |
| Этот параметр управляет автоматическим расшифрованием исходных файлов с помощью vault. |
| dest путь / обязательно | Удаленный абсолютный путь, куда должен быть скопирован файл. Если src — это директория, то и это значение должно быть директорией.Если dest — это несуществующий путь, и dest заканчивается на "/" или src — это директория, то dest будет создана.Если dest — это относительный путь, то начальная директория определяется на удалённом хосте. Если src и dest — файлы, то родительская директория dest не создаётся, и задача завершается неудачно, если она не существует. | |
| directory_mode сырое значение | При рекурсивном копировании устанавливает режим для директорий. Если это значение не задано, будут использоваться системные значения по умолчанию. Режим устанавливается только для вновь созданных директорий и не влияет на существующие. | |
| follow логическое значение |
| Этот флаг указывает, что ссылки в файловой системе в пункте назначения, если они существуют, должны быть пройдены. |
| force логическое значение |
| Влияет на то, должен ли удалённый файл всегда заменяться. Если yes, удалённый файл будет заменён, если содержимое отличается от исходного.Если no, файл будет скопирован только если файл назначения не существует.Псевдоним thirsty устарел и будет удалён в версии 2.13.псевдонимы: thirsty |
| group строка | Имя группы, которая должна владеть файлом/директорией, как если бы это было передано в chown. | |
| local_follow логическое значение добавлен в 2.4 |
| Этот флаг указывает, что ссылки в файловой системе исходного дерева, если они существуют, должны быть пройдены. |
| mode путь | Разрешения целевого файла или директории. Для тех, кто знаком с /usr/bin/chmod, помните, что режимы фактически являются восьмеричными числами. Вы должны либо добавить ведущий ноль, чтобы парсер Ansible YAML понял, что это восьмеричное число (например, 0644 или 01777), либо заключить его в кавычки (например, '644' или '1777'), чтобы Ansible получил строку и выполнил собственное преобразование из строки в число. Передача Ansible чисел без выполнения одного из этих правил приведёт к десятичному числу, что может привести к непредвиденным результатам.Начиная с Ansible 1.8, режим может быть задан как символический режим (например, u+rwx или u=rw,g=r,o=r).Начиная с Ansible 2.3, режим может также быть специальной строкой preserve.
preserve означает, что файлу будут заданы те же права, что и исходному файлу. | |
| owner строка | Имя пользователя, который должен владеть файлом/директорией, как если бы это было передано в chown. | |
| remote_src логическое значение |
| Влияет на необходимость передачи src или его наличия на удалённом сервере.Если no, будет выполняться поиск src на исходной/главной машине.Если yes, будет выполняться поиск src на удалённом/целевом сервере.remote_src поддерживает рекурсивное копирование с версии 2.8.remote_src работает только с mode=preserve с версии 2.6. |
| selevel строка | По умолчанию: "s0" | Часть контекста файла SELinux. Это атрибут MLS/MCS, иногда известный как range. Если установлено _default, будет использоваться часть политики level, если она доступна. |
| serole строка | Часть контекста файла SELinux. Если установлено _default, будет использоваться часть политики role, если она доступна. | |
| setype строка | Часть контекста файла SELinux. Если установлено _default, будет использоваться часть политики type, если она доступна. | |
| seuser строка | Часть контекста файла SELinux. По умолчанию используется политика system, где это применимо.Если установлено _default, будет использоваться часть политики user, если она доступна. | |
| src путь | Локальный путь к файлу для копирования на удалённый сервер. Может быть абсолютным или относительным. Если путь — это директория, она копируется рекурсивно. В этом случае, если путь заканчивается на "/", будут скопированы только файлы внутри этой директории. В противном случае, если путь не заканчивается на "/", будет скопирована сама директория со всеми содержимым. Это поведение аналогично команде rsync. | |
| unsafe_writes логическое значение |
| Влияет на то, когда использовать атомарную операцию для предотвращения повреждения данных или несогласованных чтений из целевого файла. По умолчанию этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованных чтений из целевых файлов, но иногда системы настроены или просто неисправны так, что это не возможно. Одним из примеров являются смонтированные файлы docker, которые не могут быть обновлены атомарно изнутри контейнера и могут быть записаны только небезопасным способом. Этот параметр позволяет Ansible перейти к небезопасным методам обновления файлов, когда атомарные операции не удаются (однако он не заставляет Ansible выполнять небезопасные записи). ВАЖНО! Небезопасные записи подвержены проблемам гонок и могут привести к повреждению данных. |
| validate строка | Команда проверки, которая должна быть выполнена перед копированием. Путь к файлу, подлежащему проверке, передаётся через '%s', который должен присутствовать, как в примерах ниже. Команда передаётся безопасно, поэтому такие возможности оболочки, как расширение и конвейеры, не будут работать. |
Примечания
Примечание
- Модуль copy не масштабируется для большого количества файлов (> сотни).
См. также
См. также
- assemble – Сборка файлов конфигурации из фрагментов
- Официальная документация по модулю assemble.
- fetch – Загрузка файлов с удалённых узлов
- Официальная документация по модулю fetch.
- file – Управление файлами и свойствами файлов
- Официальная документация по модулю file.
- synchronize – Обёртка вокруг rsync для ускорения выполнения задач в playbooks
- Официальная документация по модулю synchronize.
- template – Шаблонизация файла на удалённом сервере
- Официальная документация по модулю template.
- win_copy – Копирование файлов на удалённые расположения на Windows-хостах
- Официальная документация по модулю win_copy.
Примеры
- name: Copy file with owner and permissions
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
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
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
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
copy:
src: /mine/sudoers
dest: /etc/sudoers
validate: /usr/sbin/visudo -csf %s
- name: Copy a "sudoers" file on the remote machine for editing
copy:
src: /etc/sudoers
dest: /etc/sudoers.edit
remote_src: yes
validate: /usr/sbin/visudo -csf %s
- name: Copy using inline content
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
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
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 строка | при успехе | Состояние целевого объекта после выполнения Пример: file |
| uid целое число | при успехе | Идентификатор владельца файла после выполнения Пример: 100 |
Статус
- Этот модуль гарантирует обратную совместимость с будущими изменениями интерфейса. [stableinterface]
- Этот модуль поддерживается командой разработчиков Ansible. [core]
Поддержка Red Hat
Дополнительную информацию о поддержке этого модуля компанией Red Hat можно найти в этой статье базы знаний Red Hat.
Авторы
- Команда разработчиков Ansible
- Michael DeHaan
Подсказка
Если вы обнаружите какие-либо проблемы в этой документации, вы можете отредактировать этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.9/modules/copy_module.html